Printable Version of Topic

Click here to view this topic in its original format

IBB Forum _ ADO-Toolkit _ Versionsproblem bei ADOTool_Insert Data.vi

Posted by: ChristophE 24. Jul 2013, 15:25

Hallo,
ich habe mit LabView 2012 ein Programm entwickelt dass mit Hilfe von ADOTool Daten in eine mySQL Datenbank schreibt. Funktioniert wunderbar!
Allerdings muss das Programm auch auf LabView 8.5 ausführbar sein. Dabei macht das ADOTool_Insert Data Probleme.
Ich erhalte folgende Fehlermeldung:

Exception occured in Microsoft OLE DB Provider for ODBC Drivers: [MySQL][ODBC 5.2(w) Driver][mysqld-5.5.31-0ubuntu0.12.04.2]Column count doesn't match value count at row 1 in ADOTool_ADO API.vi->ADOTool_Insert Data.vi->Stringbox_UI.vi

Ich habe es mit ADO-Tool 1.7.1 und ADO-Tool 1.7.0.b versucht.
Als ODBC Treibe hab ich sowohl ODBC 5.2 ANSI Driver alsauch ODBC 5.2 Unicode Driver versucht

Woran könnte es liegen?

Posted by: CB 28. Jul 2013, 08:47

QUOTE (ChristophE @ 24. Jul 2013, 16:25) *
Exception occured in Microsoft OLE DB Provider for ODBC Drivers: [MySQL][ODBC 5.2(w) Driver][mysqld-5.5.31-0ubuntu0.12.04.2]Column count doesn't match value count at row 1 in ADOTool_ADO API.vi->ADOTool_Insert Data.vi->Stringbox_UI.vi
[...]
Woran könnte es liegen?


das liegt an dem gesendeten SQL-Query. Es handelt sich vermutlich um ein Insert oder ein Update-Statement und die Fehlermeldung besagt, dass die Anzahl der zu ändernden/einzufügenden Spalten nicht der Anzahl der übergebenen Werte entspricht.

Diese Fehlermeldung kann unter anderem auch dadurch entstehen, in dem man den lokalen Dezimalpunkt verwendet und Fließkommazahlen einfügen will. Wenn man dann nicht mit "%.;" im Format-to-String explizit angibt dass der Punkt als Dezimaltrennzeichen verwendet werden soll, dann interpretiert der Treiber die Zahl 16,923 als 2 Spalten mit den Integer-Werten 16 und 923 und meldet einen Fehler.

Beispiel:

INSERT INTO test (wert) VALUES (16,923) für zu dem oben erläuterten Fehler weil nur eine Spalte angegeben ist, der Parser die Zahl in dem Form "16,923" aber als 2 Werte interpretiert.

richtig wäre

INSERT INTO test (wert) VALUES (16.923)

Posted by: ChristophE 30. Jul 2013, 13:42

Vielen Dank für die Hilfe! thumbup.gif

Das Problem war, dass ich einmal als Dezimaltrennzeichen das Komma und einmal den Punkt verwendet habe.
ADO Tool bzw. mySQL benötigt einen Punkt als Dezimaltrennzeichen!


Lösung:
Systemsteuerung -> Region und Sprache -> Formate -> Weitere Einstellungen -> Zahlen: Dezimaltrennzeichen: .
LabView -> Werkzeuge -> Optionen -> Front Panel: Lokales Dezimalzeichen verwenden

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)