Ich bau sei einigen Tagen an einer Access DB und lasse Die Formulare alle im Dialog erscheinen wegen der Optik. Nun habe ich das Problem das er mir ab und zu die Datenbank schrottet weil wenn ich das Hauptformular öffne schließt sich Access komplett. Muss dann immer ne neu DB machen und alles neu Importieren.
Jemand ne idee?
Hallo,
ich vermute mal schwer, dass in den Codes zum Öffnen / Anzeigen / Aufrufen der Folge-Formulare oder in einer Routine des Hauptformulars ein kapitaler Fehler besteht.
Wird IRGENDEINE Routine oder Funktion beim Öffnen des HF angestoßen? Die ganze Symptomatik läßt auf ein defektes VBA Projekt schließen.
Folgendes wird beim Laden des hauptforms ausgeführt
Private Sub Form_Load()
DoCmd.Requery FM_Index
End Sub
Der Ganze VBA Code des Forms
Private Sub button_behandlun_anlegen_Click()
DoCmd.OpenForm "FM_behandlung_anlegen"
End Sub
Private Sub button_Index_close_Click()
DoCmd.Close acDefault
End Sub
Private Sub button_index_datum_tag_vor_Click()
Me!Datums_auswahl = Me!Datums_auswahl + 1
DoCmd.Requery Index
End Sub
Private Sub button_index_datum_woche_zurück_Click()
Me!Datums_auswahl = Me!Datums_auswahl - 7
DoCmd.Requery Index
End Sub
Private Sub button_index_datum_woche_vor_Click()
Me!Datums_auswahl = Me!Datums_auswahl + 7
DoCmd.Requery Index
End Sub
Private Sub button_index_datum_tag_zurück_Click()
Me!Datums_auswahl = Me!Datums_auswahl - 1
DoCmd.Requery Index
End Sub
Private Sub button_index_tagesbericht_Click()
DoCmd.OpenReport "Tagesbericht", acViewPreview
End Sub
Private Sub button_kassen_verwaltung_Click()
DoCmd.OpenForm "FM_kassen_liste"
End Sub
Private Sub button_patienten_verwaltung_Click()
DoCmd.OpenForm "FM_patienten_liste"
End Sub
Private Sub datum_heute_Click()
Me!Datums_auswahl = Date
DoCmd.Requery FM_Index
End Sub
Private Sub Datums_auswahl_AfterUpdate()
DoCmd.Requery FM_Index
End Sub
Private Sub Datums_auswahl_Change()
SendKeys "{ENTER}", True
End Sub
Private Sub Datums_auswahl_GotFocus()
DoCmd.Requery FM_Index
End Sub
Private Sub Form_Load()
DoCmd.Requery FM_Index
End Sub
Private Sub list_behandlungen_heute_DblClick(Cancel As Integer)
On Error GoTo myError
Dim strName As String
Dim strKrit As String
strName = "FM_behandlung_bearbeiten"
strKrit = "[Behandlungs_ID]=" & Me!list_behandlungen_heute 'entsprechenden Datensatz auswählen
DoCmd.OpenForm strName, , , strKrit
my_Exit:
Exit Sub
myError:
If Err.Number = 3075 Then
MsgBox "Mit Doppelklick können Sie nur einen vorhandenen Wert öffnen. ", vbInformation + vbOKOnly, "Keinen Wert ausgewählt"
Else
MsgBox "Fehler " & Err.Number & " " & Error$
Resume my_Exit
End If
End Sub
Ich bin mal auf Popup Umgestiegen vielleicht macht das weniger Unsinn.
Hallo,
ich gehe davon aus, dass es sich bei 'FM_Index' um irgendein Steuerelement hadelt.
dann sollte die Syntax lauten:
DoCmd.Requery "FM_Index"
oder
Me!FM_Index.Requery
Allerdings sollte es da schon auch etwas zum Aktualisieren geben - nämlich zum Zeitpunkt des Aufrufes!
Als nächstes fällt mir auf, dass du ein anderes Steuerelement SEHR mutig 'Index' benannt hast - 'Index' ist ein reserviertes Wort und ich kann mit gut vorstellen, dass Access beim Kompilieren des Codes seinen Dienst strikt verweigert (deswegen).
Weiter solltest du auf SendKeys verzichten ...
Private Sub Datums_auswahl_Change()
SendKeys "{ENTER}", True
End Sub
...damit simulierst du praktisch nach JEDER Zeicheneingabe den Druck auf ENTER - bei 20 Zeichen also 20x ???
Hast schon mal probiert deinen gesamten Code mit 'Debuggen' nach Fehlern durchsuchen zu lassen?
Das mit dem nur Index ist noch ein Fehler bevor ich alle Formulare mit FM_ versehen habe hat dennoch geklappt. Ich werde das Startform umbenennen alles ändern und sendkey entfernen mal sehen was dann passiert.
Hallo,
ja heißt denn nun das FORMULAR auf dem sich der Code befindet 'FM_Index' oder wie?
Und wenn ja, warum willst du es per 'Requery' beim Öffnen aktualisieren?
Wenn das Startformular - also jenes in dem sich die gezeigten Codes befinden 'FM_Index heißt, brauchst du es nicht mit dem Namen anzusprechen.
Private Sub Form_Load()
Me.Requery
End Sub
Zitat...sendkey entfernen mal sehen was dann passiert
Es wird ja einen Grund haben, warum du das machst - was sollte es denn bewirken?
EDIT:
p.s. was sagt der Debugger zu deinen Codes?
Der sendkey soll ein requery auslösen. Ich habe ein Datumsfeld und wenn man dort über den Access Kalender ein datum auswählt soll direkt ein requery kommen was leider nicht passiert wenn ich den requery bei "bei Änderung" engetragen habe. Also habe ich bei "bei Änderung" ein sendkey "return" drin was dann "bei Aktualisierung " auslöst wo er requery drin ist.
Mittlerweile weis ich das ich da ein Fehler im Requery bei "bei Änderung drin gehabt haben muss, aber ist nun eh hinfällig weil ich einen externen Kalender eingebaut habe.
Habe nun alles umgebaut und den Namen Index komplett entfernt. Bisher läuft alles super.