Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi rückmeldung von access, gibts sowas? (https://www.delphipraxis.net/79286-rueckmeldung-von-access-gibts-sowas.html)

oakley 19. Okt 2006 16:42

Datenbank: Access • Version: 2003 • Zugriff über: ADO

rückmeldung von access, gibts sowas?
 
Hi, ich habe ein kleines (naja mittelschweres) Problem...

Ich habe eine Accessdatenbank, in die ich ein paar Datensätze per Schleife reinschreibe.

Sieht wie folgt aus:

Delphi-Quellcode:
For i := 1 to Form2.WKGRID1.RowCount-2 do
begin
Form2.ADOCommand1.CommandText := 'INSERT INTO ' + Form6.NAME.Text + ' (ID, ARTIKELNR, ARTIKELTEXT, MENGE, EPREIS, GPREIS, UVP, VERFUEGBAR, FREITEXT) VALUES (''' + InttoStr(i) + ''', ''' + Form2.WKGRID1.Cells[1,i] + ''', ''' + Form2.WKGRID1.Cells[2,i] + ''', ''' + Form2.WKGRID1.Cells[3,i] + ''', ''' + Form2.WKGRID1.Cells[4,i] + ''', ''' + Form2.WKGRID1.Cells[5,i] + ''', ''' + Form2.WKGRID1.Cells[6,i] + ''', ''' + Form2.WKGRID1.Cells[7,i] + ''', ''' + Form2.WKGRID1.Cells[8,i] + ''')';
Form2.ADOCommand1.Execute;
end;
Ich möchte nun wissen, wann Access das letzte INSERT eingefügt hat, damit danach eine andere Aktion starten kann.

Access ist ja bekanntlich nicht die schnellste DB und daher muß ich warten bis alle INSERTS geschrieben sind.

Oder hat jemand ne bessere IDee wie man das hinbekommt als auf ne Rückmeldung von Access zu warten, falls es sowas überhaupt gibt.

Gruß

Mirko

bttb930 19. Okt 2006 17:08

Re: rückmeldung von access, gibts sowas?
 
Hast Du Probleme oder wie kommst Du darauf dass Du warten musst?

Ich glaube das musst Du nicht - probier's einfach mal.

Und wenn Du Access für zu langsam hälst, dann nehm halt eine andere DB. Meine Erfahrung sagt mir, dass auf Access immer gerne geschimpft wird - vor allem weil Access von MS ist. Aber die die da schimpfen haben in der Regel leider gar keine Ahnung. Für große Prjekte nimmt man einfach andere Datenbanken, aber das ist Entwicklern mit Ahnung auch klar. Aber für kleine Projekte habe ich mit Access noch nie Probleme gehabt - auch nicht in Sachen Tempo.

Und falls Du doch warten musst: Gibt Execute nicht einen Boolean zurück, der Erfolg oder Mißerfolg bedeutet? Dann mach doch if ADOCommand.Execute then...

shmia 19. Okt 2006 17:20

Re: rückmeldung von access, gibts sowas?
 
Die Einfügegeschwindigkeit bei Access beträgt etwa 30 bis 200 Datensätze pro Sekunden (für "normale" Tabellen, AccessDB auf lokaler Platte).
Access braucht dir also keine Rückmeldung geben, da ein einzelner Datensatz schnell eingefügt ist.
Erst durch Einfügen vieler Datensätze wird die Sache träge.
Dafür gibt es eine einfache und bewährte Lösung:
einen Progressbar anzeigen, damit der Benutzer weiss, wie lange die Sache noch ungefähr dauert und nicht die Geduld verliert.

PS: bitte in deinem Beispielcode das Form2. weglassen; das kann nur Schwierigkeiten bringen

oakley 19. Okt 2006 19:12

Re: rückmeldung von access, gibts sowas?
 
Ja ich weiß das hört sich komisch an und ich finde Access auch ok egal ob MS oder nicht.

Das Problem ist eigentlich folgendes:

Mit o.g. Schleife speichere ich ab. Dann öffne ich nachdem die Meldung kam, daß gespeichert wurde ein Form, in der ich mit in einem ListView die datensätze anzeigen lasse, die gerade gespeichert wurden. Wenn ich weniger als 2 Sekunden warte, werden die DAtensätze nicht ode rnicht vollständig angezeigt. Nach ca. 2 Sekunden ist alles alles da.

Wie kann das sein?

Gruß

Mirko

Bernhard Geyer 19. Okt 2006 21:39

Re: rückmeldung von access, gibts sowas?
 
Zitat:

Zitat von oakley
Mit o.g. Schleife speichere ich ab. Dann öffne ich nachdem die Meldung kam, daß gespeichert wurde ein Form, in der ich mit in einem ListView die datensätze anzeigen lasse, die gerade gespeichert wurden. Wenn ich weniger als 2 Sekunden warte, werden die DAtensätze nicht ode rnicht vollständig angezeigt. Nach ca. 2 Sekunden ist alles alles da.

Irgendwie kommt diese Frage auch alle paar Wochen: Access-Caching.. Kann sich jeder seine Meinung über so ein "Feature" machen.

shmia 23. Okt 2006 13:46

Re: rückmeldung von access, gibts sowas?
 
Man darf nur eine (globale) ADO-Connection für die Anwendung benützen; dann sind Änderungen an Tabellen für andere Abfragen sofort sichtbar.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 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