LabVIEWForum.de
Stringarray mittels DCT in Tabelle schreiben - 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: Stringarray mittels DCT in Tabelle schreiben (/Thread-Stringarray-mittels-DCT-in-Tabelle-schreiben)



Stringarray mittels DCT in Tabelle schreiben - OFET - 28.08.2009 16:11

Und ja, ich nerve sicherlich langsam.Wink

Ich habe jetzt aus der Rechnungsdatenbank mittels SQL Query ein Stringarray erhalten mit 5 Spalten und x Zeilen.

Form:


Produkt1 | Produkt2 | Mitarbeiter ID | Tournr | Kalenderwoche


Jetzt wollte ich dieses Array in eine bereits bestehende Tabelle schreiben (ein Frame vorher wird der vorherige Inhalt per Truncate Table gelöscht).

Diese hat 6 Felder in der Form.


ID | Produkt1 | Produkt2 | Mitarbeiter ID | Tournr | Kalenderwoche


Bei dem Versuch das Array komplett reinzuschreiben, kam ein Fehler in den Error Out Case.
Bei dem Versuch das Array Zeile für Zeile (mittels Dimension von Array -> Zeilenanzahl -> For Schleife) kommt ein Fehler.

Also 1-dimensionales Stringarray an den Columns Eingang von der Insert Data.Vi gesteckt mit:

Produkt1
Produkt2
...
...

Fehler!
Auch die Umwandlung der Zeilen in Variant brachte keinen Erfolg.


Die Tabelle in der Datenbank ist für Felder 2-6 auf Varchar gesetzt.



Wo liegt jetzt der Fehler?
Im LabVIEW oder habe ich die Tabelle in der Datenbank falsch erstellt?

Vielen Dank für die Hilfestellung im voraus.



Edit:

Ich hab mal n Screener angehangen.


Stringarray mittels DCT in Tabelle schreiben - Y-P - 28.08.2009 18:04

Ich mach's immer so....

[attachment=20889]
Lv80_img
[attachment=20890]
Lv86_img

Gruß Markus


Stringarray mittels DCT in Tabelle schreiben - OFET - 28.08.2009 18:42

Ich möchte aber nur bedingt die Daten über SQL Befehle einbinden, sondern direkt über das VI, damit es dann nach dem Feintuning der SubVI Wurst ist, wieviele Spalten/Zeilen reingeschrieben werden müssen.

Desweiteren funktionieren deine VIs bei mir nicht.Sad
In der SubVI fehlen Verbindungen.


Stringarray mittels DCT in Tabelle schreiben - Y-P - 28.08.2009 19:25

Tatsache. Da hat's beim Runterspeichern von LabVIEW 2009 auf LabVIEW 8.0 wohl was verbügelt. Jetzt (für LabVIEW 8.6) klappt's.
Ich hab' das obere VI ersetzt.

Gruß Markus

' schrieb:In der SubVI fehlen Verbindungen.



Stringarray mittels DCT in Tabelle schreiben - OFET - 28.08.2009 19:56

Ich habe die Funktionsweise schon verstanden, nur möchte ich wie gesagt das Array nicht per SQL Befehle speichern, sondern über die Insert VI aus dem DCT.

Hat den Grund, dass ich mir quasi per LabVIEW und php gestütztem Frontend eine Art Konfigurationstabelle baue, in der steht wo welche Datensätze liegen und wie sie miteinander verknüpft und berechnet werden. Daraus zieht dann eine VI die nötigen Daten und übergibt die dann. Daher auch meine Anfrage nach dem Funktionsparser.Wink
Die eigentliche Berechnung übernimmt dann ein weiteres VI, was die statistische Auswertung in die eigentliche Auswertungstabelle schreibt.

Daher muss die ganze Sache sehr modular aufgebaut sein, und da kann ich nicht anfangen ein Stringarray von (später) unbekannter Größe mühsam zu zerpflücken und mit SQL Befehlsbausteinen wieder zusammen zufügen. Ich hab schon so genug mit über die Jahre unlogisch angelegten Tabellen und Datensätzen zu kämpfen.Wink

Kannst du mir folgen?

Mit dem ADO Toolkit hat das ja an sich funktioniert, nur hatte das bei SQL Querys mit x - inner und outer Joins seine Probleme.


Stringarray mittels DCT in Tabelle schreiben - Y-P - 28.08.2009 21:00

Bei mir ist es so, dass ich die ganzen INSERT-Befehle auf DB-Ebene mache (über Funktionen / Procedures) und in LabVIEW nur die Parameter (inkl. Funktionsaufruf) mitschicke. Was ich in LabVIEW mache, sind SELECT-Befehle, um irgendwelche Daten aus meinen Views zu holen. Du kannst Dir aber mit meinem Bsp. doch auch die entsprechenden Befehle dynamisch erzeugen und dann an die DB schicken.
Ich verstehe das Problem nicht so ganz.

Gruß Markus


Stringarray mittels DCT in Tabelle schreiben - OFET - 30.08.2009 10:18

Das Problem ist, dass ich die Insert VI aus dem DCT nutzen will. Und auch nur die.
Das Projekt mit dem ich betraut bin, ist schon so umfangreich, dass ich solche "simplen" Dinge nicht erst zusammenbasteln will.

Wie gesagt, ich vermute es ist einfach nur ein Datentypfehler beim speichern des Arrays.

Ich hab doch nun auch genug Beispiele im Handbuch gefunden, bei denen auch die Insert VI benutzt wird, aber warum wills bei mir nicht?


Stringarray mittels DCT in Tabelle schreiben - jg - 31.08.2009 07:53

' schrieb:Bei dem Versuch das Array komplett reinzuschreiben, kam ein Fehler in den Error Out Case.
Bei dem Versuch das Array Zeile für Zeile (mittels Dimension von Array -> Zeilenanzahl -> For Schleife) kommt ein Fehler.
Was besagen denn die Fehlermeldungen?

Gruß, Jens


Stringarray mittels DCT in Tabelle schreiben - OFET - 31.08.2009 07:56

Ich habe jetzt die zweite Methode die hier

http://digital.ni.com/public.nsf/allkb/3FE...6256DB4006A22C0

beschrieben wurde ausprobiert und bekomme folgende Fehlermeldung am Error out

"NI_Database_API.lvlib:Conn getDataToModify.vi:1"<ERR>Object 0x000000 is not valid."

Die Datenbank/Tabelle wird aber prima erkannt, denn der Error tritt erst beim reinschreiben rein, also dass die Initialisierung der Tabelle falsch sein könnte, schließe ich dadurch aus.



Edit:

Problem gelöst, die Funktion "Array to Cluster" muss manuell auf die Zahl der Clusterelemente angepasst werden.

Ist natürlich äußerst suboptimal, aber ok.

anyway, danke fürs helfen.