Access-Werte in LV einlesen |
Access-Werte in LV einlesen |
16. Apr 2010, 12:37
Post
#1
|
|
new Member Group: Members Posts: 2 Joined: 16.04.2010 Member No.: 144 Zertifizierung: keine |
Hallo zusammen,
Gleich vorneweg, gleicher Fred wurde im LabViewForum.de gepostet. Ich hab ein Problem…wenigstens ist es das für mich… ich habe eine Datenbank mit vielen Messreihen und Messwerten. Die Datenbank (Access) hat mehrere Tabellen, eine Tabelle für die Protokolle der Messreihen, nur Textliche Informationen (Größe Spalten53 und Zeilen 5385). Und eine Tabelle mit Messwerte Zahlen und Schrift (Größe Spalten99 und Zeilen 79914). Kurz zum Aufbau der Tabellen Messreihe: IDMessung 1 MotorA Nennspannung Nennstrom….. 2 MotorB Nennspannung Nennstrom… …. Messwerte: Fortlaufende Nummer ,IDmessung ,Messwert Spannung ,Messwert Strom usw…. 1 ,1 ,X ,X 2 ,1 ,X ,X 3 ,1 ,X ,X 4 ,2 ,X ,X 5 ,2 ,X ,X …… Diese Tabellen werden an einem Prüfstand ständig erweitert und in Access abgespeichert. Nun möchte ich ein Programm in LV schreiben, in welchem ich mir von dieser DB Messreihen aussuchen kann und mir die Verläufe z.B. der Spannung als Diagramm anzeigen lassen kann. Mit Ado-Tools konnt ich ohne Probleme die kleine Tabelle mit den Messreihen einlesen. Jedoch kommt bei der großen Messwerte Tabelle immer nicht genügend Arbeitsspeicher (zuhause4Gb in der Firma definitiv weniger). Der Datenzugriff dauert in der Firma schon bei der kleine Tabelle relativ lang. Fragen: -> Sind das für die ADO-Tools wirklich zu viele Daten? Oder mach ich was falsch? -> Wäre es sinnvoll über ein extra Programm immer zuerst die Werte einzulesen sie dann lokal auf dem Rechner in eine Textdatei (CSV) Datei zu schreiben, um einen schnelleren Zugriff darauf zu bekommen? Außerdem müsste man so immer nur Aktuelle Werte aus der DB lesen. ->kann man bei ADO Tools nur spezielle Zeilen auslesen? -> Wie groß dürfen CSV Dateien werden? -> Gibt es allgemein eine elegantere Methode, also zum Beispiel keine CSV-Datei sondern hat LV vielleicht ein eigenes Format um solche Daten zu sichern, auf die es dann gut und schnell zugreifen kann? Oder ist es doch sinnvoller immer zu Beginn die komplette Datenbank auf den eigenen Rechner kopieren und von dort aus arbeiten. Wie sieht es da zugriffsgeschwindigkeitsmäßig aus, was ist da die beste Methode? Ohh man ….. ich seh es … da gibt es noch viel zu tun….. Zur information ich benutze LV8.2 in der Firma. Ein Beispiel zum Auslesen mit ADO-Tools hab ich angehängt. Vielen Dank schonmal für eure Hilfe. Internette Grüße Vincenzo P.S. ich hoffe ich hab nix vergessen |
|
|
19. Apr 2010, 06:59
Post
#2
|
|
proven Member Group: Administrators Posts: 315 Joined: 16.10.2006 From: Düsseldorf Member No.: 2 LV Version: current Zertifizierung: CLA LV User seit: 2001 |
warum willst du denn die ganze Tabelle aus 80000 x 100 Datensätzen auf einen Schlag einlesen?
wenn du eine WHERE - Clausel in deinem SQL-Statement verwendest um die Anzahl der Datensätze einzuschränken, dann sollte das tadellos funktionieren ... eine CSV-Datei kann so lang sein wie du willst, allerdings macht es Sinn die auf 65535 Zeilen zu begrenzen, damit sie auch mit Excel noch vollständig geladen werden kann ... Wenn du mit einer Access Datei auf einem fremden Rechner über Netzwerk arbeitest, dann wird für jeden Query eine Kopie der DB auf deinen Rechner in einem temporärem Verzeichnis erstellt, das kostet unnötig Ressourcen. Besser ist es wenn du auf einer lokalen Kopie der DB arbeitest. Das ADO Tool ist einfach nur ein Wrapper um die MS ADO Methoden. Prinzipiell kannst du damit alles das machen was man mit ADO auch machen kann ... -------------------- künstliche Intelligenz ist besser als natürliche Dummheit!
rotabench:rotierende Prüfstände nach dem Baukasten-Prinzip |
|
|
30. Apr 2010, 13:12
Post
#3
|
|
new Member Group: Members Posts: 2 Joined: 16.04.2010 Member No.: 144 Zertifizierung: keine |
Hallo für deine sehr schnelle Hilfe,
leider muss ich das Programm neben meiner alltäglichen Arbeit machen und kann deswegen nicht immer gleich Sachen ausprobieren oder Antworten. Ich muss gestehen ich hab von SQL rein garkeine Ahnung dadurch kann ich auch mit der Where-clausel nix anfangen :-( Da du meintest es ist sinnvoller eine kopie der DB auf der Platte zu erstellen, hat sich das mit der CSV Datei geklärt :-) Ich vermute, wenn ich mit der Where-Clausel einzelne Messreihen auswählen kann dürfe es kein Problem sein mit ein paar Schrittchen die DB auf der lokalen Platte aktuell zu halten. aber was muss genau in der Where-Clausel drinstehen? Ich denke nur mit der ID der Messung wird es wohl nicht getan sein. internette Grüße Vincenzo Edit: Sorry für meine Voreilige Antwort....hab Google befragt....und wie immer auch ne Lösung gefunden...tja man muss halt nur lange genug suchen :-( Sorry This post has been edited by CamilloN: 30. Apr 2010, 15:18 |
|
|
01. May 2010, 07:18
Post
#4
|
|
proven Member Group: Administrators Posts: 315 Joined: 16.10.2006 From: Düsseldorf Member No.: 2 LV Version: current Zertifizierung: CLA LV User seit: 2001 |
mit der Zeilen ID könnte man prima eine Where-Clause aufbauen, die die Anzahl der Datensätze reduziert.
Man könnte z.B. in einer While-Schleife immer 500 Zeilen am Stück auslesen in dem man sich die letzte ID merkt: SELECT .... WHERE ID > letzte_ID_aus_dem_Schieberegister AND ID<= letzte_ID_aus_dem_Schieberegister+500 für den 1. Schleifendurchlauf wäre das dann WHERE ID>0 AND ID <=500 10. Schleifendurchlauf: ... WHERE ID>5000 AND ID <=5500 usw ... und so die Daten in 500 Zeilen Blöcken verarbeiten -------------------- künstliche Intelligenz ist besser als natürliche Dummheit!
rotabench:rotierende Prüfstände nach dem Baukasten-Prinzip |
|
|
Lo-Fi Version | Time is now: 07.08.2024 - 07:08 |