AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADO | Edit | Post - aktualisierbare Abfrage
Thema durchsuchen
Ansicht
Themen-Optionen

ADO | Edit | Post - aktualisierbare Abfrage

Ein Thema von cltom · begonnen am 24. Jul 2006 · letzter Beitrag vom 1. Aug 2006
Antwort Antwort
Seite 2 von 3     12 3      
marabu

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

Re: ADO | Edit | Post - aktualisierbare Abfrage

  Alt 25. Jul 2006, 22:07
Leider kann ich das mangels Excel auf meiner Maschine nicht überprüfen. Wenn die Treiber auf dem aktuellen Stand sind, dann vermute ich einen Fehler im ConnectionString. Kannst du den mal einstellen?

marabu
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#12

Re: ADO | Edit | Post - aktualisierbare Abfrage

  Alt 25. Jul 2006, 22:48
Ich habe es mittlerweile auf einem zweiten Rechner probiert, dito. Hier einfach der betreffende Teil:

Delphi-Quellcode:
  Datasource1.DataSet := ADODataset1;
  ADODataset1.CommandType := cmdTable;
  ADODataset1.CommandText := tablename;
  ADODataset1.Connection := ADOConnection1;
  ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+filename+';ReadOnly=False;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";Persist Security Info=False';
  ADOConnection1.LoginPrompt := False;
  ADODataset1.Active := True;

with ADODataset1 do
begin
  Locate('xyz', 'abc',[]);
  Edit;
  FieldValues['lnm'] := 99;
  Post;
end;
Danke für Hilfe!
  Mit Zitat antworten Zitat
marabu

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

Re: ADO | Edit | Post - aktualisierbare Abfrage

  Alt 26. Jul 2006, 08:07
Guten Morgen,

bei mir geht es so:

Delphi-Quellcode:
begin
  with TADODataset.Create(self) do
  begin
    CommandType := cmdTableDirect;
    CursorType := ctStatic;
    LockType := ltPessimistic;
    ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'
                      + 'Data Source=.\Mappe1.xls;'
                      + 'Mode=ReadWrite;'
                      + 'Extended Properties="Excel 8.0;HDR=Yes";'
                      + 'Persist Security Info=False';
    CommandText := 'SELECT * FROM [Tabelle1$A1:C5]';
    Open;
    Locate('a', '3', []);
    Edit;
    FieldValues['c'] := 123;
    Post;
    Close;
    Free;
  end;
end;
Da sind schon ein paar Unterschiede - kannst du sie sehen?

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

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: ADO | Edit | Post - aktualisierbare Abfrage

  Alt 26. Jul 2006, 09:34
Umfasse mal den Dateinamen mit ", wenn ein Leerzeichen im Dateinamen vorkommt (z.B. \Eigene Dateien\...) bringt das ADO mächtig durcheinander...

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#15

Re: ADO | Edit | Post - aktualisierbare Abfrage

  Alt 30. Jul 2006, 10:53
Hej!

Danke für die Antworten. Irgendwie funktioniert es trotzdem nicht.

Mit ReadOnly=False; im Connection String kommt immer:
'Installierbares ISAM nicht gefunden', unabhängig ob ich cmdTable oder cmdTableDirect nehme.

Mit Mode=ReadWrite im Connection String kommt:
'Tabellenname nicht gefunden' bei cmdTableDirect
und
'Operation muss eine aktualisierbare Abfrage enthalten' bei cmdTable;

Keinen Unterschied macht es, wenn ich den Dateinamen in Anführungszeichen setze. Habe mal auch testweise eine Access-Tabelle gemacht, mit der funktioniert es auf Anhieb. Lese-Zugriff auf diese Excel-Tabelle geht auch tadellos.

Hab keine Idee, woran das liegt. Habe mal ein simples Testprojekt angehängt, vielleicht hat jemand Zeit, zu schauen, ob es bei ihm geht.

danke im Voraus, ligrü
tom
Angehängte Dateien
Dateityp: zip test_178.zip (2,7 KB, 15x aufgerufen)
  Mit Zitat antworten Zitat
marabu

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

Re: ADO | Edit | Post - aktualisierbare Abfrage

  Alt 30. Jul 2006, 11:51
Ahoi Tom,

nimm den Parameter ReadOnly aus dem ConnectionString, er ist verantwortlich für den ISAM-Fehler - und weg mit IMEX=1 aus den Extended Properties, dadurch verliert der RecordSet seine Update-Fähigkeit.

Grüße vom marabu
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#17

Re: ADO | Edit | Post - aktualisierbare Abfrage

  Alt 30. Jul 2006, 15:36
jooo!!

Gott sei's gedankt, getrommelt und gepfiffen. Es funktioniert. Danke!!
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#18

Re: ADO | Edit | Post - aktualisierbare Abfrage

  Alt 30. Jul 2006, 16:46
Zusatzfrage:

wenn ich eine auf diese Weise veränderte Excel-Datei hinterher wieder auslese erhalte ich noch die Werte vor der Änderung. Erst wenn ich die Datei im Excel öffne und speichere, stimmt's. Die Änderung ist aber nach dem Post da - was spielt's hier?
  Mit Zitat antworten Zitat
marabu

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

Re: ADO | Edit | Post - aktualisierbare Abfrage

  Alt 30. Jul 2006, 17:26
Die Methode Post() macht deine Änderungen persistent - das ist völlig in Ordnung so. Vorher solltest du garnicht mit Excel auf die Daten zugreifen können, da der Provider nicht multi-user-fähig ist.

marabu
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#20

Re: ADO | Edit | Post - aktualisierbare Abfrage

  Alt 30. Jul 2006, 18:06
hmm, ok. Wie erreiche ich dann, dass die Änderungen übernommen werden?

Hintergrund: anhand des via Edit und Post geschriebenen Wertes soll innerhalb Excel etwas berechnet werden und das Ergebnis sofort wieder ausgelesen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 13:44 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