Werte von MS SQL-DBs werden nicht korrekt ausgelesen

alles zum Microsoft SQL Server

Moderator: Moderatoren

Antworten
Berny
Rookie
Rookie
Beiträge: 10
Registriert: Fr, 21. Aug 2009 15:22

Werte von MS SQL-DBs werden nicht korrekt ausgelesen

Beitrag von Berny »

Hallo Forum,

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
Der USE öffnet eine Tabelle mit ungefähr 17000 Zeilen
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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Werte von MS SQL-DBs werden nicht korrekt ausgelesen

Beitrag von AUGE_OHR »

hi,
Berny hat geschrieben:Insbesondere wenn die Workareas eine gewisse Größe erreichen.
...
Der USE öffnet eine Tabelle mit ungefähr 17000 Zeilen und eben den 5 gen. Spalten.
zu deim SQL Problem kann ich leider nichts sagen, aber was meinst du mit "die Workareas eine gewisse Größe erreichen" ?

Bei 17000 Zeilen/ 5 Spalten hast du gerade mal 85Kb das sollte kein "Problem" sein.
Als Vergleich 15803 Zeilen / 10 Spalten als 2-Dim Array lässt sich "in einem Rutsch" mit einer gleich grössen Excel Tabell "füllen". ( < 1Sec. )

... kann man ein SQL "Ergebniss" nicht auch gleich in ein 2-Dim Array "füllen" ?
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Werte von MS SQL-DBs werden nicht korrekt ausgelesen

Beitrag von Tom »

Hallo, Berny.

Ich habe mich mal eine Zeit lang mit SQL-Zugriffen über die ODBCDBE herumgeschlagen und erinnere mich an ähnliche Phänomene. Nie passierte das, was eigentlich zu erwarten war (und das muss nicht einmal an der ODBCDBE gelegen haben). Deshalb habe ich an solchen Stellen auf Boris Borzics SQLExpress umgesattelt, das exzellente Dienste leistet. Ist auch nur unwesentlich komplizierter. :wink:

http://www.sqlexpress.net/menu.htm

Ergänzung: Ich habe allerdings auch gerade entdeckt, dass ich noch zwei Ablgeichsroutinen irgendwo habe, die per ODBCDBE Tabellen aus meiner Anwendung mit denen eines SQL-Servers vergleichen (Sonderprogrammierung für einen Kunden). Ich weiß, um ehrlich zu sein, nicht, ob das noch benutzt wird, aber es hat auf jeden Fall mal funktioniert.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Werte von MS SQL-DBs werden nicht korrekt ausgelesen

Beitrag von brandelh »

Hi,

ich habe nach einigen Versuchen von ODBCDBE auf SQLExpress() umgestellt und damit bisher noch
jede Tabelle geladen (Versuchsweise mit 300.000 Datensätzen in der DB - allerdings weiß ich nicht mehr
wie groß die Rückgabemenge war).

Es gibt davon eine Testversion. Ich würde mir die holen und das Programm darauf umstellen um zu sehen ob
es stabiler läuft ... lieber ein Ende mit Schrecken, als ein Schrecken ohne Ende 8)
Gruß
Hubert
Antworten