LabVIEWForum.de - Auslesen aus einen MS SQL-DB von 2 Datentypen (time, Datetime) mit ADO-Tools

LabVIEWForum.de

Normale Version: Auslesen aus einen MS SQL-DB von 2 Datentypen (time, Datetime) mit ADO-Tools
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Morgen Zusammen,

mein Problem besteht eigentlich aus zwei Problemen.

1. Ich verwende die ADO-Tools für die Kommunikation mit einer MS SQL-Express Datenbank. Das Reinschreiben funktioniert auch einwandfrei. Beim Auslesen einer Spalte, die in der Datenbank mit dem Dateityp >time(3)< angelegt wurde, bekomme ich nur Hieroglyphen ausgelesen. Die anderen Dateientypen werden sauber dargestellt. Auslesen tue ich die Felder im Variant und wandle dann das Array in Strings um.

2. Als Workaround, um des Problem unter Punkt 1 zu umgehen, habe ich die zwei Spalten in der Datenbank mit den Datentypen >date< und >time(3)< zu einer Spalte mit dem Datentyp >datetime2(3)< zusammen gefasst. Beim Auslesen mit dem MS Server Management Studio ist auch alles super. Wenn ich den Selben Select-Befehl mit den ADO-Tools an die Datenbank schicke, bekomme ich Datum und Uhrzeit sauber ausgelesen aber die Sekundenbruchteile fehlen. Es sieht so aus als ob diese unterschlagen werden.
Nach meiner eigenen Fehlerdiagnose ist das Problem die Kommunikation mit den ODBC.
Kann mir da jemand einen Tipp geben was ich eventuell optimieren kann, ob zu Punkt1 oder Punkt2?

Ich verwende
lv15_img 32Bit Version

Basy
Hallo Basy,

die Anfrage ist zwar schon etwas älter, aber ich bin auch auf das Problem gestoßen. Und zwar verwende ich das ADO Toolkit in der aktuellsten Version von dieser Seite in Verbindung mit einem lokalen MySQL Server, die Verbindung wird über die 64bit Version der ODBC Datenquelle hergestellt.

Leider kenne ich mich mit den verwendeten Microsoft ActiveX Data Objects (ADO Funktionen) nicht aus. Bei Microsoft habe ich auf die Schnelle keine Möglichkeit gefunden den Bruchteil von Datetime zu konfigurieren. In ADOTool_poly Fetch Result as Variant Array.vi kommen jedenfalls die Datetime Variants schon ohne Sekundenbruchteile raus.

Eine einfacher Workaround ist es, im SQL Befehl die Bruchteile manuell anzufordern:

Code:
SELECT c3, MICROSECOND(c3) FROM mysql.fractest;

gibt mir folgendes zurück:
Code:
c3, MICROSECOND(c3)
2018-09-08 17:51:04.78    780000

und in LV:
[attachment=59982]

Damit kann man dann auch in LV weiter arbeiten - auch wenn schön etwas anderes wäre.

Grüße
Hallo Basy,
in LV gibt es Funktionen -> Konnektivität -> Database.

Darin ist ein Database Variant to Data. Den musst Du verwenden, nicht den Standard Variant nach Daten.

Gruß
Freddy
(21.05.2019 11:01 )Freddy schrieb: [ -> ]in LV gibt es Funktionen -> Konnektivität -> Database.

Hallo Freddy,

die Funktion Database Variant to Data gibt es vermutlich nur, wenn man das Database Connectivity Toolkit von NI freigeschaltet hat, oder?
Gruß,
seuk
Zitat:die Funktion Database Variant to Data gibt es vermutlich nur, wenn man das Database Connectivity Toolkit von NI freigeschaltet hat, oder?

Das Database Connectivity Toolkit kann man bei NI herunter laden.

Gruß
Freddy
Referenz-URLs