procedure load_functions(obID: string); begin TableFunction.setStringParam('OB_ID', obID); //Der Tabelle die Objekt ID als Parameter übergeben //message_dlg(systemdbfull+'NET_NS_FUNKTION'); //Hier wird jetzt der voll qualifizierte Name auf die Tabelle in der System Datenbank übergeben TableFunction.setstringparamnoquot('SYSTEM_FUNCTION_TABLE', systemdbfull+'dbo.NET_NS_FUNKTION'); TableFunction.readdata; GridFunction.setFocus; end;
Mit dieser SQL Anweisung holen wir uns jede Ausstattung , die den Prozess 3, also Prüfungen hat und die eine bestimte Funktion zugeordnet hat wie z.B. Feuerlöscher Warter. Dann wird anhand der bestehenden Wartung die nächste Wartung ermittelt DECLARE @OB_ID AS varchar(36) DECLARE @prozessNummer AS integer DECLARE @funktionNr AS integer DECLARE @filter_on AS integer SET @OB_ID = :OB_ID SET @funktionNr = :FU_NUMMER SET @prozessNummer = $GLOBAL_AUSSTATTUNG_PROZESS_PRUEFUNG SET @filter_on = :FILTER_ON zum Testen der Anweisung SET @OB_ID = '72157940-BF3D-4222-B784-655EFE12F0E1' SET @funktionNr = 11653 SET @prozessNummer = 2 Holen wir uns die zugeordnete Ausstattung SELECT az.*, Diese Unterabfrage berechnet die nächste fällige Wartung für die aktuelle Ausstattung ( SELECT ISNULL(DATEADD(month, intervall.IVP_INTERVALL, MAX(IDP_DATUM)), intervall.IVP_ERSTE_FAELLIGE_PRUEFUNG) FROM NET_INTERVALL_PRUEFUNG intervall LEFT OUTER JOIN NET_INTERVALL_DETAIL_PRUEFUNG intd ON (intd.AZ_ID = az.AZ_ID) WHERE intervall.AZ_ID = az.AZ_ID GROUP BY intervall.IVP_INTERVALL, intervall.IVP_ERSTE_FAELLIGE_PRUEFUNG ) AS NAECHSTE_PRUEFUNG FROM NET_AUSSTATTUNG_ZU az Verbinden wir uns mit der Ausstattung aus der System DB INNER JOIN NETFRAME_SYSTEM.netFrameDev.dbo.NET_AUSSTATTUNG ast ON (az.AU_ID = ast.AU_ID) Verbindung wegen dem Prozess INNER JOIN NETFRAME_SYSTEM.netFrameDev.dbo.NET_AUSSTATTUNG_FUNK_ZU afp ON (afp.AU_ID = ast.AU_ID) INNER JOIN NETFRAME_SYSTEM.netFrameDev.dbo.NET_PROZESS prz ON (afp.PZ_ID = prz.PZ_ID AND prz.PZ_NUMMER = @prozessNummer) Verbindung wegen der Funktion INNER JOIN NETFRAME_SYSTEM.netFrameDev.dbo.NET_AUSSTATTUNG_FUNK_ZU aff ON (aff.AU_ID = ast.AU_ID) Einschränken auf die Funktionsnummer, sonst bekommen wir für jede zugeorndete Funktion bei der Ausstasttung einen Datensatz Jedes Objekt wird nach seiner Funktion geplegt. INNER JOIN NETFRAME_SYSTEM.netFrameDev.dbo.NET_NS_FUNKTION fuk ON (aff.FU_ID = fuk.FU_ID AND fuk.FU_NUMMER = @funktionNr) Mit dieser Beziehung wird jetzt noch überprüft ob auch die Funktion den betreffenden Prozess zugeordnet hat. Nur dann Kann der Prozess gewartet werden. INNER JOIN NETFRAME_SYSTEM.netFrameDev.dbo.NET_PROZESS_FUNK_ZU pfz ON (pfz.FU_ID = fuk.FU_ID) INNER JOIN NETFRAME_SYSTEM.netFrameDev.dbo.NET_PROZESS prz2 ON (pfz.PZ_ID = prz2.PZ_ID AND prz2.PZ_NUMMER = @prozessNummer) -------------- -------------- WHERE az.OB_ID = @OB_ID Nur Ausstattung vom Objekt holen AND az.EH_ID IS NULL AND (@filter_on = 0 OR AZ_INAKTIV = 0) ORDER BY NAECHSTE_PRUEFUNG