Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Brusellise am November 11, 2016, 16:19:48

Titel: VBA Hilfe / Datensatz aus Unterformular wählen.
Beitrag von: Brusellise am November 11, 2016, 16:19:48
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?
Titel: Re: VBA Hilfe / Datensatz aus Unterformular wählen.
Beitrag von: DF6GL am November 11, 2016, 17:13:13
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

Titel: Re: VBA Hilfe / Datensatz aus Unterformular wählen.
Beitrag von: Beaker s.a. am November 11, 2016, 18:39:55
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
Titel: Re: VBA Hilfe / Datensatz aus Unterformular wählen.
Beitrag von: DF6GL am November 11, 2016, 19:32:06
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
Titel: Re: VBA Hilfe / Datensatz aus Unterformular wählen.
Beitrag von: Brusellise am November 14, 2016, 09:18:58
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.


Titel: Re: VBA Hilfe / Datensatz aus Unterformular wählen.
Beitrag von: Brusellise am November 15, 2016, 10:18:35
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
Titel: Re: VBA Hilfe / Datensatz aus Unterformular wählen.
Beitrag von: DF6GL am November 15, 2016, 11:30:57
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
Titel: Re: VBA Hilfe / Datensatz aus Unterformular wählen.
Beitrag von: Beaker s.a. am November 15, 2016, 22:24:36
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
Titel: Re: VBA Hilfe / Datensatz aus Unterformular wählen.
Beitrag von: DF6GL am November 15, 2016, 23:06:41
Hallo,

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

Forms!Navigationsformular!Navigationsunterformular.Form.Recordsource ="SELECT * FROM tblReklamationen WHERE ID = " & Me!ID
Titel: Re: VBA Hilfe / Datensatz aus Unterformular wählen.
Beitrag von: Beaker s.a. am November 15, 2016, 23:14:13
Die Formnamen hatte ich aus dem OP abgeleitet.