![]() |
Schreiben in *.txt
Hallo alle zusammen, ich hoffe Ihr könnt mir weiterhelfen.
Ich habe folgendes Problem, über folgenden Procedure speichere ich den Inhalt der der Query in der Textdatei.
Delphi-Quellcode:
Nun habe ich das Problem, das ich die Procedure nur 1x aufrufen kann und die Daten in der Textdatei speichern kann. Wenn ich einen anderen Datensatz auswähle, wird der Inhalt nicht überschrieben. Dazu muß ich dann erst die Textdatei von Hand öffnen und wieder schließen.
AssignFile(f, 'SerienTxt.txt');
rewrite(f); Form1.Query1.SQL.Clear; Form1.Query1.SQL.Add('Select * FROM "'+Pfad+'" WHERE Name ='''+DBFirma.Text+''''); Form1.Query1.Active:= True; Form1.Query1.First; for i:= 0 To Form1.Query1.FieldCount-1 Do Write(f, Form1.DBGrid1.Fields[i].Fieldname+'#'); Writeln(f,''); While Not Form1.Query1.Eof DO begin For i:= 0 To Form1.Query1.FieldCount-1 Do Write(F, Form1.Query1.Fields[i].AsString+'#'); if Form1.Query1.FieldCount-1 = Form1.Query1.FieldCount-1 Then Writeln(f,''); Form1.Query1.Next; end; CloseFile (f); Form1.Query1.SQL.Clear; Form1.Query1.SQL.Add('Select * FROM "'+Pfad+'"'); Form1.Query1.Active:= True; Woran liegt das? [edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/delphi] |
Hallo Albi,
bekommst Du eine Fehlemeldung? Wird die Funktion, Procedure vielleicht nur einmal angesprungen? bye |
Hallo Abli,
du musst noch ein Query1.Close hinzufügen, bevor du mit Clear und Add ein neues Statement einfügst. Übrigens würde ich Query1.Open und nicht Query1.Active := True verwenden. |
Ne, das war auch nicht die Lösung. Habe jetzt alles geändert. Hab oben ja was falsches geschrieben, ich muß nicht die Textdatei öffnen und wieder schließen sondern die ganze Anwendung.
Ich benutze diese Procedure für einen Serienbrief. Ich wählen (ersteinmal zum Testen) einen Datensatz aus, der mir dann in das Word Doc eingefügt wird. Zitat:
Ich habe jetzt mal das CloseFile weggenommen, da macht er es, nur wird dann nicht alles in die Textdatei geschrieben. Muß ich noch irgendwas freigeben? Speicher oder so? |
Hallo Albi,
setze doch einfach einen Breakpoint auf das erste Statement der Procedure und trace sie, dann siehst Du doch was passiert. bye PS: Mach mal aus dem CloseFile ein System.CloseFile |
Sorry für die Frage aber wo soll ich das setzten in der Unit? :?:
|
Diese Procedure heißt ExportInTxt, wenn diese in einer Procedure aufrufe müßte das doch so gehen. Ich habe es so gemacht:
Code:
begin
ExportInTxt; WordApplication1.Disconnect; if OpenDialog1.Execute then FileName:=OpenDialog1.FileName |
Hallo Albi,
nein in deinem Quellcode. Cursor in die Zeile Zitat:
bye PS: Das Programm starten nicht vergessen |
Hab ich getan, mir ist da aber nicht aufgefallen. Das heißt ich versteh auch noch nicht soviel von dem ganzen aber jeder fängt ja mal klein an.
Er ist einfach jeden Schritt für Schritt durch Prog gerant und nur bei der Word rumgemeckert, das ihm die Datenquelle fehlt aber daran kann es ja nicht liegen. |
Hi MrSpock,
kurze Zwischenfrage : Zitat:
Code:
zu setzen ? Meinst Du vieleicht für OOP-Zwecke wäre das besser?
Active := true;
|
Hallo Hansa,
ja, ich meine aus OOP Gründen. Methoden, die zum Setzen von Variablen benutzt werden, sollten immer vorgezogen werden, anstatt den Variablen den Wert direkt zuzuweisen. Open könnte ja in einer abgeleiteten Klasse überschrieben werden und noch etwas mehr tun, als die Eigenschaft Active aufg True zu setzen. |
Thx, wollte auf Nr. sicher gehen, in letzter Zeit habe ich mir das auch angewöhnt, vorerst brauch ich es zwar nicht, aber wer weiß. Habe auch nur das active vorher benutzt, weil es schon funktioniert hat, vor dem open. :mrgreen:
|
Ich bins nochmal, ich habe das ganze jetzt mal ausprobiert ohne die Procedure in einer anderen aufzufrufen. Also einfach nur alleine und siehe da, es geht, da muß ich die Anwendung nicht neu starten. Dann liegt es definitiv an dem Aufruf in der anderen Procedure. Kann da etwas falsch machen, muß man auf was bestimmtes achten?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz