LabVIEWForum.de
TRUE aus Datenbank (Variant) wird in -1 umgewandelt. - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: TRUE aus Datenbank (Variant) wird in -1 umgewandelt. (/Thread-TRUE-aus-Datenbank-Variant-wird-in-1-umgewandelt)

Seiten: 1 2


TRUE aus Datenbank (Variant) wird in -1 umgewandelt. - Y-P - 16.10.2007 12:30

Hallo,

ich hole aus meiner Datenbank die unterschiedlichsten Werte (als Variant) und wandle sie dann in einen String um. Dies funktioniert bis jetzt soweit auch, bis auf das Problem, dass bei einem "boolschen TRUE" aus der DB der Wert in "-1" umgewandelt wird.

Ich habe auch schon versucht, eine "TRUE-Konstante" am "Database Variant to Data" anzuschließen und dann über den Fehlercluster einen boolschen Wert abzufragen, aber das funktioniert nicht.

Kann mir jemand sagen, was ich da machen könnte, dass da ein True oder eine 1 drin steht?

Gruß Markus

(VI LV 8.2)


TRUE aus Datenbank (Variant) wird in -1 umgewandelt. - Y-P - 16.10.2007 13:44

Keiner 'ne Ahnung? Bei NI habe ich jetzt auch mal nachgefragt.

Gruß Markus


TRUE aus Datenbank (Variant) wird in -1 umgewandelt. - monoceros84 - 16.10.2007 15:00

Was soll dein VI genau machen? Der Eingang besteht bei mir nur aus folgender Nachricht:

'': OLE Variant

Variant Type -> VT_EMPTY

Am Ausgang kommt nichts raus. Wahrscheinlich fehlt mir die zugrundeliegende DB. Aber wie sieht denn der Datensatz normalerweise aus? Und was liegt am Eingang von "Variant to data" und was am Ausgang an?

Ich nehme an, eine simple Abfrage - wenn =-1, dann True - willst du nicht verwenden?!


TRUE aus Datenbank (Variant) wird in -1 umgewandelt. - Y-P - 16.10.2007 15:12

Hab' mal 3 Screenshots beigefügt, wo man das Problem sieht. Default und 2 werden richtig konvertiert, TRUE nicht.
Die Abfrage nach -1 ist insofern nicht möglich, da auch ein "normaler" Wert -1 sein kann. Da würde die Konvertierung ja stimmen.

Gruß Markus

' schrieb:Was soll dein VI genau machen? Der Eingang besteht bei mir nur aus folgender Nachricht:

'': OLE Variant

Variant Type -> VT_EMPTY

Am Ausgang kommt nichts raus. Wahrscheinlich fehlt mir die zugrundeliegende DB. Aber wie sieht denn der Datensatz normalerweise aus? Und was liegt am Eingang von "Variant to data" und was am Ausgang an?

Ich nehme an, eine simple Abfrage - wenn =-1, dann True - willst du nicht verwenden?!



TRUE aus Datenbank (Variant) wird in -1 umgewandelt. - jg - 16.10.2007 15:28

Hallo, Markus,

ich vermute mal, dass da eigentlich alles richtig läuft. Wenn ich mich recht erinnere, wird "Logisch wahr" manchmal auch als Bitmuster "111...1" gespeichert. Der Link von Wikipedia (Suche nach 3. Auftreten von "Boolean") bestärkt mich in dieser Erinnerung.

Und das Bitmuster "111...1" ist halt, wenn es als Integer interpretiert wird, gleich -1.

MfG, Jens


TRUE aus Datenbank (Variant) wird in -1 umgewandelt. - monoceros84 - 16.10.2007 15:41

Das ist in der Tat äußerst seltsam. Allerdings kann ich mich erinnern, dass es bei Visual Basic ein ähnliches Problem gibt. Lies dir dazu mal den Abschnitt "Boolescher Typ wird nciht präzise in den numerischen Typ konvertiert" auf
http://msdn2.microsoft.com/de-debrary/a...yt8(VS.80).aspx
durch.

Vielleicht hilft dir das ja, obwohl ich es kaum glaube... Das ist halt nur eine Feststellung.

Was passiert beim Umwandeln mit einer True-Konstante am VI? Eine Möglichkeit (wenn auch keine besonders tolle) wäre doch, die Umwandlung in String UND in Boolesch zu machen und wenn eine -1 heraus kommt, wird überprüft, ob am booleschen Ausgang ein True anliegt. Wenn ja, wird dies übergeben, wenn nicht, die -1. Das setzt natürlich vorraus, dass eine -1 am Eingang nicht auch zum True gewandelt wird.


TRUE aus Datenbank (Variant) wird in -1 umgewandelt. - Y-P - 16.10.2007 16:22

Das Problem ist, dass der Boolsche Ausgang auch bei Zahlen (Integer, Double,...) "TRUE" wird.
Wenn der Ausgang nur bei "TRUE" gesetzt würde, dann würde es so funktionieren. Das habe ich aber auch schon probiert..... Ich habe es auch über das "Error-Cluster" versucht (wie meine Fallunterscheidung bei den Kommazahlen), aber es gibt auch "fehlerfreie" nicht-boolsche Werte (d.h. das Errorcluster zeigt mir auch bei normalen Werten keinen Fehler an, sondern nur wenn das Feld leer ist), so dass mir das auch nicht weiterhilft.
Das mit dem Visual Basic kann ich leider so nicht auf LabVIEW anwenden.

Gruß Markus

' schrieb:Das ist in der Tat äußerst seltsam. Allerdings kann ich mich erinnern, dass es bei Visual Basic ein ähnliches Problem gibt. Lies dir dazu mal den Abschnitt "Boolescher Typ wird nciht präzise in den numerischen Typ konvertiert" auf
http://msdn2.microsoft.com/de-debrary/a...yt8(VS.80).aspx
durch.

Vielleicht hilft dir das ja, obwohl ich es kaum glaube... Das ist halt nur eine Feststellung.

Was passiert beim Umwandeln mit einer True-Konstante am VI? Eine Möglichkeit (wenn auch keine besonders tolle) wäre doch, die Umwandlung in String UND in Boolesch zu machen und wenn eine -1 heraus kommt, wird überprüft, ob am booleschen Ausgang ein True anliegt. Wenn ja, wird dies übergeben, wenn nicht, die -1. Das setzt natürlich vorraus, dass eine -1 am Eingang nicht auch zum True gewandelt wird.



TRUE aus Datenbank (Variant) wird in -1 umgewandelt. - Achim - 18.10.2007 06:00

' schrieb:Kann mir jemand sagen, was ich da machen könnte, dass da ein True oder eine 1 drin steht?

Hi Markus,

sag mal, was steht denn eigentlich genau in der Datenbank? Ein "TRUE" als "Text" oder ne "1" als Text oder ne "1" als Numerischer Wert?

Ich erinnere mich dunkel, dass ich in dieser Richtung mal Probleme beim auslesen und umwandeln hatte, als ich Daten in ne mySQL-DB geschrieben habe...ist aber schon fast vier Jahre her, ich weiß es deswegen nicht mehr so genau!

Evtl. kannst du das mal testen und die verschiedenen Varianten reinschreiben...vielleicht hilft's was!

Viel Glück!

Achim


TRUE aus Datenbank (Variant) wird in -1 umgewandelt. - Y-P - 18.10.2007 07:45

Hi Achim,

in der DB steht "TRUE" als "Boolean".
Ich habe nun folgende (angehängte) Lösung gefunden. Da habe ich zwar ein bisschen improvisieren müssen, aber es funktioniert.
Der Grund wieso da -1 angezeigt wird, würde mich zwar auch interessieren, aber die Hauptsache ist, dass es jetzt funktioniert.

Gruß Markus

' schrieb:Hi Markus,

sag mal, was steht denn eigentlich genau in der Datenbank? Ein "TRUE" als "Text" oder ne "1" als Text oder ne "1" als Numerischer Wert?

Ich erinnere mich dunkel, dass ich in dieser Richtung mal Probleme beim auslesen und umwandeln hatte, als ich Daten in ne mySQL-DB geschrieben habe...ist aber schon fast vier Jahre her, ich weiß es deswegen nicht mehr so genau!

Evtl. kannst du das mal testen und die verschiedenen Varianten reinschreiben...vielleicht hilft's was!

Viel Glück!

Achim



TRUE aus Datenbank (Variant) wird in -1 umgewandelt. - Achim - 18.10.2007 07:50

Hm...also doch die Variante, die monoceros vorgeschlagen hatte...

Haste mal meine Vorschläge probiert? Ich meine, ich hab's damal so hingekriegt, indem ich nen anderen Typ in der DB abgelegt hatte...