ich wende mich mit einem Problem an Euch, das mich (uns) jetzt schon seit längerem beschäftigt.
Wir haben immer wieder Probleme beim Auslesen von MS SQL-Datenbanken. Insbesondere wenn die Workareas
eine gewisse Größe erreichen. Wir arbeiten nun schon seit Jahren mit div. Workarrounds um den Problemen
in irgendeiner Art und Weise aus dem Weg zu gehen, gelangen aber jetzt an einem Punkt wo das nicht mehr funktioniert.
Ich habe bereits ähnliche Probleme im Forum gefunden, allerdings keien Lösung die 100%ig passt.
Wir grenzen mit Select und Views die Abfragen meist schon soweit ein, dass die entstehenden Workareas nicht mehr allzu
umfangreich werden.
Code: Alles auswählen
USE "select CUSTACCOUNT,DELIVERYDATE,QTY,ITEMID,NAME from TRAB_Auftragsstatistik where DELIVERYDATE >= '"+ERSTERTAG+"' and DELIVERYDATE <= '"+LETZTERTAG+"' and not DELIVERYCOUNTRYREGIONID = '' and PRIMARYVENDORID='66828';" ALIAS "VKSTAT" VIA "ODBCDBE" READONLY NEW
DO WHILE ! EOF()
FOR X = 1 To Len(einArray)
IF VKSTAT->CUSTACCOUNT == einArray[x]
//Mach irgendwas
ENDIF
NEXT
DBSKIP(+1)
ENDDO
USE
und eben den 5 gen. Spalten. Das Programm scheitert
bei der IF-Abfrage, da meldet XPPERROR entweder z. B. "Fehler
beim Lesen" oder "Falscher Datentyp" (U). Die Tabelle ist randvoll
mit Daten, es gibt keine leeren Felder.
Die Fehlermeldung ist abhängegig davon ob man VKSTAT->CUSTACCOUNT oder
FIELDGET(1) verwendet. Stellt man vor das IF ein BROWSE() läuft das Programm
1a durch, d. h. der Fehler passiert nicht. Nach meiner Einschätzung
dauert es ein bisschen, bis bei der IF-Abfrage ein Wert zurück gemeldet wird
und XBase geht von einem NULL aus. Kennt wer dieses Problem, bzw. kennt eine
Lösung?
Gruß
Berny