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.
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;