einfacher INSERT Befehl |
einfacher INSERT Befehl |
14. Feb 2007, 11:32
Post
#1
|
|
Member Group: Members Posts: 68 Joined: 14.02.2007 From: Erfurt Member No.: 19 LV Version: 8.00 / 8.2 Zertifizierung: keine LV User seit: 2006 |
Mahlzeit.
Ich habe mich der Datenbank-Geschichte angenommen und wollte zur Übung einfache Programme erstellen. Um Daten zu anzuzeigen, zu ändern, einzufügen oder zu löschen hat man ja Befehle wie select, insert, update und delete. Aus den Beispielen von CB habe ich mir das wesentlichste raus kopiert. Ich habe mir eine Access-Datenbank namens messdaten.mdb angelegt mit ner Tabelle messungen. [attachment=66:messdaten.zip] Nach Start meines VIs läuft dieses eine Weile und zeigt mir dann folgenden Fehler "Exception occured in Microsoft OLE DB Provider for ODBC" (Code:-2147217900). In der Datenbank ist auch noch kein Eintrag zu finden. [attachment=65:datenbank.JPG] Ist es ein Kompatibilitätsproblem mit meiner Access 2003 Version oder ist es einfach nur ein Programmierfehler? Gunni |
|
|
14. Feb 2007, 18:57
Post
#2
|
|
proven Member Group: Administrators Posts: 315 Joined: 16.10.2006 From: Düsseldorf Member No.: 2 LV Version: current Zertifizierung: CLA LV User seit: 2001 |
die Fehlermeldung hilft mir leider nicht weiter, weil LabVIEW nichts mit den ADO-Fehlernummern anfangen kann. Die interessanten Fehler-Informationen stehen in dem Fehler-String, poste den mal bitte dann kann ich dir evtl. weiterhelfen.
Funktionieren denn die ADO-Tool Beispiele bei dir? Wenn nicht, könnte es sein, dass du noch den MDAC von Microsoft runterladen und installieren musst ... Update: ich hab den Fehler gefunden. Die Fehlermeldung lautet: QUOTE Error -2147217900 occurred at Exception occured in Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][ODBC Microsoft Access Driver] Anzahl der Abfragewerte und Zielfelder stimmt nicht überein. in ADOTool_ADO API.vi->ADOTool_Insert Data.vi->INSERT.vi Da fragt man sich natürlich erstmal, warum. Die Antwort ist relativ einfach und es ist schnell zu erkenne, wenn man sich das SQL Query anschaut, das erstellt wird: QUOTE INSERT INTO messungen (ID, deltaX, Y) VALUES (0, 10,000000, 12,000000) Das Komma ist das Spalten-Trennzeichen in SQL-Queries. Um Gleitkommazahlen zu übergeben muss man als Dezimaltrennzeichen den Punkt definieren, das macht man, in dem man ein %.; in den Format-String schreibt. Der Format-String müsste also z.B. so aussehen: QUOTE %.;INSERT INTO messungen (ID, deltaX, Y) VALUES (%d, %0.15e, %0.15e) (ich hab mir angewöhnt Gleitkommazahlen immer in Exponentialdarstellung mit min. 15 Nachkommastellen an die DB zu senden, damit vermeidet man, dass ggf. Nachkommastellen abgeschnitten werden ... -------------------- künstliche Intelligenz ist besser als natürliche Dummheit!
rotabench:rotierende Prüfstände nach dem Baukasten-Prinzip |
|
|
15. Feb 2007, 10:05
Post
#3
|
|
Member Group: Members Posts: 68 Joined: 14.02.2007 From: Erfurt Member No.: 19 LV Version: 8.00 / 8.2 Zertifizierung: keine LV User seit: 2006 |
QUOTE(CB @ 14. Feb 2007, 18:57) [snapback]98[/snapback] ... Das Komma ist das Spalten-Trennzeichen in SQL-Queries. Um Gleitkommazahlen zu übergeben muss man als Dezimaltrennzeichen den Punkt definieren, das macht man, in dem man ein %.; in den Format-String schreibt. Der Format-String müsste also z.B. so aussehen: (ich hab mir angewöhnt Gleitkommazahlen immer in Exponentialdarstellung mit min. 15 Nachkommastellen an die DB zu senden, damit vermeidet man, dass ggf. Nachkommastellen abgeschnitten werden ... Danke. %.; - darauf wäre ich alleine nie gekommen. Es gibt ja leider kein Hilfe zu dem ADO-Toolkit. Jetzt habe ich mal versucht übelst viele Werte in dei Datenbank zu schreiben indem ich die Konstante vor der FOR-Schleife im Millionenbereich gewählt hab. Es dauerte für 2,5 Mio Werte eine halbe Stunde. Kann es sein das es viel zu lange dauert um so ne DaBa für Messungen mit Abtastraten von 100kHz zu benutzen? Denn da habe ich nach 5 Min schon 30 Mio Werte. Wenn das so ist kann ich die Idee wieder verwerfen. Gunni This post has been edited by Gunni1979: 15. Feb 2007, 11:34 |
|
|
15. Feb 2007, 19:37
Post
#4
|
|
proven Member Group: Administrators Posts: 315 Joined: 16.10.2006 From: Düsseldorf Member No.: 2 LV Version: current Zertifizierung: CLA LV User seit: 2001 |
QUOTE(Gunni1979 @ 15. Feb 2007, 10:05) [snapback]99[/snapback] Es gibt ja leider kein Hilfe zu dem ADO-Toolkit. so ne halbe - in der Context-Hilfe gibt es eine Beschreibung zu jedem VI QUOTE(Gunni1979 @ 15. Feb 2007, 10:05) [snapback]99[/snapback] Kann es sein das es viel zu lange dauert um so ne DaBa für Messungen mit Abtastraten von 100kHz zu benutzen? Ja. Ich würd mal behaupten die Grenze liegt ungefähr bei 100 Inserts pro Sekunde (und dann ist der Rechner damit auch ausgelastet ...) Wenn du die Daten mit 100 kHz aufzeichen willst bleibt dir eigentlich nur "Streaming to Disk" -------------------- künstliche Intelligenz ist besser als natürliche Dummheit!
rotabench:rotierende Prüfstände nach dem Baukasten-Prinzip |
|
|
Lo-Fi Version | Time is now: 22.07.2024 - 22:09 |