abacom hat geschrieben:@RHH:
Woher kann denn ProfiLab wissen, dass es z.B. ein Feld wie "Name", "PLZ" , "Messwert", "Uhrzeit", (...)
in der Datenbank überhaupt gibt oder gar welches Format(Typ) das Feld hat?
Die gleiche Frage stellt sich für die Tabellen in der Datenbank. Woher die Strukturinfo der Datenbank nehmen?
Hallo noch mal,
also in der Regel sieht das so aus, dass wenn Messwerte in eine DB geschrieben werden sollen, diese klare Vorgaben hat (also in einer DB wird einem ein Platz zugewiesen). So ist auch immer bekannt wo, in welchen Format, die Daten geschrieben werden sollen. Dies ist Voraussetzung und muß nicht von PL identifiziert werden. Alternativ kann es natürlich auch sein, dass eine DB angelegt bzw. erstellt wird. Dann habe ich natürlich selbst die Möglichkeit die erforderlichen Parameter festzulegen.
Wie bereits in meinen Beispielen VB6 und VBA/Excel aufgezeigt, läuft das genau so.
Es werden folgende Informationen benötigt bzw. übergeben
• Pfad und Name der Datenbank (nur bei Access DB)
• Name der Tabelle in der die Daten geschrieben werden sollen
• Pfad und Name der Quelle (MWR-Datei von PL oder man übergibt die Messwerte direkt in das Programm bzw. das Modul für die Datenübertragung)
• Namen der Spalten in welche die Messwerte übergeben werden sollen
• Die Messwerte selbst (evtl. Optional von 1-9)
Zum Format würde ich mit keine großen Gedanken machen, da es sich immer um Zahlenwerte handelt bietet sich hier „Double“ oder auch „String“ an, da man aus String i.d.r. in jeder Software bequem in Zahlenwerte zurück konvertieren kann. (Das macht z. B. weniger Probleme mit Datum- und Zeitwerten)
Diese Parameter sind ganz klar vorgegeben und müssen von dem „Ersteller der Datenbank“ beachtet, bzw. vorgegeben werden. Die Datenrichtung ist auch eindeutig, also nur „Schreiben eines neuen Datensatzes“ denn warum soll ein Messwerterfassungsprogramm aus der DB lesen müssen.
Das Blockschaltbild in der Anlage verdeutlicht das Ganze noch mal.
Würde man ein Modul für z.B. MySQL erstellen, wäre das Ganze noch ein bisschen einfacher. Hier muß der OBBC – Treiber auf dem Rechner installiert und eingerichtet sein. Ist dies der Fall, dann sind viele relevante Parameter schon gegeben. Eingerichtet wird dies unter „Verwaltung >> Datenquellen >> und z.B. MySQL51 Connector“ …siehe mein Bild in der Anlage.
Hier müsste dann nur noch die Tabelle angegeben werden und der Messwert selbst. Das Format würde ich auch wie im o. g. Beispiel auf Double oder String beschränken. Etwas anderes muß nicht sein. Die Befehle sind SQL – Standard wie z. B. db.AddNew für neue Datenzeile, oder db.Update für Speichern usw., usw. Andere Befehle wie Sortieren, Nächster Datensatz, Erster Datensatz, Letzter Datensatz, Löschen, usw., usw., braucht man in dem Fall nicht.
Ein Modul für in „Access Schreiben“ und ein Modul für in „MySQL Schreiben“ bis zu maximal 1-9 Werte müsste eigentlich für PL total ausreichend sein. Lesen, Löschen oder Ändern ist meiner Meinung nach für ein Messwerterfassungstool unnötig.
Exakt wie hier beschrieben habe ich im vorhergehenden Beitrag dies für Access und MWR-Dateien in VB6 und VBA/Excel (mit Einsicht in den Quellcode >> Excel und „Alt“ & „F11“) realisiert. Die Beispiele sind funktionell und können von jedem getestet werden. Möchte man im VBA/Excel – Beispiel in eine MySQL Datenbank schreiben, ist lediglich die Zeile,
adoc.Open "provider=Microsoft.jet.oledb.4.0;data source=" & Datenbank
z.B. durch,
Set adoc = New ADODB.Connection
adoc.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=" & mysql_Server & "; DATABASE=data; UID=" & mysql_user & ";PWD=" & mysql_PW & "; OPTION=3"
und am Schluß ein
Set adoc = Nothing
zu ersetzen (unverbindlich, da nicht getestet). Die Variablen “mysql_Server”, “mysql_user” und “mysql_PW” sollten natürlich gesetzt werden. (Name Datenbank, Name und Passwort). Werden diese nicht gegeben, geht, so glaube ich noch zu wissen, automatisch der Dialog von MySQL-Connector auf.
Ich gebe zu, Datenbank & Co ist ein reisen Thema für sich. Hier in die Tiefe einzusteigen benötigt viel Zeit und Engagement. Wer sich dafür interessiert bzw. diese Funktionalität benötigt muß sich mit den o. g. Themen befassen. Dies ist sicherlich nicht die Aufgabe von PL. Die Funktion, auf einfachste Weise in eine DB zu schreiben, ist, so glaube ich, nicht so ein großer Aufwand (wenn man mal den Dreh raus hat). Dies sollte aber trotzdem nur eine Anregung sein und ein Feedback auf die Fragestellung von „Weisskarsten“ (obwohl er sich nun offensichtlich nicht mehr dafür interessiert). Entscheiden muß das die Fa. Abacom ob man hier aktiv werden möchte und ob es einen Markt dafür gibt.
Ich werde auf jeden Fall den Weg über einen Exe-Aufruf von meinem VB6 Progrämmchen umsetzen, da ich mehrere messtechnische Versuche mit PL am Laufen habe und bei uns in der Firma alle Maschinendaten und Parameter zentral in eine DB geschrieben werden.