Einzelnen Beitrag anzeigen

hgiel

Registriert seit: 4. Apr 2005
61 Beiträge
 
#3

Re: Ascii-Datei ist fertig geschrieben Test

  Alt 21. Apr 2005, 08:33
ich starte in meinem Programm per ShellExecute eine DOS-Batch, in der eine Oracle-SQL-Abfrage gestartet wird


// Oracle-Auswertung starten
ExecuteShellCommand(tmp_pfad+'\diff.bat',true); // true -> Fenster unsichtbar!!!


Das SQL-Skript welches per Batchaufruf gestartet wird und in welchem per SPOOL-Befehl die ASCII-Datei erzeugt wird sieht so aus:

SQL-Code:
spool c:\test.txt

set linesize 120

set pagesize 0

select dabr.dinr$, dabr.dabf$, dabr.tchf$, sum (dabr.umsatzgpr#),
diff.dtdf$,sum (diff.vk), diff.arti$,diff.text, diff.kommentar
from vkabdabr dabr, vkabddff diff
where dabr.dabf$ between '01.01.05and '31.01.05and
dabr.dabr$$ between '1000000000and '1099999999and
diff.dabr$=dabr.dabr$$
group by dabr.dinr$, dabr.dabf$, dabr.tchf$, diff.dtdf$,diff.dffa$, diff.arti$, diff.text, diff.kommentar
order by dabf$, dinr

spool off

exit // Oracle-Instanz wird beendet und ASCII-Datei C:\test.txt sollte geschrieben sein?!
anschließend frage ich - zur Zeit - mit der Funktion

if not IsFileInUse(C:\TEST.TXT) then showmessage('Auswertung ist beendet!!!'); den Status der Ascii-Datei ab. Leider wird immer SOFORT die Meldung - Auswertung ist beendet!!! - ausgegeben. Die ASCII-Datei wurde anelegt ist aber noch nicht voll und somit sollte die Meldung erst ein wenig später erscheinen!

Die IsFileInUse-Funktion lautet:

Delphi-Quellcode:
function IsFileInUse(fName : string) : boolean;
var
   HFileRes : HFILE;
begin
   Result := false;
   if not FileExists(fName) then
      exit;
   HFileRes := CreateFile(pchar(fName), GENERIC_READ or GENERIC_WRITE,
               0 {this is the trick!}, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
   Result := (HFileRes = INVALID_HANDLE_VALUE);
   if not Result then
   CloseHandle(HFileRes);
end;
ich hoffe, daß ich mich nicht zu kompliziert ausgedrückt habe und du es verstehen konntest!

[edit=r_kerber]SQL- und Delphi-Tags eingefügt. Mfg, r_kerber[/edit]
  Mit Zitat antworten Zitat