Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Ein Formular aus einem anderen Formular heraus aktualisieren

Begonnen von Ubbo, Januar 23, 2015, 19:11:47

⏪ vorheriges - nächstes ⏩

Ubbo

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?

MzKlMu

Hallo,
versuche mal das Requery im Formularereignis "Bei Aktivierung" von "Frm_Adressen"

Private Sub Form_Activate()
    Me.Requery
End Sub
Gruß Klaus

database

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

MzKlMu

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).
Gruß Klaus

database

Ja, stimmt - also kann auf den Requery-Befehl verzichtet werden

MaggieMay

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.
Freundliche Grüße
MaggieMay

Ubbo

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

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

Stapi

Hallo Ubbo
Vielleicht hilft ein:
Privat Sub Form_Activate()
RunCommand acCmdSaveRecord
Me.Requery
End Sub
Grüße aus dem schönen NRW
Stefan

database

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

MaggieMay

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.
Freundliche Grüße
MaggieMay

Ubbo

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

Frank77

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
Selbstständig = Selbst und Ständig

database

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

MaggieMay

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 Sub
So wird eins nach dem anderen abgearbeitet und man muss nicht nach weiteren Ereignissen suchen, die für diesen Job geeignet sein könnten.
Freundliche Grüße
MaggieMay