AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi [Excel] Datei Lesen / Schreiben / Ändern - TADODataSet
Thema durchsuchen
Ansicht
Themen-Optionen

[Excel] Datei Lesen / Schreiben / Ändern - TADODataSet

Ein Thema von Andi1985 · begonnen am 30. Aug 2007 · letzter Beitrag vom 3. Sep 2007
Antwort Antwort
Benutzerbild von Andi1985
Andi1985

Registriert seit: 11. Mai 2007
Ort: NRW
116 Beiträge
 
Delphi 2006 Enterprise
 
#1

[Excel] Datei Lesen / Schreiben / Ändern - TADODataSet

  Alt 30. Aug 2007, 11:42
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');
  Mit Zitat antworten Zitat
Benutzerbild von Andi1985
Andi1985

Registriert seit: 11. Mai 2007
Ort: NRW
116 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: [Excel] Datei Lesen / Schreiben / Ändern - TADODataSet

  Alt 30. Aug 2007, 12:49
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 = '22022then
     begin
        Excel.Cells[i, 8].Value := 'X';
        loop := false;
     end;

     i := i + 1;
  end;

  Excel.ActiveWorkBook.Save;
  Excel.ActiveWorkbook.Close;
  Excel.Quit;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: [Excel] Datei Lesen / Schreiben / Ändern - TADODataSet

  Alt 30. Aug 2007, 13:33
Hallo,

ADO mit Excel geht - schau mal hier: ado edit post aktualisierbare abfrage

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Andi1985
Andi1985

Registriert seit: 11. Mai 2007
Ort: NRW
116 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: [Excel] Datei Lesen / Schreiben / Ändern - TADODataSet

  Alt 30. Aug 2007, 14:23
vielen dank.

close...
  Mit Zitat antworten Zitat
Benutzerbild von Andi1985
Andi1985

Registriert seit: 11. Mai 2007
Ort: NRW
116 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: [Excel] Datei Lesen / Schreiben / Ändern - TADODataSet

  Alt 31. Aug 2007, 12:30
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:
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]

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;
  Mit Zitat antworten Zitat
Benutzerbild von Andi1985
Andi1985

Registriert seit: 11. Mai 2007
Ort: NRW
116 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: [Excel] Datei Lesen / Schreiben / Ändern - TADODataSet

  Alt 31. Aug 2007, 14:29
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 ? :/
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: [Excel] Datei Lesen / Schreiben / Ändern - TADODataSet

  Alt 31. Aug 2007, 18:31
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
  Mit Zitat antworten Zitat
Benutzerbild von Andi1985
Andi1985

Registriert seit: 11. Mai 2007
Ort: NRW
116 Beiträge
 
Delphi 2006 Enterprise
 
#8

Re: [Excel] Datei Lesen / Schreiben / Ändern - TADODataSet

  Alt 3. Sep 2007, 10:54
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 =)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz