Hallo liebe Access Profis
Ich habe folgendes Problem
Aus einem Formulat "Frm_Adressen" das von eine Abfrage gespeist wird rufe ich ei Formular Grunddaten auf. In diesem Formular habe ich die Möglichkeit die vorhandenen verknüpften Tabellen zu löschen und die Tabellen einer anderen Datenbank mit gleicher Datenstruktur aber anderen Daten einzubinden. Das funktioniert auch. wenn ich dann das Frm_Grunddaten schließe habe ich zwar die richtigen Tabellen verknüpft aber im Frm_Adressen werden immernoch die alten Daten angezeigt. Ein me.Requery nach den Aufruf des Frm_Grunddaten (im Frm_Adressen) kommt bereits wenn im Frm_Grunddaten noch gar keine Eingaben gemacht wurden, als zu zeitig.
Ein Forms!Frm_Adressen.Requery wird zwar ohne Fehlermeldung angenommen. aber die alten Daten bleiben. Erst nach Schließen des Frm_Adressen und Neustart sind die richtigen Daten da.
Wie kann ich aus dem Frm_Grundadaten heraus das Frm_Adressen aktualisieren?
Hallo,
versuche mal das Requery im Formularereignis "Bei Aktivierung" von "Frm_Adressen"
Private Sub Form_Activate()
Me.Requery
End Sub
Hallo,
du schreibst:
Zitat... das von eine Abfrage gespeist wird
Somit scheint mir ... Forms!Frm_Adressen.Requery ... schon einmal der richtige Weg zu sein.
Stell diesen Befehl ins Ereignis 'Beim Schließen' des Formulars 'Frm_Grunddaten' oder erstelle auf diesem Formular einen Button und verfrachte den Befehl in dessen Klick-Ereignis.
Vor dieser Zeile weist du dem Formular 'Frm_Adressen jedoch die Datenherkunft NEUERLICH zu.
Also in Etwa so:
Private Sub DeinButton_Click()
Forms!Frm_Adressen.RecordSource = "qry_DeineAbfrage"
Forms!Frm_Adressen.Requery
End Sub
HTH
Hallo,
@Peter
das Forms!Frm_Adressen.Requery ist nicht notwendig. Die Zuweisung einer Datenherkunft (RecordSource) löst auch ein Requery aus.
Mein Vorschlag sollte aber auch funktionieren (getestet).
Ja, stimmt - also kann auf den Requery-Befehl verzichtet werden
Hallo,
ZitatEin me.Requery nach den Aufruf des Frm_Grunddaten (im Frm_Adressen) kommt bereits wenn im Frm_Grunddaten noch gar keine Eingaben gemacht wurden, als zu zeitig.
dagegen hilft, das Formular "Grunddaten" im Dialogmodus zu öffnen.
Dann pausiert der Code bis das Formular wieder geschlossen wurde.
Das scheint mir hier die einfachste und naheliegendste Lösung zu sein.
Zitat von: MzKlMu am Januar 23, 2015, 19:27:22
Hallo,
versuche mal das Requery im Formularereignis "Bei Aktivierung" von "Frm_Adressen"
Private Sub Form_Activate()
Me.Requery
End Sub
Sorry hat nicht funktioniert!
Ubbo
Zitat von: MaggieMay am Januar 23, 2015, 21:36:51
Hallo,ZitatEin me.Requery nach den Aufruf des Frm_Grunddaten (im Frm_Adressen) kommt bereits wenn im Frm_Grunddaten noch gar keine Eingaben gemacht wurden, als zu zeitig.
dagegen hilft, das Formular "Grunddaten" im Dialogmodus zu öffnen.
Dann pausiert der Code bis das Formular wieder geschlossen wurde.
Das scheint mir hier die einfachste und naheliegendste Lösung zu sein.
Sorry hat auch nicht funktioniert!
Ubbo
Hallo Ubbo
Vielleicht hilft ein:
Privat Sub Form_Activate()
RunCommand acCmdSaveRecord
Me.Requery
End Sub
Hallo,
ZitatSorry hat nicht funktioniert!
ZitatSorry hat auch nicht funktioniert!
ich versuch's noch einmal, scheinbar hast du meinen Vorschlag in Antwort #2 und den Korrekturen in #3 und #4 nicht getestet ...
Zitat... wenn ich dann das Frm_Grunddaten schließe habe ich zwar...
Dann versuche doch bitte mal am Formular
Frm_Grunddaten folgendes
Private Sub Form_Close()
Forms!Frm_Adressen.RecordSource = "qry_DeineAbfrage"
End Sub
Hallo,
Zitat von: Ubbo am Januar 24, 2015, 10:38:07Sorry hat auch nicht funktioniert!
das wage ich zu bezweifeln.
Wie hast du das umgesetzt? Zeige bitte deinen Code dazu.
Hallo Database
Forms!Frm_Adressen.RecordSource = "qry_DeineAbfrage"
aus den Grunddaten heraus hat funktioniert!
leider nur mit einem Schöheitsfehler: die Kombinationsfelder in Form_Adresssen wurden nicht aktualisiert.
jedes Kombinationsfeld wird durch eine eigene Abfrage gespeist Que_Kombifeldname .
Ich habe dann bei den Kombifeldern bei GotFocus ein Kombifeldname.requery gesetzt, das hat aber auch nicht geholfen.
hier der Code aus den Grunddaten
Public Sub Frm_aktualisieren() 'das Hauptformular soll von hier aktualisiert werden
'MsgBox " Es Soll das Hauptformular aktualisiert werden!"
Forms!Frm_Adressen.RecordSource = "Que_ADRPRIV"
'List!Frm_Adressen!Kom_Name_suchen.RecordSource = "Que_Adressauswahl"
'Forms!Frm_Adressen!Kom_Name_suchen_Tel.RecordSource = "Que_Adressauswahl_Tel"
End Sub
die auskommentierten Zeilen haben auch nur Fehlermeldungen produziert.
hier das GotFocus aus den Adressen
Private Sub Kom_Ausw_Kennung_GotFocus() ' das Kombifeld aktualisieren
Kom_Ausw_Kennung.Requery
End Sub
Hallo!
ich weis nicht ob ich da richtig mit gelessen hab aber kann es sein das du sowas in der richtung suchst
Gruß Frank
Private Sub cmd_FormClose_Frm_Adressen()
Dim Frm As Form
Dim ctl As Control
Dim strSQL As String
strSQL = "qry_DeineAbfrage"
'---------------------- Hinter einem Button
'DoCmd.OpenForm "Frm_Adressen", , , , , acDialog
'---------------------- folgende zeilen für Button ändern
Set Frm = "Frm_Grunddaten"
With Frm
.Recordsource = strSQL
.Requery
'---------------------- So
For Each ctl In .Controls
Select Case ctl.ControlType
Case acComboBox
.Requery
End Select
Next ctl
'---------------------- Oder
!ComboBoxName.Requery
'----------------------
End With
Set Frm = Nothing
End Sub
Hallo,
Zitat
'List!Frm_Adressen!Kom_Name_suchen.RecordSource = "Que_Adressauswahl"
'Forms!Frm_Adressen!Kom_Name_suchen_Tel.RecordSource = "Que_Adressauswahl_Tel"
Listenfelder und Kombifelder haben keine RecordSource sondern eine RowSource!
Public Sub Frm_aktualisieren() 'das Hauptformular soll von hier aktualisiert werden
'MsgBox " Es Soll das Hauptformular aktualisiert werden!"
Forms!Frm_Adressen.RecordSource = "Que_ADRPRIV"
Forms!Frm_Adressen!Kom_Name_suchen.RowSource = "Que_Adressauswahl"
Forms!Frm_Adressen!Kom_Name_suchen_Tel.RowSource = "Que_Adressauswahl_Tel"
End Sub
HTH
Hi,
Zitathier der Code aus den Grunddaten
ich empfehle weiterhin die folgende Vorgehensweise:
Private Sub btn_Grunddaten_Click()
DoCmd.OpenForm "frmGrunddaten", acViewNormal, , , , acDialog
Me.Requery
Me!Kom_Name_suchen.Requery
Me!Kom_Name_suchen_Tel.Requery
End SubSo wird eins nach dem anderen abgearbeitet und man muss nicht nach weiteren Ereignissen suchen, die für diesen Job geeignet sein könnten.