Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 249148 (10584)
  Suchen
 Zurück zur Übersicht
 AutorThema: SQL und ASCII-Datenbanken via ODBC
Stefan Schnell
Datum:27.02.02 10:03 Antwortenals Email verschicken (mail@stschnell.de) 


Hallo Community,
stehe vor folgendem Problem, bin dabei via ODBC und SQL ASCII-Datenbanken abzufragen. Dafür habe ich folgendes geschrieben:

'*Variablen Deklaration**************************************

Declare SQLIn%

'*Hauptprogramm**********************************************

SQLIn% = @SQLInit("DSN=MBS")

@MessageBox(@Str$(SQLIn%), "SQLInit", 64)

SQLExec "SELECT ARTIKELNR FROM FERTKOPF.TXT", 1

@MessageBox(@Str$(&SQLCount), "SQLCount", 64)

@ListBox$("Fertigungskopf", 7)

SQLDone

'*Ende*******************************************************

End

Das funktioniert auch wunderbar. Wenn ich jedoch die Zeile SQLExec "SELECT ARTIKELNR FROM FERTKOPF.TXT", 1
durch SQLExec "SELECT * FROM FERTKOPF.TXT", 1 ersetze, so stürzt Profan mit folgender Fehlermeldung ab:

Anwendungsfehler
Exception EAccessViolation im Modul profan.exe bei 0001EBD4
Zugriffsverletzung bei Adresse 0041FD4C lesen von Adress 00508000

Ein Datensatz dieser Datenbank ist 1942 Zeichen lang (incl. abschließendem CrLf) und besteht aus 208 Datenfeldern. Wenn ich den Befehl mit SQLExec "SELECT * FROM FERTKOPF.TXT", 2 aufrufe, dann sieht die Datei SQL.DAT so aus, dass nur der Kopf erscheint, bis Feld 169, dieser Feldname wird dann 30 mal wiederholt (die Datei ist dann 4480 Bytes groß) und dann erscheint die o. g. Fehlermeldung.

Sind vielleicht irgendwelche Datensatzlängen oder maximale Feldanzahl oder so bei Profan zu beachten, bei der Bearbeitung von ASCII-Datenbanken via ODBC und SQL?

Bei wem ist ähnliches Problem auch schon mal aufgetreten und / oder wer hat eine Lösung dafür?

Danke für Eure Antworten.
Tschüss
Stefan Schnell



Roland G. Hülsmann
Datum: 27.02.02 16:14 Antwortenals Email verschicken (rgh-soft@t-online.de) 


Hallo Stefan,

hier liegt in der Tat eine Beschränkung vor. Die maximale Spaltenzahl bzw. Feldzahl ist 128! Die Tabelle darf natürlich mehr Felder haben, aber es dürfen nicht mehr in der Abfrage vorkommen.

(Daß hier ein Programmabbruch ohne ordentliche Fehlermeldung erfolgt, ist natürlich eine Unterlassungssünde meinerseits. SORRY!)

Eine Lösung wäre die Anfrage in zwei (oder mehrere) Anfragen aufzusplitten, die jeweils weniger als 129 Felder haben. Das ist natürlich ggf. eine arge Tipparbeit, wenn die Feldnamen keinem Schema folgen und der Abfragestring nicht per Programm erzeugt werden kann.

Gruß
Roland




 Zurück zur Übersicht