LabVIEWForum.de
Fehler bei jedem zweiten Wert, Excel lesen - 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)
+----- Forum: Excel (/Forum-Excel)
+----- Thema: Fehler bei jedem zweiten Wert, Excel lesen (/Thread-Fehler-bei-jedem-zweiten-Wert-Excel-lesen)



Fehler bei jedem zweiten Wert, Excel lesen - tobi45f - 14.04.2015 07:55

Hallo zusammen, ich bin es mal wieder Big Grin

insgesamt komme ich mit meinem Projekt gut voran, nicht zuletzt durch die Hilfe hier, aber hier komme ich seit 2 Tagen nicht weiter. Ich häng hier etwas in der Luft...

In meiner VI "Messung laden mit xls" suche ich mir meine Datei aus und lasse sie mir anzeigen. Nun kann es vorkommen, dass ich diese bearbeiten möchte. Dazu rufe ich meine VI "Messreihe bearbeiten meta" auf. Diese macht aber leider nicht das, was sie soll.
In beiden VIs ist die subVI "Excel auslesen" vorhanden und wird ausgeführt. Bei "Messung laden mit xls" geht dies Fehlerfrei und zeigt alles an, bei "Messreihe bearbeiten meta" nicht. Hier wird kurioserweise nur jeder zweite Wert gelesen, die anderen spucken einen Fehler aus.

Was mich zur Weißglut führt: ab und an wenn ich die VI über die Highlight-Funktion laufen lasse um den Fehler zu finden, geht es problemlos. Lief es einmal durch, geht es auch ohne Highlight. Starte ich den PC neu, geht es wieder nicht. Irgendwas ist faul, nur weiß ich nicht weiter.
Die VI lief vor einigen Tagen einwandfrei. Ich hatte nur in anderen VIs etwas geändert. Nun läuft sie wie oben beschrieben. Das einzige was sich geädert hat, ist der Pfad zur Exceldatei. Aber das sollte doch egal sein, solange der Pfad auf eine existierende Exceldatei zeigt?

Ich bitte um Hilfe Shy
Gruß Tobias


RE: Fehler bei jedem zweiten Wert, Excel lesen - GerdW - 14.04.2015 08:09

Hallo Tobias,

du solltest auch die Excel-Datei anhängen - vielleicht hat ja Excel damit Probleme…

Außerdem:
- Viel zu viele lokale Variablen! Verwende Scheiberegister!!!
- Viel zu viele Sequenzstrukturen! Wandle sie in flache Sequenzen um, die du dann so aufräumst, dass du gar keine mehr benötigst!
- Viel zu viel RubeGoldberg! IndexArray kann man aufziehen! ConvertFromString-Funktionen sind polymorph! Eine Case-Struktur, die nur boolsche Konstanten beinhaltet, ist hochgradig RubeGoldberg!!!
Beispiel:
[attachment=52812]
- Wieso musst du dieselbe Exceldatei und denselben Range (A1:B50) mehrfach lesen? Würde es nicht ausreichen, dies einmal zu lesen?


RE: Fehler bei jedem zweiten Wert, Excel lesen - tobi45f - 14.04.2015 09:56

Hallo Gerd,
vielen Dank, Excel ist unten. Da mein Programm die Datei für zwei verschiedene Messungen vorbereitet und in beiden Dateien die Metadaten speichert, hab ich beide angehangen. Sollte mit beiden funktionieren, da Sheet 1 identisch ist.


(14.04.2015 08:09 )GerdW schrieb:  - Viel zu viele lokale Variablen! Verwende Scheiberegister!!!
Solange die Raceconditions passen macht das keinen Unterschied oder? Ich hatte es auch mal mit Schieberegistern versucht, allerdings finde ich das viel unübersichtlicher. Viel mehr lange Leitungen statt einer kurzen auf eine Variable... oder hat das einen weiteren, mir unbekannten, Hintergrund?


(14.04.2015 08:09 )GerdW schrieb:  - Viel zu viele Sequenzstrukturen! Wandle sie in flache Sequenzen um, die du dann so aufräumst, dass du gar keine mehr benötigst!
Genau das hatte ich vorher. Dann dacht ich mir, machste Sequenzen raus, damit ich ja keine Probleme mit den Raceconditions bekomme.... Undecided


