Einzelnen Beitrag anzeigen

Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#1

Nur bestimmte Schulklassen (Datensätze) auslesen

  Alt 24. Nov 2007, 15:44
Datenbank: dBase • Zugriff über: TQuery
Ich möchte, dass aus meiner *dbf nur bestimmte Klassen ausgelesen werden.
Diese werden in der Spalte BETKLA in der Form 'R5a=R5b=' etc gespeichert.
Um nun den Abteilungsplan ausgeben zu können, müssen die nötigen Klassen aus der Datei ABTxxx.txt abgerufen werden.
Inhalt z.B.
Code:
H5a
H6a
H6b
H7a
Diese Klassen müssen nun so zusammengefügt werden, dass diese in eine WHERE-Bedingung passen.
Dafür habe ich folgende Funktion benutzt:

Delphi-Quellcode:
function GetAbtString1(myFile:String): String;
var
  klasse: String;
  s: String;
  f: Textfile;
begin
  AssignFile(f,myFile);
  Reset(f);

  while not eof(f) do begin
   ReadLn(f,s);
   klasse:=klasse+','+'"'+StringReplace(s,' ','',[rfReplaceAll])+'="';
  end;

  CloseFile(f);

  Result:=klasse;
end;
Übergabe an Query:

Delphi-Quellcode:
  if FileExists(path+'\ABT'+abt+'.txt') then begin
   abteilung:=GetAbtString1(path+'\ABT'+abt+'.txt');
   abteilung:=' AND BETKLA IN ('+StringReplace(abteilung,',','',[])+')';
  end
  else
   abteilung:='';
Problem: manchmal kommen da völlig unlogische Dinge bei raus! Der Query liefert teilweise Ergebnisse, die gar nicht gefordert sind (z.B. irgendwelche Daten, die vom Datum her lange zurückliegen und nicht mit der Abfrage übereinstimmen).

Delphi-Quellcode:
  Query1.Close;
  Query1.SQL.Text := 'SELECT * FROM "VT'+sj+'"';
  Query1.SQL.Add('WHERE NOT S="M" AND NOT S="E" '+abteilung+' AND NOT S="H" AND DATUM=:today');
  Query1.SQL.Add('ORDER BY DATUM DESC,'+order1);
  Query1.ParamByName('today').Value := today;
  Query1.Open;
Sven Kannenberg
  Mit Zitat antworten Zitat