Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

VBA Hilfe / Datensatz aus Unterformular wählen.

Begonnen von Brusellise, November 11, 2016, 16:19:48

⏪ vorheriges - nächstes ⏩

Brusellise

Hallo,

ich benötige eure Hilfe, da VBA noch nicht mehr Welt ist.

Ich habe eine Reklamationsdatenbank.
Beim starten wird das Hauptformular "_frmnavstart" geöffnet.
In "_frmnavstart" befinden sich Links zu den Formularen. Hier kann man das Reklamationsbearbeitungformular öffnen "frm_rek_bearbeitung".
Für mich sieht es so aus, dass ich nun ein Hauptformular "_frmnavstart" und ein unterformular "frm_rek_bearbeitung" haben.

In "frm_rek_bearbeitung" kann die Reklamation bearbeiten werden. Mit einem Klick auf den Button "suchen" öffnet sich ein weiteres Unterformular "frm_rek_bearbeitungsuchen".
Hier können nun die Reklamationen nach bestimmten Filterfunktioniert gefiltert werden.

Nun möchte ich mit einem Doppelklick auf einem Textfeld erreichen, dass der angeklickte Datensatz automatisch in "frm_rek_bearbeitung" angezeigt wird.

Dies habe ich wie folgt gelöst:

Private Sub ID_DblClick(Cancel As Integer)
DoCmd.OpenForm "frm_rek_bearbeitung"
Forms!frm_rek_bearbeitung.Form.RecordSource = "SELECT * FROM tblReklamationen " & _
"WHERE ID =" & Me!ID


End Sub


Es öffnet nun eine extra Register und der Datensatz wird angezeigt (Funktioniert).

Das ganze sieht aber doof aus, da sich ein extra Register öffnet und ich nicht mein Standardformularlayout dann nutzen kann (die links sind weg).

Deshalb habe ich versucht das Hauptformular "_frmnavstart" dann "frm_rek_bearbeitung" zusammen öffnen zu lassen über die DO cmd Funktion.

Private Sub ID_DblClick(Cancel As Integer)
DoCmd.OpenForm "_frmnavstart!frm_rek_bearbeitung"
Forms!frm_rek_bearbeitung.Form.RecordSource = "SELECT * FROM tblReklamationen " & _
"WHERE ID =" & Me!ID


End Sub


Hier bekomme ich aber eine Laufzeitmeldung, dass das Formular nicht existiert.
Was mache ich falsch?

DF6GL

Hallo,

unabhängig davon, dass ich den Aufbau der Formulare nicht verstehe, interpretiere ich es so:

Private Sub ID_DblClick(Cancel As Integer)
Me!Ufo_Steuerelementname.SourceObject = "frm_rek_bearbeitung"
Me!Ufo_Steuerelementname.Form.RecordSource = "SELECT * FROM tblReklamationen " & _
"WHERE ID =" & Me!ID
End Sub


Beaker s.a.

Hallo,
@Franz
Vielleicht solltest du dir doch Mal eine Version >A2003 gönnen  ;)
Es geht wohl wieder Mal um ein Navigationsformular.

@Bruselise
ZitatHier kann man das Reklamationsbearbeitungformular öffnen "frm_rek_bearbeitung".
Für mich sieht es so aus, dass ich nun ein Hauptformular "_frmnavstart" und ein unterformular "frm_rek_bearbeitung" haben.
Genau, richtig erkannt. Das NaviForm enthält ein UFo, in dem das auf dem
Register gezeigte Formular angezeigt wird.
Leider bin ich mit diesem Feature nicht sehr vertraut (das meiste habe ich beim
Versuch zu helfen gelernt). Deshalb lass uns versuchen es Schritt für Schritt
anzugehen.
ZitatMit einem Klick auf den Button "suchen" öffnet sich ein weiteres Unterformular "frm_rek_bearbeitungsuchen".
Wie wird das denn geöffnet? Als Popup? Oder könntest du das auch über das Naviform
öffnen, will sagen gibt es dafür auch ein Register?
Falls das ein eigenständiges Form ist kannst du
DoCmd.OpenForm "frm_rek_bearbeitung"
weglassen, denn das Formular wurde ja nicht geschlossen.
In dieser Zeile von Franz
Me!Ufo_Steuerelementname.Form.RecordSource = "SELECT * FROM tblReklamationen " & _
"WHERE ID =" & Me!ID

musst du das erste, und nur das erste "Me." durch "Forms." ersetzen.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

DF6GL

Hallo,

ZitatVielleicht solltest du dir doch Mal eine Version >A2003 gönnen  ;)

Mhmm, Du könntest die mir ja eigentlich alle spendieren...  ;)

Ich denke eher, ich werde älter   (alt bin ich ja schon..)   :'(

