![]() |
[Excel] Datei Lesen / Schreiben / Ändern - TADODataSet
Hallo,
ich möchte eine Excel Datei öffnen, auslesen und ein Feld verändern und danach wieder speichern. Das ganze versuche ich per TADODataSet, allerdings kann ich das Feld nicht editieren. Bei DataSet.Edit tritt ein Fehler auf, lass ich diese Zeile weg, tritt der Fehler auf: "Datenmenge weder im Editir- noch im EinfügeModus" Ein zweites Problem wäre das beim Speichern des DataSets irgendwie nur Müll am Schluss in Excel rauskommt (test.xls). Desweiteren weiss ich leider nicht wie ich per Update Query das lösen sollte... Ich kann ja schlecht machen "update [mini0802$] set Field7 = 'X' where Field1 = '22022'". bitte um Hilfe, mfg Moggy
Delphi-Quellcode:
DataSet.Connection := myConnection;
DataSet.CommandText := 'select * from [mini0802$]'; DataSet.Active := True; while (DataSet.Eof = false) do begin if (DataSet.Fields[0].Text = '22022') then begin ShowMEssage(DataSet.Fields[0].Text + ' - ' + DataSet.Fields[6].Text); DataSet.Edit; DataSet.Fields[7].Text := 'X'; end; DataSet.Next; end; DataSet.SaveToFile('test.xls'); |
Re: [Excel] Datei Lesen / Schreiben / Ändern - TADODataSet
ich habe es jetzt so gelöst, gibt es auch eine Lösung mit TADODAtaSet?
Delphi-Quellcode:
Excel := CreateOleObject('Excel.Application');
Excel.Workbooks.Open('test.xls'); loop := true; i := 1; while loop do begin if Excel.Cells.Item[i,1].Value = '22022' then begin Excel.Cells[i, 8].Value := 'X'; loop := false; end; i := i + 1; end; Excel.ActiveWorkBook.Save; Excel.ActiveWorkbook.Close; Excel.Quit; |
Re: [Excel] Datei Lesen / Schreiben / Ändern - TADODataSet
|
Re: [Excel] Datei Lesen / Schreiben / Ändern - TADODataSet
vielen dank.
close... |
Re: [Excel] Datei Lesen / Schreiben / Ändern - TADODataSet
ich habe doch noch ein Problem...
und zwar schreibt er nur einen Datensatz im Programmablauf in die Excel Datei... alle darauffolgenden gehen verloren... wieso ist das so ? ist die Datei beim zweiten mal schreibgeschützt ? Die nachfolgenden Zeilen können mehrmals während des Programmablaufs ausgeführt werden... ConnectionString:
Delphi-Quellcode:
[/delphi]
myConnection := TADOConnection.Create(nil);
DataSet := TADODataSet.Create(nil); myConnection.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source=' + sPath + 'test.xls;' + 'Mode=ReadWrite;' + 'Extended Properties="Excel 8.0;HDR=Yes";' + 'Persist Security Info=False';
Delphi-Quellcode:
DataSet.Connection := myConnection;
DataSet.CommandText := 'SELECT * FROM [test$]'; DataSet.Open; DataSet.First; while (DataSet.Eof = false) do begin if (DataSet.Fields[0].Text = txtPErsonalNummer.Text) then begin DataSet.Edit; DataSet.Fields[7].Text := 'X'; DataSet.Post; end; DataSet.Next; end; DataSet.Close; myConnection.Close; |
Re: [Excel] Datei Lesen / Schreiben / Ändern - TADODataSet
nachdem der quellcode oben durchgelaufen ist, passiert es komischerweise ab und zu nur, wenn ich die datei manuell öffne
das er mir sagt "Zugriff verweigert", irgendwas scheint da nicht zu stimmen bei dem dataset update ? :/ zu 75% ist es aber so das ich die datei öffnen kann und er alle daten schreibt... , es ist halt nur ab und zu wieso ? :/ |
Re: [Excel] Datei Lesen / Schreiben / Ändern - TADODataSet
Hallo,
dein gezeigter Code scheint mir nicht für das Problem verantwortlich zu sein. Wie lange bleibt der Zugriff denn gesperrt? Wenn der Zugriff alleine durch Abwarten irgendwann wieder möglich ist, dann könnten Aufräumarbeiten noch nicht abgeschlossen sein. Besteht ein Zusammenhang zwischen der Anzahl der geänderten Datensätze und der Sperrdauer? Freundliche Grüße |
Re: [Excel] Datei Lesen / Schreiben / Ändern - TADODataSet
vielen dank, nach einer gewissen Suchzeit habe ich herausgefunden das an einer bestimmten Stelle die Datei nicht
vernüpftig wieder geschlossen wird. Der Thread kann nun wirklich geschlossen werden, bevors peimlich wird =) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 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