(14.04.2015 08:09 )GerdW schrieb:  - Viel zu viel RubeGoldberg! IndexArray kann man aufziehen! ConvertFromString-Funktionen sind polymorph!
Da hast du vollkommen recht. Mittlerweile weiß ich das auch. Nur habe ich den Teil in den Anfängen der Anfängen geschrieben und von da übernommen. War zu faul es neu zu schreiben, da es ja auch funktioniert Smile

(14.04.2015 08:09 )GerdW schrieb:  Eine Case-Struktur, die nur boolsche Konstanten beinhaltet, ist hochgradig RubeGoldberg!!!
Wenn ich so drüber nachdenke, dann muss ich dir da auch rechtgeben. Eine Negierung hätte es auch getan Lol


(14.04.2015 08:09 )GerdW schrieb:  - Wieso musst du dieselbe Exceldatei und denselben Range (A1:B50) mehrfach lesen? Würde es nicht ausreichen, dies einmal zu lesen?
Ja würde reichen. Ich könnte wohl erst die Excel lesen lassen und dann mein Array an die Meta-Daten-Suche hängen.

Edit: Wenn ich mich nicht irre, kommt ja auch genau daher der Fehler. Wenn ich nun das Excel lesen außerhalb von der Schleife anschließe, dann macht er den Fehler erst in der nächsten Sequenz, wenn ich wieder meine subVI Excel auslesen aufrufe.
Wieso macht das Probleme? Ich schließe doch meine Referenz? Dazu habe ich probiert, die subVI dynamisch aufzurufen, was das ganze leider nicht behebt.
Ich wünschte ich hätte noch eine alte Version, denn das ganze hat vor einigen Tagen noch funktioniert. Nur weiß ich nicht, was daran jetzt anders ist. Blink
und halt die kuriose Sache, dass es gelegentlich über die Highlight-Funktion lief Big Grin


RE: Fehler bei jedem zweiten Wert, Excel lesen - tobi45f - 16.04.2015 09:31

Niemand eine Idee, wie ich meine VI "Excel auslesen" entweder so umschreibe, dass ich sie mehrfach hintereinander aufrufen kann oder wie ich sie in meiner VI mehrfach fehlerfrei hintereinander aufrufen kann?

Ich weiß, dass ich es umgehen kann, indem ich einmal alles lese und nachher nur bestimmte Teile auswerte. Allerdings möchte ich dennoch den Fehler verstehen um daraus zu lernen. Immer nur den Fehler umgehen, bringt einen irgendwann nicht mehr weiter.
Schließlich wurden die Excel Toolkits auch über ActiveX geschrieben? und damit klappt der mehrfach Aufruf...


RE: Fehler bei jedem zweiten Wert, Excel lesen - jg - 16.04.2015 10:14

Füge ein "Wait" von ca. 50 ms zwischen deinen verschiedenen Aufrufen deines subVIs "subvi_Excel_auslesen.vi" ein.

Erweitertes Debugging zeigt, dass der Fehler übrigens an dieser Stelle auftritt:
[attachment=52855]
dort mit Fehlercode "-2147023174 Der RPC-Server ist nicht verfügbar."

Ich vermute, dass Excel einfach nach dem ersten Aufruf nicht wieder so schnell per ActiveX zur Verfügung steht.

Gruß, Jens


RE: Fehler bei jedem zweiten Wert, Excel lesen - GerdW - 16.04.2015 10:16

Hallo Tobi,

in meinen Anwendungen muss ich nicht so oft ein und dieselbe Excel-Datei mehrfach hintereinander auslesen…

Ich habe folgende Fälle:
- Konfigurationsdatei lesen: Ich lese mehrere Sheets je einmal komplett ein und werte dann alles nacheinander aus
- Auswertung generieren: Ich beschreibe nacheinander mehrere Sheets mit jeweils mehreren Datenblöcken

Beides funktioniert - mit der gleichen Vorgehensweise wie in deinem VI…


RE: Fehler bei jedem zweiten Wert, Excel lesen - tobi45f - 16.04.2015 10:24

Alles klar, Danke euch beiden.
Das Excel zu langsam ist, ergibt Sinn. Ist ja von Microsoft Cool mit der Wait geht es einwandfrei. Komisch, dass es vorher teilweise ohne ging Blink

Ich werde nun alles nur einmal lesen und dann per Schieberegister weiterleiten und auswerten, allein schon weil das Programm dann schneller läuft, da er nicht jedes mal lesen muss Big Grin
Gruß Tobias