LabVIEWForum.de
Data Connectivity Toolset - 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: Data Connectivity Toolset (/Thread-Data-Connectivity-Toolset)

Seiten: 1 2


Data Connectivity Toolset - seppo - 13.12.2007 07:57

Guten Morgen, ich benutze das Connectivity Toolset von NI, LabVIEW 8.5 und den Microsoft SQL Server!

Um Tabellen auszulesen, zu schreiben...gibt es hier ja bestimmte vorgefertigte VI's!
Das Problem ist, ich kann immer nur alle Spalten auslesen...An diesen VI's ist jeweils ein Anschluss Columns, der mir sehr verlockend erscheint um einzeln auszulesen.
Habe in der Hilfe nachgeschaut, aber ich werde nicht so ganz schlau daraus! Bsp: Ich habe ein Tabelle
Benutzer_Id Name Passwort Salz Aktiv
Was muss ich an den Anschluss Columsn anschließenn wenn ich nur alle Namen auslesen will?

Über Befehlseingaben bekomme ich das natürlich hin, aber ich möchte ja dann doch die VI's benutzen.
Und noch etwas habe bsp. die Benutzer_Id auf Auto_Inkrement an, aber bei dem INSERT VI funktioniert das auch nicht so ganz!

Grüße
Seppo


Data Connectivity Toolset - Achim - 13.12.2007 08:55

' schrieb:Über Befehlseingaben bekomme ich das natürlich hin, aber ich möchte ja dann doch die VI's benutzen.

Hi,

ich weiß auch nicht, was du da anschließen musst, aber ich habe einen allgemeinen Hinweis:

Verlagere die Arbeit in die DB, d.h. übergebe mit "Execute Query" einen SQL-Befehl und hole dir dann nur das Ergebnis ab! Das entlastet deine LV-Applikation ERHEBLICH und ist auch viel sicherer + schneller als das über die VI's zu machen!

Gruß
Achim


Data Connectivity Toolset - Y-P - 13.12.2007 09:31

Da kann ich Achim nur zustimmen!

Gruß Markus

' schrieb:Verlagere die Arbeit in die DB, d.h. übergebe mit "Execute Query" einen SQL-Befehl und hole dir dann nur das Ergebnis ab! Das entlastet deine LV-Applikation ERHEBLICH und ist auch viel sicherer + schneller als das über die VI's zu machen!



Data Connectivity Toolset - seppo - 13.12.2007 09:33

' schrieb:Da kann ich Achim nur zustimmen!

Gruß Markus

Habe es auch so gelöst mit EXECUTE Query :-)
Allerdings wollte ich es halt mal rein interessehalber mit den bereit gestellten VI's versuchen!
Naja aber so lange es überhaupt halbwegs klappt :-)

Danke trotzdem


Data Connectivity Toolset - rolfk - 13.12.2007 11:39

' schrieb:Habe es auch so gelöst mit EXECUTE Query :-)
Allerdings wollte ich es halt mal rein interessehalber mit den bereit gestellten VI's versuchen!
Naja aber so lange es überhaupt halbwegs klappt :-)

Danke trotzdem

Die Column ist ein Integer der (wahrscheinlich bei 1 beginnend) die Kolonnen in der Reihenfolge wie sie in der Query definiert waren, referenziert. Bei einer * Query wo also alle Kolonnen einer Tabelle zurückgegeben werden ist die Reihenfolge normalerweise so wie die Kolonnen in der Database definiert sind.

Wenn Du eh nur an einer Kolonne interessiert bist kannst Du auch gleich eine enstprechende Query machen:

SELECT <Kolonnenname> FROM <Tabellenname>

Rolf Kalbermatter


Data Connectivity Toolset - seppo - 13.12.2007 13:47

' schrieb:Die Column ist ein Integer der (wahrscheinlich bei 1 beginnend) die Kolonnen in der Reihenfolge wie sie in der Query definiert waren, referenziert. Bei einer * Query wo also alle Kolonnen einer Tabelle zurückgegeben werden ist die Reihenfolge normalerweise so wie die Kolonnen in der Database definiert sind.

Wenn Du eh nur an einer Kolonne interessiert bist kannst Du auch gleich eine enstprechende Query machen:

SELECT <Kolonnenname> FROM <Tabellenname>

Rolf Kalbermatter


Ja mit der Befehlsstruktur komme ich klar, habe mich halt nur gefragt warum es überhaupt spezifische VI's gibt wenn diese umständlicher sind als eine EXE Query zu programmieren!


Data Connectivity Toolset - seppo - 14.12.2007 11:33

' schrieb:Ja mit der Befehlsstruktur komme ich klar, habe mich halt nur gefragt warum es überhaupt spezifische VI's gibt wenn diese umständlicher sind als eine EXE Query zu programmieren!

Also ich bin immer noch am rumsuchen, es interessiert mich einfach wie das mit dem DB Select Tools Data funktionieren soll!

Bsp ich habe eine Tabelle:

Typen_ID Typ Größe
1 A 5
2 B 12
3 C 10
4 A 9

Ich möchte das nicht über eine Query Exe Wie Select ..... from .......where..... machen sondern über genau das DB Select Tools Data!
Es muss doch möglich sein, explizit nicht nur die ganze Tabelle auszugeben sondern bspw. nur den aktuellen Wert (Größe) der Typen_ID 4!!!!!

Ich möchte als Ausgabe nur die 9 als Integer Wert haben!


Data Connectivity Toolset - Achim - 14.12.2007 12:42

' schrieb:Was muss ich an den Anschluss Columsn anschließenn wenn ich nur alle Namen auslesen will?

Ich würde mal tippen, du musst ein 1D-String-Array mit einem Element anschließen, und in diesem Element steht "Name"

Und wenn du mal ins genannte VI reinguckst, siehst du auch, wie die Query zusammengebaut wird! Da wird auch nur ein "Select..." erzeugt, allerdings werden da noch X Abfragen gemacht, ob das geht...


Data Connectivity Toolset - seppo - 14.12.2007 15:11

Dein Tipp war Gold wert...jetzt bleibt nur noch eine einzige Frage....Ich habe eine einzelne Spalte ausgelesen, wie schaffe ich es z.Bsp genau den Wert der vorletzten Zeile auszulesen!!!


Data Connectivity Toolset - Achim - 14.12.2007 15:22

Jetzt kommen wir genau dazu, warum du dir am besten selber eine Query bastelst:

Die VI's des Toolset sind eben nicht für alle Eventualitäten gerüstet...du müsstest so wie bisher die komplette Spalte (Column) lesen, diese wird dir als 1D-Array geliefert.

Jetzt musst du die Arrayfunktionen von LV verwenden: Entweder du verwendest ("ArraySize" - 2) und schließt das an "IndexArray" an, dann kriegst du den vorletzten Wert, oder du benutzt "ReverseArray" und schließt das Ergebnis an "IndexArray" mit dem Index "2" an...gleiches Resultat!

Für einen Wert ist das noch relativ einfach und schnell, bei weiteren Werten wirds aufgrund der Speicher/Rechen-intensiven Array-Funktionen u. U. ganz schön dauern...

Mit nem vernünftigen "Select"-Befehl bist du da viel flexibler...

Gruß
Achim