Hallo,
kein Problem, wir helfen ja gerne weiter ;-)
Der Ansatz ist soweit schon richtig, es fehlt nur noch das VOK.DB_Load(), damit die Abfrage, die Sie im Select-String festgelegt haben auch ausgeführt wird.
Wenn Sie die DB-Verbindung nur für das AVG() verwenden wollen, können Sie den Select-String übrigens auch direkt in der DB-Konfiguration setzen (da wo sonst der default "SELECT * FROM..." steht) und sich somit den Aufruf von VOK.DB_SetSelectString() sparen.
Weiterhin ist noch zu beachten, dass das Laden der Daten per VOK.DB_Load() in einem eigenem Thread ausgeführt wird, da dies je nach Datenmenge einige Zeit in Anspruch nehmen kann und gewährleistet sein muss, dass die Laufzeit währenddessen nicht blockiert wird.
D.h.: Sie können nicht unmittelbar nach dem Aufruf von VOK.DB_Load() auf die Werte zugreifen.
Die korrekte, elegante Vorgehensweise ist in etwa wie folgt (der Übersicht halber habe ich Variablendeklarationen etc. ausgelassen und nur die wesentlichen Code-Zeilen aufgeführt):
Ein VB-Programm setzt (bei Bedarf) den Select-String, stößt den Ladevorgang an und setzt anschliessend ein Bit, das ein weiters VB-Programm auslöst:
Ein zweites VB-Programm überprüft dann, ob die Daten bereits geladen sind:
Mit freundlichen Grüßen
kein Problem, wir helfen ja gerne weiter ;-)
Der Ansatz ist soweit schon richtig, es fehlt nur noch das VOK.DB_Load(), damit die Abfrage, die Sie im Select-String festgelegt haben auch ausgeführt wird.
Wenn Sie die DB-Verbindung nur für das AVG() verwenden wollen, können Sie den Select-String übrigens auch direkt in der DB-Konfiguration setzen (da wo sonst der default "SELECT * FROM..." steht) und sich somit den Aufruf von VOK.DB_SetSelectString() sparen.
Weiterhin ist noch zu beachten, dass das Laden der Daten per VOK.DB_Load() in einem eigenem Thread ausgeführt wird, da dies je nach Datenmenge einige Zeit in Anspruch nehmen kann und gewährleistet sein muss, dass die Laufzeit währenddessen nicht blockiert wird.
D.h.: Sie können nicht unmittelbar nach dem Aufruf von VOK.DB_Load() auf die Werte zugreifen.
Die korrekte, elegante Vorgehensweise ist in etwa wie folgt (der Übersicht halber habe ich Variablendeklarationen etc. ausgelassen und nur die wesentlichen Code-Zeilen aufgeführt):
Ein VB-Programm setzt (bei Bedarf) den Select-String, stößt den Ladevorgang an und setzt anschliessend ein Bit, das ein weiters VB-Programm auslöst:
Code:
VOK.DB_SetSelectString(dbConnection, selectStringAVG)
VOK.DB_Load(dbConnection)
VDF.WriteBitB 0,0,1,1,1 'Zweites Skript auslösen
Ein zweites VB-Programm überprüft dann, ob die Daten bereits geladen sind:
Code:
status = VOK.DB_IsActive(dbConnection)
Select Case status
Case 0
'Ladevorgang abgeschlossen
VDF.WriteBitB 0,0,1,1,0
avgWert = VOK.DB_GetValue(dbConnection, 0, 0)
Case 1
'DB-Verbindung noch aktiv, weiter warten, Bit nicht zurücksetzen
Case -1
'Fehler beim Laden, Bit zurücksetzen, evtl. Fehlerbehandlung
VDF.WriteBitB 0,0,1,1,0
End Select
Mit freundlichen Grüßen
Daniel Orleth
Softwareentwicklung
Tel: +49 (0)2631 941288-0
Softwareentwicklung
Tel: +49 (0)2631 941288-0