PDA

Vollständige Version anzeigen : Seltsames Verhalten der DB


Axelander
07.07.2006, 16:09
Hallo,
ich habe hier was ganz komisches. Und zwar habe ich beim Start meiner Anwendung folgenden Code eingebaut der nach einem Update ausgeführt wird:


Private Sub Versionsnummer_updaten()
On Error GoTo Err_Handler

Dim db As DAO.Database
Dim SQL As String
Dim Datenpfad As String

Datenpfad = get_ASC_Easy_Daten_Pfad
Set db = OpenDatabase(Datenpfad)
SQL = " UPDATE tbl_Einstellungen SET E_Version = '" & conVersionsNummer & "' WHERE 1 = 1"
db.Execute SQL, dbFailOnError
db.Close

Exit_Here:
Set db = Nothing
Exit Sub

Err_Handler:
Fehlermeldunganzeigen err.Description, err.Number, vbCritical, "Fehler beim Update der Versionsnummer!"
Resume Exit_Here
Resume
End Sub


Da ist ja eigentlich nichts besonderes dran. Nachdem der Code aber ausgeführt wurde, zeigen einige Listenfelder und Komboboxen seltsame Phänomene. Eine Kombobox zeigt zum Beispiel überhaupt keinen Inhalt mehr, ein Listenfeld aktualisiert sich erst im zweiten Versuch.

Ich hab mal folgendes probiert und das Set db = OpenDatabase versuchsweise durch ein Set db = CurrentDb() ersetzt. Damit funktioniert meine Datenbank ohne Probleme!!! Das kann doch gar nicht sein, oder? Lösung ist das natürlich keine, weil sich die Tabelle ja gar nicht in der CurrentDb() befindet.

Gruß
Alex

Paul.Ostermeier
07.07.2006, 16:21
wie's aussieht sind die Tabellen aber in die CurrentDB verlinkt ...

d.h. CurrentDB.Execute ist schon richtig

MfG
Paul

Axelander
07.07.2006, 16:37
Hallo Paul,
ich hab inzwischen noch mal ein wenig rumprobiert, momentan tippe ich darauf, dass mein Formular nen drücker weg hat.
Verlinkt werden die Tabellen erst danach, weil ich muss ja erst die neu hinzugekommenen anlegen bevor ich die reinverlinken kann, ansonsten gibt es beim verlinken einen Fehler.

Gruß
Alex

Worf1001
07.07.2006, 17:42
Hallo,

in Deinem Code sieht man aber nichts von verlinken!?!? Wo und wann verlinkst Du die Tabelle?

Anne Berg
07.07.2006, 18:40
Da ist ja eigentlich nichts besonderes dran. Da hast du völlig Recht! ;) Aber du erzählst was von Tabellenerstellungen und Verknüpfungen... das heißt dein Code ist doch wohl noch deutlich umfangreicher. Wie kommst du darauf, dass dieses harmlose kleine Update deine Anwendung zum Stolpern bringt? :confused:

PS: ... schon mal Reparieren & Komprimieren ausprobiert?

Axelander
08.07.2006, 00:39
Hallo,
ja, das ist nur ein kleiner Teil von dem eigentlichen Code. Und ich bin dadurch drauf gekommen, dass wenn man mit gedrückter Shift - Taste reingegangen ist hat alles funktioniert, sobald der Autostart durchgeführt wurde nicht mehr. Also hab ich alles auskommentiert und der Reihe nach dann wieder einkommentiert und geschaut nach welcher Funktion der Fehler auftritt. So bin ich eben auf dieses eigentlich harmlose Update gestoßen.

Gruß
Alex

Edit: Komprimieren / reparieren, Decompile, DB neu aufgebaut, hat alles nichts gebracht.

Anne Berg
08.07.2006, 20:15
Tut mir leid, aber dazu müsste man schon den Gesamtkontext kennen oder es selbst austesten können. So fällt mir dazu nichts ein...

Paul.Ostermeier
10.07.2006, 07:30
@Axelander

der Hund liegt augenscheinlich in der Verlinkung begraben ....
BTW: warum musst Du die Tabellen erst anlegen bevor Du sie verlinken kannst ?!
d.h (vermutlich) beim Start löscht Du Tabellen, legst Tabellen neu an und verlinkst diese Tabellen und während dessen führst Du ein Update auf eine dieser "vielleicht noch nicht vorhandenen oder noch nicht verlinkten) Tabellen aus
das kann eigentlich nicht klappen ...

MfG
Paul

Axelander
10.07.2006, 07:52
Hallo Paul,
sorry, aber da komme ich nicht mehr ganz mit was du da beschreibst.
Also, hier mal der komplette Ablauf:
1. Anhand der Versionsnummer schauen ob Tabellen geändert bzw. neu angelegt werden müssen.
2. Update der Versionsnummer
3. Tabellen verknüpfen, da ja nicht jeder Kunde die Installation im gleichen Verzeichnis liegen hat.

Sollte eigentlich so funktionieren, oder?

Gruß
Alex

Paul.Ostermeier
10.07.2006, 10:54
@Axelander

wie Du selber schreibst - führst Du beim Start einer Datenbank ein Update für Tabelle durch - für die Du gleichzeitig beim Start entscheidest ob sie gelöscht und neu verlinkt werden sollen.
- Zumindest hab ich das so verstanden ....

Dann ist doch klar, dass das Update abhängig von einer neue Verlinkung
läuft oder ne Fehlermeldung produziert

MfG
Paul
- Zumindest hab ich das so verstanden ....