Beim Planaufbau unter QGIS kann es zu einer Fehlermeldung „Exception Message: Invalid data source in layer []“ kommen. In der Regel taucht diese Fehlermeldung unter der Nutzung einer Karte für die Darstellung einer Zustandsbewertung nach ISYBAU oder DWA auf in welchem sich normalerweise ein Parameter für die Auswahl eines Auftrages befindet. Wird beim Planaufbau kein Parameter ausgewählt, dann wird von jedem Objekt der jüngste/neueste Auftrag dargestellt.
Sollten in der BaSYS Datenbank mehrere Aufträge mit gleichem Datum vorhanden sein, so kann es vorkommen, dass ein Stammobjekt mehr als einem dieser Aufträge zugeordnet ist. So entstehen beim Planaufbau unter QGIS mehrere Stammdaten-Features mit gleicher GID und dies resultiert in der oben genannten Fehlermeldung.
Wenn die Aufträge so von ihren Daten her korrekt sind und unverändert bleiben sollen, dann muss der jeweilige Ausdruck in den Layervorlagen im Modell geändert werden. Um beim Planaufbau nicht in diesen Fehler zu laufen, kann die Unterabfrage um ein weiteres „Max()“ erweitert werden. Damit würde bei mehr als einem Objekt, das Objekt mit der größeren ID in der Datenbank genommen werden.
In den Standard-Modellen die mit BaSYS ausgeliefert werden finden sich derzeit folgende Unterabfragen für die Layervorlagen zur Darstellung von Zustandsklassen und Zustandstexten nach ISYBAU und/oder DWA. Im Anschluss werden die angepassten OPath Ausdrücke gezeigt, mit denen der Fehler nicht mehr auftauchen sollte.
Für Haltungen und Leitungen:
Leitungsinspektionen[IIF(ISNULL($Auftrag), IIF(Datum > DatumVonOben, Datum, DatumVonOben)=MAX(^.Leitungsinspektionen.IIF(Datum > DatumVonOben, Datum, DatumVonOben)), IdRefAuftrag=$Auftrag)]
Um den Fehler nicht zu erhalten sollte folgender Ausdruck gewählt werden:
Leitungsinspektionen[Id=Max(
!.Leitungsinspektionen[IIF(ISNULL($Auftrag), IIF(Date > DateVonOben, Date, DateVonOben)=MAX(!.Leitungsinspektionen.IIF(Date > DateVonOben, Date, DateVonOben)), IdRefAuftrag=$Auftrag)].Id)]
Für Schächte:
Knoteninspektionen[IIF(ISNULL($Auftrag), Datum=MAX(^.Knoteninspektionen.Datum), IdRefAuftrag=$Auftrag)]
Um den Fehler nicht zu erhalten sollte folgender Ausdruck gewählt werden:
Knoteninspektionen[Id=Max(!.Knoteninspektionen[IIF(ISNULL($Auftrag), Date=MAX(!.Knoteninspektionen.Date), IdRefAuftrag=$Auftrag)].Id)]