Printable Version of Topic

Click here to view this topic in its original format

IBB Forum _ ADO-Toolkit _ Fehler bei Einfügen in Excel DB (INSERT INTO)

Posted by: Ulli-Macky 07. Jul 2010, 09:45

Hallo Leute,
bin neu hier im Forum und wollte erst mal folgendes loswerden:
"Lob und Anerkennung" für das ADO-Toolkit und den Support. worshippy.gif Hat mir schon einige Male weiter geholfen.

Habe aber auch noch ein Problem mit "Einfügen in eine Excel Datenbank". In Anlehnung an das ado-bsp_02 habe ich folgendes VI erstellt, siehe Anhang.
Dabei bekomme ich die Fehlermeldung:

Exception occured in Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][ODBC Excel Driver] Syntaxfehler in der INSERT INTO-Anweisung. in ADOTool_ADO API.vi->ADOTool_Insert Data.vi->Datenbank_lesen_schreiben.vi

Komme z.Z nicht weiter, bitte um Hilfe.

Danke im Voraus

Gruß Ulli


Posted by: Ulli-Macky 07. Jul 2010, 13:06

Habe meinen Fehler gefunden. An Sonde 3 muss es heissen: "INSERT INTO [Datenbank$] (Auftragsnummer, Seriennummer) VALUES (%s, %s)".

Dafür habe ich nun ein neues Problem: habe das VI erweitert um die Eingabe "Artikelbezeichnung". Dies funktioniert aber nur wenn ich als Artikelbezeichnung Zahlen nehme. Wenn Buchstaben in das String-Eingabefeld eingetragen werden kommt folgende Fehlermeldung:

Exception occured in Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][ODBC Excel Driver] 1 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben. in ADOTool_ADO API.vi->ADOTool_Insert Data.vi->Datenbank_lesen_schreiben.vi

Diese Fehlermeldung tritt auch auf wenn ich in das Seriennummer-Feld einen Buchstaben eintrage (z.B. A123456).

Hat jemand eine Idee?

Gruß Ulli

Posted by: CB 07. Jul 2010, 19:42

QUOTE (Ulli-Macky @ 07. Jul 2010, 14:06) *
Hat jemand eine Idee?


ja, das ist nur eine Frage des Formates:

Strings werden in Hochkommas im SQL-Query übergeben, also

INSERT INTO tabellenname (TextSpaltenName) VALUES ('mein Text in Hochkommas')

das muss man auch im "Format Specifier" für die "format into string"-Primitive beachten, der Format-String für das obige Beispiel würde lauten:

INSERT INTO tabellenname (TextSpaltenName) VALUES ('%s')

und gleich noch ein Tip: wenn man Fließkommazahlen übergeben will, dann muss man in den Format-Specifier vorne weg ein %.; setzen, damit die Primitive als Dezimal-Trennzeichen den Punkt anstatt des Kommas verwendet. Das Komma ist bei SQL das Spalten-Trennzeichen => bei Nichtbeachtung dieser Regel wird man immer den Fehler-Bekommen, dass die Anzahl der Spalten nicht mit der Anzahl der Parameter übereinstimmt ...

viele Grüße
CB

Posted by: Ulli-Macky 04. Feb 2013, 14:16

Hallo,

nochmal eine Frage zum Thema "Einfügen in eine Excel-Tabelle":
- kann ich ein Datum nur als String einfügen, also mit Hochkommas 'DD.MM.YYYY'?
Das Problem ist nämlich folgendes: es funktioniert als String problemlos, aber in der Excel-Tabelle selber kann man die Datums-Spalte nicht auf- oder absteigend sortieren, bzw. das Sortieren funktioniert nicht richtig.



Wenn ich die Hochkommas im Formatbezeichner weg lasse, bekomme ich folgende Fehlermeldung:
Nr. -2147217900
Exception occured in Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][ODBC Excel Driver] Syntaxfehler in Zahl in Abfrageausdruck '21.07.2012'. in ADOTool_ADO API.vi->ADOTool_Insert Data.vi

Habt Jemand einen Tipp?

Gruß Ulli

Posted by: CB 11. Feb 2013, 12:52

das geht vermutlich nur als String. Was man mal probieren könnte ist, in der Excel-Tabelle die Spalte in die die Daten als Datum eingefügt werden sollen, zu markieren und über den Format-Befehl explizit den Daten-Typ "Datum" zuzuweisen.

Meine Empfehlung wäre nicht direkt in Excel zu schreiben, sondern stattdessen eine Access Datenbank zu verwenden und die Excel-Tabellen in Excel mit der Access-Datenbank zu verknüpfen (ggf. auch über Microsoft Query bzw. den Befehl "Externe Daten"), das macht vieles leichter. Die Ansichten kann man auch direkt in Access erzeugen und einfach mit einem "SELECT * FROM ANSICHTNAME" nach Excel importieren ...

Die gesamte Excel-funktionalität im ADO-Toolkit ist eigentlich unter dem Gesichtspunkt zu sehen "wenn's denn unbedingt sein muss, geht das auch, aber ...".

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