![]() |
Access DB beim Rechnerstart laden
Hallo,
ich möchte eine 45 MB große Access-Datenbank beim Rechnerstart laden damit wenn ich mein Programm starte das nicht immer ca 1 Minute dauert eh alles geladen ist. Ich lade die Datenbank mit ADO. Ich hatte mir auch überlegt ein kleines Programm zu schreiben welches ich beim Rechnerstart lade und die Datenbank öffne und dann wenn ich mein Programm starte auf die Komponenten des anderen Programm zu zugreifen. Aber da weiß ich nicht wie das geht. |
Re: Access DB beim Rechnerstart laden
Zitat:
|
Re: Access DB beim Rechnerstart laden
was meinst du überhaupt mit "die datenbank laden"??
normalerweise "lädt" man die nicht, sondern greift nur darauf zu und holt sich immer das was man gerade braucht, aber nie die ganze db. du kannst übrigens in Access auch sagen "datenbank reparieren und komprimieren" - danach kann es sein, dass sie soundso wesentlich kleiner als vorher ist. |
Re: Access DB beim Rechnerstart laden
Zitat:
|
Re: Access DB beim Rechnerstart laden
Ich habe jetzt bei meinen beiden ADOTable die CursorLocation auf clUseClient geändert und jetzt bringt er bei ADOTable2 wo ich eine Masterfield-Verknüpfung zu ADOTable1 habe die Fehlermeldung "Die Datenmenge ünterstützt keine Positionsmarken, die von Multi-Datensatz-Elementenbenötigt wird."
Was muß ich den jetzt machen damit meine Haupt- und Detailanzeige funktioniert. |
Re: Access DB beim Rechnerstart laden
Hab ich was davon erzählt auf clUseClient umzustellen? clUseClient war mein Vorschlag wieso es so lange dauert.
Ich tipp einfach mal darauf das bei der Master-Detail-Beziehung zu viele Datensätze in den Speicher geschaufelt werden müssen. Was passiert wenn die Master-Detail-Beziehung erst auf Knopfdruck aktiviert wird. Wie sind dann die Ladezeiten? |
Re: Access DB beim Rechnerstart laden
Sorry ich meinte doch clUseServer.
Wenn ich das über einen Button zuweisen tue dann bekomme ich folgende Fehlermeldung: "Ein Objekt, das dem angeforderten Namen oder dem Originalverweis entspricht, kann nicht gefunden werden." Folgenden Code benutze ich im Button
Delphi-Quellcode:
ADOTable2.MasterSource := DataSource1;
ADOTable2.MasterFields := 'Job'; ADOTable2.IndexFieldNames := 'Auftrag'; |
Re: Access DB beim Rechnerstart laden
@Bernhardt: Ich tippe mal, dass Access keine unterschiedlichen Curortypen kennt. Stattdessen wird bei einer Desktodatenbank (und nichts anderes ist Access im Endeffkt), der gesamt Recordset zum Client geschaufelt.
jensenwb, wieviel Records hat Du denn in deinem Resultset. Prinzipiell macht es überhaupt keinen Sinn, ein "Select * from..." durchzuführen (oder ein TTable zu nutzen, selbst wenn Du ein Filter setzt), auch nicht bei einer "richtigen" Datenbank. Kein Mensch wird sich ein paar hundert Tausend Records manuell ankucken, sondern braucht immer eine Suchfunktion. Vielleicht solltest Du mal in die Richtung hin arbeiten. |
Re: Access DB beim Rechnerstart laden
Ich habe in der einen Datenbank ca 70.000 Datensätze und in der dazugehörenden anderen Datenbank ca 117.000 Datensätze. Wenn ich in der kleinen Datenbank einen Datensatz anzeige dann brauche ich in der Dazugehörenden großen Datenbank die entsprechenden Datenätze um die entsprechenden Touren zu ermitteln.
|
Re: Access DB beim Rechnerstart laden
Bei solch großen Datenmengen würde ich mir wirklich die Migration auf eine richtinge C/S Datenbank überlegen.
|
Re: Access DB beim Rechnerstart laden
Ich habe das Problem das es eine MSAccess Anwendung schon existiert und ich eine Anwendung in Delphi schreiben soll die noch einige Funtkionen mehr hat als die jetzige Version. Und ich muß ja dann die Datenbank 1 zu 1 übernehmen um keine Ausfallzeit dann zu haben.
|
Re: Access DB beim Rechnerstart laden
Soll dann Access und Delphi-Version parallel laufen?
|
Re: Access DB beim Rechnerstart laden
Nein, es soll dann nur noch die Delphi-Version laufen. Beziehungsweise wenn noch irgendwelche Fehler festgestellt worden (was ich nicht hoffen will) dann soll die Access-Anwendung noch mal benutzt werden
|
Re: Access DB beim Rechnerstart laden
Zitat:
2. Und wie aus der 2-ten. Du wirst nie und nimmer die 117000 Datensätze anzeigen müssen, und auch nicht zu deinem Programm zu transferieren... Durch Setzen deinen MasterDatasource ist es einzig und allein Delphi, der sich ums Filtern kümmert, und nicht Access. Es werden also alle 117000 transferiert, und Delphi zeigt nur die Datensätze an, die matchen... Deshalb besser: 1. Select * from Tabelle1 where Name='Dagobert Duck' ; Das liefert dir genau einen Record, deinen Masterrecord. Mit einem entsrpechendem Index auf der Spalte Name, dauert das selbst bei Access keine 1/10 Sekunde. Dann im OnAfterScroll Event würd ich die 2. Query aufbauen, die so aussehen kann: Select * from Tabelle2 where AdrId = :Id
Delphi-Quellcode:
Das hat den ganz entscheidenden Vorteil, dass Access nur die Datensätze liefert, die auch wirklich relevant sind.
begin
with Tabelle2 do begin close ; Parambyname ('id').AsInteger := Tabelle1.FieldByName('deinePrimaryKeySpalte').AsInteger ; open ; end ; end ; |
Re: Access DB beim Rechnerstart laden
Ich bin der Meinung, daß bei einer Neuentwicklung auf erkannte Schwachstellen reagiert werden sollte, ich würde ein Wechsel der Datenbank-Plattform ernsthaft in Betracht ziehen.
BTW man kann auch die Access-datenbank auf externe Datenbanken umlenken, so daß auch die Access-Anwendung später auf die neue datenhaltung zugreifen könnte. |
Re: Access DB beim Rechnerstart laden
Welche Datenbank wird den entfohlen wenn man so eine große Datenmenge hat.
|
Re: Access DB beim Rechnerstart laden
Zitat:
Wenn du weiter mit ADO arbeiten möchtest ist MSSql vielleicht die beste Alternative, wenn eifaches Deployment und wenig Administrationsaufwand im Vordergrund steht FireBird. Diese Entscheidung ist aber recht subjektiv zu treffen. |
Re: Access DB beim Rechnerstart laden
Zitat:
Wieviel Tabellen und Views sind denn in der Accessdatenbank enthalten? Beim Umschwung von Access auf einen SQL Server ist dennoch zu bearbeiten, dass man sich nun in einem richtigen Client Server System bewegt, mit all seinen Vor- und Nachteilen. Vorteile liegen auf der Hand. Nachteile: Multiuserumgebung, bei der man als Entwickler achten muss. Da fallen so Sachen wie Transactionmanagent an. Mein Tipp: Wenn es eine Singleuserumgebung bleibt, so wird auch Access weiterhin ausreichend sein, keine Frage. Denn auch beim SQL Server dauert das Transferiern von grossen Datenmengen zum Client so seine Zeit. |
Re: Access DB beim Rechnerstart laden
Zitat:
Zitat:
|
Re: Access DB beim Rechnerstart laden
In der Access Datenbank sind 14 Tabellen enthalten, es ist eine Singeluser-Anwendung.
Also die Anwendung wir auf einen Computer verwendet und es greifen auch keine anderen User drauf zu. |
Re: Access DB beim Rechnerstart laden
Immer vom gleichen PC oder von verschiedenen?
|
Re: Access DB beim Rechnerstart laden
Immer vom gleichen PC aus
|
Re: Access DB beim Rechnerstart laden
Dann könnte es ja helfen, die Datenbank lokal zu halten und nur Sicherheitszwecken Kopien auf dem server zu halten.
|
Re: Access DB beim Rechnerstart laden
Die Datenbank liegt ja auf dem gleichen Computer wie die Anwendung, es geht mir doch um die Ladezeiten der Datenbank
|
Re: Access DB beim Rechnerstart laden
Zitat:
Dann solltest du aber auf jedenfall mal deine Abfragen überprüfen. |
Re: Access DB beim Rechnerstart laden
Zitat:
@jensenwb: Hast Du meine Tipps schon umgesetzt... Das sollte definitiv helfen. |
Re: Access DB beim Rechnerstart laden
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 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 by Thomas Breitkreuz