IPB

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
> einfacher INSERT Befehl
Gunni1979
post 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
Go to the top of the page
 
+Quote Post
CB
post 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
Go to the top of the page
 
+Quote Post
Gunni1979
post 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. blush.gif 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
Go to the top of the page
 
+Quote Post
CB
post 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
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 User(s) are reading this topic (2 Guests and 0 Anonymous Users)
0 Members:

 



Lo-Fi Version Time is now: 28.03.2024 - 09:57