Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
970 Beiträge
 
Delphi 6 Professional
 
#9

AW: SQL-Suchergebnis nachträglich noch mal einschränken

  Alt 2. Sep 2019, 10:10
Hmm..

Unter MS-SQL kannst du auf die Existenz von Dateien prüfen:
dbo.xp_fileexist @path, @result

https://www.tech-recipes.com/rx/3052...n-a-directory/

Das nachträglich, also lokal, zu machen, kommt mir unstimmig vor. Besser der Server macht das.
Dies ist aber nur möglich, wenn der "SQL-Server" Zugriff auf das Verzeichnis hat und er muss dann den Pfad zur Datei nicht aus Anwendungssicht, sondern aus SQL-Server-Sicht im Query angeben.

Somit wird dies wohl nur funktionieren, wenn die Dateien eventuell auch direkt auf dem gleichen Server liegen, wie der SQL-Server selber, denn dieser läuft meistens als LocalSystem, ohne Zugriff auf (Domain-) Netzwerklaufwerke.

Hier würde wohl, wie von Schokohase erwähnt, besser mit einem CalcField und der Prüfung im OnCalcFields zurückgegriffen werden, da dieses dann aus Sicht und mit dessen Zugriffsrechten der Applikation erfolgt.

Die Lösung mit Edit/Post ist zu vermeiden, da hier direkt eventuell Einträge auf der Datenbank geändert würden, da hierzu ein DB-Feld benötigt wird.

Einfach im OnCalcField:
Delphi-Quellcode:
procedure TForm1.dbquSQLCalcFields(DataSet: TDataSet);
begin
  DataSet.FieldByName('FileExists').AsString :=
    BoolToStr(FileExists(FFilePath + DataSet.FieldByName('FileName').AsString), True);
end;
Dann auf dem Query z.B. den Filter "FileExists <> 'True'" setzen.

Edit:Anstelle eines StringFeldes solltest Du dann aber eher ein Boolean oder nummeric Feld für 'FileExists' nehmen (Oben ist es nur als Beispiel angegeben.. ).
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)

Geändert von HolgerX ( 2. Sep 2019 um 10:19 Uhr)
  Mit Zitat antworten Zitat