SQL Datenbank Anbindung an den Supervisor 1 by
SQL Datenbank Anbindung an den Supervisor 1 by Thorsten Zisler
Installieren und einstellen von My. Sql 2 by Thorsten Zisler
Installieren und einstellen von My. Sql 3 by Thorsten Zisler
Datenbank und Schnittstelle erstellen 4 by Thorsten Zisler
Einstellung am Supervisor Die Einstellung erfolgt analog zu einer Access Datenbank, nur wählt man hier die dsn Datei aus, die man vorher erstellt hat. Auswahl der Datenquelle Auswahl der dsn Datei. Sie sollte im Ordner C: ProgrammeGemeinsame DateienODBCData Sources stehen. Bei der Erstellung der Datei kann man diesen Ordner angeben. Nach diesen Einstellungen kann man sich zur Datenbank verbinden (SQL Server muß laufen). 5 by Thorsten Zisler
Lesen und navigieren in der Datenbank 6 Befehl Beschreibung DBOpen( „DB Name" ) DBClose( „DB Name" ) DBProperty->BOF DBProperty->EOF DBProperty->Current Record DBProperty->Record count DBProperty->Current page DBProperty->Page count DBProperty->Page size DBProperty->Field count DBStatus->Open DBStatus->Close ohne Einschränkung wird nicht true wenn die Datenbank am Anfang steht ohne Einschränkung zeigt immer einen Satz weiter an als der mit Read angezeigte ohne Einschränkung gibt die Nummer des tatsächlich angezeigten Eintrags wieder wie Record count ? zeigt immer 0 obwohl die Datenbank 13 Felder hat ohne Einschränkung ist immer true auch wenn die Datenbank offen ist DBMove->First DBMove->Last DBMove->Next. Page DBMove->Privious. Page DBMove->Position ohne Einschränkung springt immer 2 Sätze weiter Rückgabewert funktioniert richtig Rückgabewert ist 0 obwohl die Funktion richtig ausgeführt wurde keine Reaktion springt auch zum nächsten Satz wie Next Rückgabe auch immer 0 DBRead ohne Einschränkung by Thorsten Zisler
Datensätze bearbeiten in der Datenbank 7 Befehl Beschreibung DBDelete( „DB Name" ) es wird der Datensatz gelöscht der mit Current Record angezeigt wird. Beispiel angezeigt wird Satz 2 und gelöscht wird aber Satz 3 DBWrite hat dasselbe Problem es wird der nächste Satz geändert, nicht der angezeigte DBAdd. New ohne Einschränkung DBUpdate nur nach einem Datensatz anhängen DBExecute->Requery ohne Einschränkung DBExcute->SQL es können SQL Kommandos an die Datenbank geschickt werden, für das ändern von Datensätzen sehr sinnvoll. Siehe nächste Folie by Thorsten Zisler
Datensätze bearbeiten mit SQL Kommandos Supervisor Script: comand. SQL = "UPDATE tabelle 1 SET Zähler_1 = " Wert = Value. To. Text(Count_1_SQL) Einen Supervisor int Punkt in Text wandeln und dem Kommando hinzufügen. comand. SQL = comand. SQL + Wert comand. SQL = comand. SQL + " WHERE Position = 0" SQL Befehl um den Wert in jeden Datensatz indem die Spalte Position auf 0 ist einzutragen. b. Result = DBExecute( "Verbindung_SQL_dsn", "SQL", comand. SQL ) SQL Befehl mit der Methode Execute an die Datenbank schicken. IF !b. Result THEN Status_SQL = DBGet. Last. Error( "Verbindung_SQL_dsn", TRUE ) ENDIF 8 SQL Befehl um in der Tabelle 1 in der Spalte Zähler den Wert zu verändern. SET by Thorsten Zisler Ist der Rückgabewert = 0 dann letzten Fehler abfragen.
Datenaustausch zwischen 2 Supervisor Applikationen mit der SQL Datenbank Struktur der SQL Datenbank Spalte Anlage gibt an aus welcher Anlage die Daten kommen. Ein Datensatz ist immer einer Anlage zugeordnet. Spalte aktiv gibt an ob die Anlage Daten übermittelt ( eventuell ob sie vorhanden ist) und damit die Daten aktuell sind 9 by Thorsten Zisler
Benötigte Punkt Typ E/A Typ Arraygröße Anlage_aktiv cmd. SQL Daten_Anlage 1 Daten_Anlage 2 Daten_Anlage 3 Daten_Anlage 4 DB_Anlage_aktiv 1 DB_Anlage_aktiv 2 DB_Anlage_aktiv 3 DB_Anlage_aktiv 4 DB_Daten_Anlage 1 DB_Daten_Anlage 2 DB_Daten_Anlage 3 DB_Daten_Anlage 4 DB_Daten 1 DB_Daten 2 DB_Daten 3 DB_Daten 4 DB_Daten 5 DB_Daten 6 DB_Daten 7 loop 1 Punktezeiger s. Error_DB s. Wert Boolean Text Integer Integer Boolean Boolean Integer Integer Integer Text Speicher Speicher Speicher Speicher Speicher Speicher Speicher 10 1 9 9 9 9 1 1 1 1 10 Aus / Ein [FALSE] 0 to 99999999 [0] 0 to 9999 [0] Aus / Ein [FALSE] Aus / Ein [FALSE] 0 to 99999999 [0] -99999999 to 99999999 [0] -99999999 to 99999999 [0] -9999 to 9999 [0] 0 to 9999 [0] by Thorsten Zisler Freigabe in die DB schreiben SQL Komando Beschreibung Beschreibung Beschreibung Beschreibung Beschreibung Beschreibung Schleifenzähler Beschreibung Fehlermeldung Daten der Wandlung Value. To. Text
Schreiben der Daten in die SQL Datenbank REM Anlage 1 IF Anlage_aktiv[0]==TRUE THEN REM Anlage 1 als aktiv melden cmd. SQL = "UPDATE tabelle 1 SET aktiv= 1 WHERE Anlage = 1" b. Result = DBExecute( "DAS_DB_Anlagen", "SQL", cmd. SQL ) IF !b. Result THEN REM Schleife um die Daten zu übertragen FOR loop 1= 1 TO 7 cmd. SQL = "UPDATE tabelle 1 SET " s. Error_DB = DBGet. Last. Error( "DAS_DB_Anlagen", TRUE ) ENDIF s. Wert = Value. To. Text(loop 1) cmd. SQL = cmd. SQL + "Daten" + s. Wert + "= " s. Wert = Value. To. Text(Daten_Anlage 1[loop 1]) cmd. SQL = cmd. SQL + s. Wert +" WHERE Anlage = 1" b. Result = DBExecute( "DAS_DB_Anlagen", "SQL", cmd. SQL ) IF !b. Result THEN ELSE s. Error_DB = DBGet. Last. Error( "DAS_DB_Anlagen" , TRUE ) REM Anlage 1 als nicht aktiv melden cmd. SQL = "UPDATE tabelle 1 SET aktiv= 0 WHERE Anlage = 1" b. Result = DBExecute( "DAS_DB_Anlagen", "SQL", cmd. SQL ) ENDIF NEXT IF !b. Result THEN s. Error_DB = DBGet. Last. Error( "DAS_DB_Anlagen", TRUE ) ENDIF 11 by Thorsten Zisler
Lesen der Daten aus der SQL Datenbank REM Daten Anlage 1 DBMove( "DAS_DB_Anlagen. Tabelle 1", "First. Page" ) b. Result = DBRead( "DAS_DB_Anlagen. Tabelle 1" ) IF !b. Result THEN Status_SQL = DBGet. Last. Error( "DAS_DB_Anlagen", TRUE ) ENDIF DB_Anlage_aktiv 1 = DB_Anlage_aktiv IF DB_Anlage_aktiv 1 THEN FOR loop 1 =0 TO 6 int. Test = loop 1 +1 s. Wert = Value. To. Text(int. Test) Punktezeiger = "DB_Daten" + s. Wert DB_Daten_Anlage 1[loop 1] = ^Punktezeiger NEXT ENDIF 12 by Thorsten Zisler
Lesen eines Querys aus der SQL Datenbank Punkt als Array anlegen und das SQL Query dem Punkt zuweisen. Er muß nicht mit dem Index zugewiesen werden (SQL_Daten 1[0]). In der Registerkarte Datenbank eine Tabelle mit SQL Text anlegen und alle gewünschten Punkte hinzufügen. 13 by Thorsten Zisler
Lesen eines Querys aus der SQL Datenbank comand. SQL = "SELECT * FROM tabelle 1 WHERE " comand. SQL = comand. SQL + Query_Spalte + " = " text. Test = Value. To. Text(Query_Wert) comand. SQL = comand. SQL + text. Test b. Result = DBExecute( "DAS_DB_Anlagen. SQL_Text", "Source", comand. SQL ) IF !b. Result THEN Status_SQL = DBGet. Last. Error( "DAS_DB_Anlagen", TRUE ) ENDIF DBExecute( "DAS_DB_Anlagen. SQL_Text", "Requery" ) DBRead( "DAS_DB_Anlagen. SQL_Text" ) 14 by Thorsten Zisler Hier werden die Punkte angelegten Array Punkte (z. B. SQL_Daten 1) aus der Abfrage dargestellt. Hier erfolgt der Zugriff über den Index.
- Slides: 14