Bei Programmstart das Ergebnis einer Abfrage speichern

08/04/2011 - 13:16 von Michael Alexander | Report spam
Hallo!

Ich möchte beim Programmstart einer VB6 Anwendung das Ergebnis einer Abfrage
temp speichern, damit nicht bei jedem Ausführen eines Codes wiederum das
Ergebnis der Abfrage (Datenbasis tausende Datensàtze einer Access-Datenbank)
ermittelt werden muß.

Ich habe mir überlegt, beim Öffnen der Anwendung die Daten in einen String
zu speichern, um in dann weiterverwenden zu können.

Ich habe eine öffentliche Variable strKDID definiert, die beim Form_Load
belegt wird

Dim strKdID As String 'string mit dem Kundennummern, für die es
Barcodes gibt

'Belegung von strKdid
strSQL2 = "SELECT BarcodesVereine.ID From BarcodesVereine Where
(((BarcodesVereine.ungültig) = False)) GROUP BY BarcodesVereine.ID;"

Set rs = dbsDataBase.OpenRecordset(strSQL2)
rs.MoveFirst

Do Until rs.EOF
strKdID = strKdID & Str(rs("ID")) & ", "
rs.MoveNext
Loop
strKdID = Mid(strKdID, 1, Len(strKdID) - 1)
'Debug.Print strKdID


Verwendet werden soll diese befüllte Variable für folgende Weiterverwendung
im Prüfcode beim Einlesen eines Barcodes:

If Not ValueIn(Left(txtBarcode, 6), "232203", "232204", "252608", "232103")
Then wobei eben die Anzahl der Parameter verànderlich sein soll.

Das Problem dabei ist aber, dass der String scheinbar nicht der benötigten
Syntax entspricht.
Ich bekomme im Direktffenster als Ergebnis der Schleife

232203, 232204, 252608, 232103

wobei ich vermute, dass die "" " fehlen, oder funktioniert es mit einem
String gar nicht, weil

ValueIn(aValue, ParamArray Paras() as Variant) As Boolean definiert
ist?

Wie müßte ich dann das Ergebnis der Schleife ausgeben, bzw. die öffentliche
Variable definieren: vielleicht strKDID as Variant ??

Dim strKdID As Variant bringt aber auch kein richtiges Eergebenis

Danke
Michael

VB 6 SP5, WIN XP Pro SP3
 

Lesen sie die antworten

#1 Heinz-Mario Frühbeis
08/04/2011 - 14:47 | Warnen spam
Am 08.04.2011, Michael Alexander vermutete :
Hallo!

Ich möchte beim Programmstart einer VB6 Anwendung das Ergebnis einer Abfrage
temp speichern, damit nicht bei jedem Ausführen eines Codes wiederum das
Ergebnis der Abfrage (Datenbasis tausende Datensàtze einer Access-Datenbank)
ermittelt werden muß.

Ich habe mir überlegt, beim Öffnen der Anwendung die Daten in einen String zu
speichern, um in dann weiterverwenden zu können.

Ich habe eine öffentliche Variable strKDID definiert, die beim Form_Load
belegt wird

Dim strKdID As String 'string mit dem Kundennummern, für die es Barcodes
gibt

'Belegung von strKdid
strSQL2 = "SELECT BarcodesVereine.ID From BarcodesVereine Where
(((BarcodesVereine.ungültig) = False)) GROUP BY BarcodesVereine.ID;"

Set rs = dbsDataBase.OpenRecordset(strSQL2)
rs.MoveFirst

Do Until rs.EOF
strKdID = strKdID & Str(rs("ID")) & ", "
rs.MoveNext
Loop
strKdID = Mid(strKdID, 1, Len(strKdID) - 1)
'Debug.Print strKdID


Verwendet werden soll diese befüllte Variable für folgende Weiterverwendung
im Prüfcode beim Einlesen eines Barcodes:

If Not ValueIn(Left(txtBarcode, 6), "232203", "232204", "252608", "232103")
Then wobei eben die Anzahl der Parameter verànderlich sein soll.

Das Problem dabei ist aber, dass der String scheinbar nicht der benötigten
Syntax entspricht.
Ich bekomme im Direktffenster als Ergebnis der Schleife

232203, 232204, 252608, 232103



Ich habe jetzt mal kurz ein neues Std-Exe-Projekt gestartet und bei
Form_Load Debug.Print "Hallo" aufgerufen -> Was meinste, sind die
Anführungszeichen dabei, oder nicht? SCNR

wobei ich vermute, dass die "" " fehlen, oder funktioniert es mit einem
String gar nicht, weil

ValueIn(aValue, ParamArray Paras() as Variant) As Boolean definiert
ist?



Setze in deinem Loop für den Recordset einfach mal ein Stop (F9) und
bewege die die Maus über die Variable strKdID, dann wirst du sehen, ob
das IsNumeric() = True, oder IsNumeric() = False ist ...
außerdem: du hast die Variable strKdID als As String festgelegt, was
meinst du was es dann für ein Datentyp ist?
Du kannst ja mal ausprobieren ->
Dim lngVal as Long
Dim strVal as String

lngVal = 10000404003
strVal = lngVal

des weiteren:
mir ist nicht vollkommen klar wie du "ParamArray Paras() as Variant"
einliest.
Du hast also einen String der mit mit Kommata quasi unterteilt ist, ja?
Wenn, dann nutze vielleicht mal Split()
Dim arrayStr() as String
Dim i as Integer
arrayStr() = Split(strKdID)
dann hast du einzelne Werte eines Strings (fàngt bei 0 an) als String.
For i = 0 To UBound(arrayStr)
Next i
Damit kannst du dein Paras-Array füllen. Auch wenn Paras als Variant
definiert ist bleibt es trotzdem ein String. Das kannst du feststellen,
wenn du die einzelnen Werte von Paras prüfst mit If VarType(Paras(x)) =
vbString then ...

Wie müßte ich dann das Ergebnis der Schleife ausgeben, bzw. die öffentliche
Variable definieren: vielleicht strKDID as Variant ??

Dim strKdID As Variant bringt aber auch kein richtiges Eergebenis

Danke
Michael

VB 6 SP5, WIN XP Pro SP3



Mit Gruß
Heinz-Mario Frühbeis

Ähnliche fragen