von crush » Mi, 28.03.2012 09:48
Klappt alles wunderbar, nur bekomme ich eine Fehlermeldung: "Unzulässiger Wert oder Datentyp: Überlauf" wenn ich sehr viele Spalten an das Array übergebe:
Code: Alles auswählen
If Not IsNull(Kraftstoff) Then
While Kraftstoff.next
j = j+1
MyArray2(j) = array( CInt(Kraftstoff.getString(1)), CInt(Kraftstoff.getString(2)), CInt(Kraftstoff.getString(3)), CInt(Kraftstoff.getString(4)), CInt(Kraftstoff.getstring(5)), CInt(Kraftstoff.getstring(6)), CInt(Kraftstoff.getstring(7)), CInt(Kraftstoff.getstring(8)), CInt(Kraftstoff.getstring(9)), CInt(Kraftstoff.getstring(10)), CInt(Kraftstoff.getstring(11)), CInt(Kraftstoff.getstring(12)), CInt(Kraftstoff.getstring(13)), CInt(Kraftstoff.getstring(14)), CInt(Kraftstoff.getstring(15)))
Wend
redim Preserve MyArray2(j)
End If
Ist dem Compiler die Zeile zu lang, denn bei mir stehen alle hintereinander. Habe in dem Handbuch keinen Hinweis gefunden, wie ich den Code auf mehrere Zeilen verteilen kann. Gibt es neben .getString auch sowas wie getValue oder getInteger, habe schon einige probiert, aber diese Methoden scheint es für das Resultset nicht zu geben.
EDIT: Die Fehlermeldung hat sich erledigt: Eine der Spalten aus der DB-Tabelle war kein Integer. CDbl statt CInt sollte die Lösung, da habe ich aber das Problem, dass das Komma als Dezimaltrennzeichen nicht erkannt wird, und aus 52,50 wird 5250...
EDIT: Ich glaube ich weiß auch warum, denn wenn ich nur getString für diese Spalte ausgeben lasse, ohne das CDbl, dann steht da "52.50" mit "Punkt" statt "Komma", obwohl in Base die Abfrage in der Tabelle ein "52,20" mit "Komma" ausgibt. Das liegt dann wahrscheinlich an der Ländereinstellung. Kann man das bei einer Konvertierung des Strings berücksichtigen?
EDIT: OK selbst gefunden, Val(...getString) statt der ganzen anderen bringt den Erfolg.
Klappt alles wunderbar, nur bekomme ich eine Fehlermeldung: "Unzulässiger Wert oder Datentyp: Überlauf" wenn ich sehr viele Spalten an das Array übergebe:
[code]If Not IsNull(Kraftstoff) Then
While Kraftstoff.next
j = j+1
MyArray2(j) = array( CInt(Kraftstoff.getString(1)), CInt(Kraftstoff.getString(2)), CInt(Kraftstoff.getString(3)), CInt(Kraftstoff.getString(4)), CInt(Kraftstoff.getstring(5)), CInt(Kraftstoff.getstring(6)), CInt(Kraftstoff.getstring(7)), CInt(Kraftstoff.getstring(8)), CInt(Kraftstoff.getstring(9)), CInt(Kraftstoff.getstring(10)), CInt(Kraftstoff.getstring(11)), CInt(Kraftstoff.getstring(12)), CInt(Kraftstoff.getstring(13)), CInt(Kraftstoff.getstring(14)), CInt(Kraftstoff.getstring(15)))
Wend
redim Preserve MyArray2(j)
End If[/code]
Ist dem Compiler die Zeile zu lang, denn bei mir stehen alle hintereinander. Habe in dem Handbuch keinen Hinweis gefunden, wie ich den Code auf mehrere Zeilen verteilen kann. Gibt es neben .getString auch sowas wie getValue oder getInteger, habe schon einige probiert, aber diese Methoden scheint es für das Resultset nicht zu geben.
EDIT: Die Fehlermeldung hat sich erledigt: Eine der Spalten aus der DB-Tabelle war kein Integer. CDbl statt CInt sollte die Lösung, da habe ich aber das Problem, dass das Komma als Dezimaltrennzeichen nicht erkannt wird, und aus 52,50 wird 5250...
EDIT: Ich glaube ich weiß auch warum, denn wenn ich nur getString für diese Spalte ausgeben lasse, ohne das CDbl, dann steht da "52.50" mit "Punkt" statt "Komma", obwohl in Base die Abfrage in der Tabelle ein "52,20" mit "Komma" ausgibt. Das liegt dann wahrscheinlich an der Ländereinstellung. Kann man das bei einer Konvertierung des Strings berücksichtigen?
EDIT: OK selbst gefunden, Val(...getString) statt der ganzen anderen bringt den Erfolg.