Ich habe aus der Beschreibung tatsächlich nicht zwischen den Zeilen ein Navigationsformular erkannt  :o

Wie auch immer, ich habe Access 97 - 2016  zur Verfügung    :P

Brusellise

Hallo,

erstmal danke für eure Hilfe.

@Beaker s.a.

ZitatGenau, richtig erkannt. Das NaviForm enthält ein UFo, in dem das auf dem
Register gezeigte Formular angezeigt wird.
Leider bin ich mit diesem Feature nicht sehr vertraut (das meiste habe ich beim
Versuch zu helfen gelernt). Deshalb lass uns versuchen es Schritt für Schritt
anzugehen.

Passt danke.
Und, ja es handelt sich um ein Navform  :D. Sorry, dass dies nicht klar war.



ZitatMit einem Klick auf den Button "suchen" öffnet sich ein weiteres Unterformular "frm_rek_bearbeitungsuchen".


Wie wird das denn geöffnet? Als Popup? Oder könntest du das auch über das Naviform
öffnen, will sagen gibt es dafür auch ein Register?
Falls das ein eigenständiges Form ist kannst du

Ich öffne dies per VBA als ein Popup Fenster.

Zitat
DoCmd.OpenForm "frm_rek_bearbeitung"

weglassen, denn das Formular wurde ja nicht geschlossen.
In dieser Zeile von Franz

Code: [Auswählen]

Me!Ufo_Steuerelementname.Form.RecordSource = "SELECT * FROM tblReklamationen " & _
"WHERE ID =" & Me!ID

musst du das erste, und nur das erste "Me." durch "Forms." ersetzen.
gruss ekkehard

Super, dass hab ich verstanden.

Ich teste dies dann morgen, da ich heute leider geschäftlich unterwegs bin.
Teile euch mein Ergebnis mit.

Danke für eure tolle Hilfe zunächst.



Brusellise

Hi,

sorry, leider habe ne Fehlermeldung, dass das Formular nicht gefunden wird.

Der aktuelle Code lautet jetzt:

Private Sub ID_DblClick(Cancel As Integer)

     Forms!frmRek_Erfassungbearbeitung.Form.RecordSource = "SELECT * FROM tblReklamationen " & _
                                             "WHERE ID =" & Me!ID
     '(in dem Datensatz des kunden ist bestimmt die kundenid hinterlegt
     
         End Sub


Das Popupformular heißt: frmRek_Erfassungbearbeitung
Der Feldname im Formular heißt: ID

Und wie gesagt, dass Naviformular ist geöffnet und dann wird per Button in einem Popup das Formular frmRek_Erfassung geöffnet. Auch nochmal als Wiederholung, wenn ich das Formular frmRek_Erfassungbearbeitung nochmal extra öffnen lasse funktioniert der Code.

Es muss also etwas mit den Naviformular / Unterformular zu tun haben.

Bitte helft mir.

Danke

DF6GL

Hallo,

sehr unklar, Deine Beschreibung..

kannst Du die Db hier hochladen, datenreduziert(falls nötig), komprimiert/repariert und gezippt?

Ein Navi-Form hat andere Eigenschaften/Methoden als ein Reg-Steuerelement, um ein (das) Unterformular anzuzeigen.


--ist "frmRek_Erfassungbearbeitung" das Navi-Form? Dann ist die Zuweisung an dessen Recordsource vermutlich falsch.
--ist "frmRek_Erfassung" das Form, das gefiltert und als Popup geöffnet werden soll?

Wenn beim Klick auf das ID-Feld (in einem angezeigten Navi-UFO) ein anderes Form ("frmRek_Erfassung") als Popup und mit Filterung zu dieser ID als Popup geöffnet werden soll, dann sollte das so lauten:

Sub ID_DblClick (Cancel as Integer)
Docmd.Openform "frmRek_Erfassung", , , " ID =" & Me!ID, , acDialog
End Sub

Beaker s.a.

Hallo Franz,
Wie ich es verstanden habe andersrum: im Popup soll ausgewählt und im Navi(Ufo)-Form
soll der DS angezeigt werden (RecordSource des UFo wird geändert).
Also IMO sollte es im Popup bei einem passenden Ereignis eigentlich so gehen:
Forms!_frmnavstart!frm_rek_bearbeitung.Form.RecordSource = _
    "SELECT * FROM tblReklamationen WHERE ID = " & Me!ID

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

DF6GL

Hallo,

wenn die Standard-Namen verwendet werden, lautet das so:

Forms!Navigationsformular!Navigationsunterformular.Form.Recordsource ="SELECT * FROM tblReklamationen WHERE ID = " & Me!ID

Beaker s.a.

Die Formnamen hatte ich aus dem OP abgeleitet.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)