Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

DoCmd auf Unterformular in Access 2002





Frage

Hallo miteinander, habe folgenden Code: Forms![Auftragsdaten_Immobilie_kopieren]![Auftragsdaten_Objekt_übernehmen_Unterformular].SetFocus Forms![Auftragsdaten_Immobilie_kopieren]![Auftragsdaten_Objekt_übernehmen_Unterformular]![PLZ].SetFocus DoCmd.GoToRecord acDataForm, "Auftragsdaten_Immobilie_kopieren!Auftragsdaten_Objekt_übernehmen_Unterformular", acLast Bekomme die Fehlermeldung: Laufzeitfehler 2489: Objekt ist nicht geöffnet Habe mich schon durchgegoogelt, leider komm ich nicht weiter. Wer weiß einen Rat. Vielen Dank

Antwort 1 von Herbert

Hallo LarsB,
was willst Du erreichen ?

Wenn Dein Unterformular z.B. zum letztem Datensatz springen soll, wird das so nicht funktionieren.
Du kannst vom Unterformular das Hauptprogramm beeinflussen aber nicht umkehrt.

Natürlich gibts aber Tricks.
Z.Beispiel.
Lege im Hauptformular ein Zahlenfeld an (Kannste DU später unsichtbar machen.)
Frage das Feld vom Unterformular (Ereignisprocedur beim Anzeigen ab)


Procedure Beginn
Dim Rst2 As Recordset
Set Rst1 = Me.RecordsetClone

If Forms!Hauptformular!TestFeld = -1 then
Forms!Hauptformular!TestFeld = 0
Rst1.MoveFirst ´Geht zum Ertem Datensatz.
Me.Bookmark = Rst1.Bookmark
ElseIf Forms!Hauptformular!TestFeld = -2 then
Forms!Hauptformular!TestFeld = 0
Rst1.MoveLast Geht zum Letzten Datensatz
Me.Bookmark = Rst1.Bookmark
End If
Ende Procedur

Die Routine kommt immer zu tragen wenn Du vom Hauptprogramm ein
Unterprogramm.Requery auslöst.

Das Beispiel soll nur ein Anregung sein,.
Gruß Herbert

Antwort 2 von LarsB

Hallo Herbert,

ich möchte folgendes erreichen.
Ich habe eine Hauptformular1. Von dort aus Starte ich ein weiteres Hauptformular2 als POPUP. In diesem gibt es ein Unterformular1. Auf dem Hauptformular2 habe ich einen Knopf, der Daten aus dem Unterformular1 ins Hauptformular1 kopiert, was auch funktioniert. Leider werden immer die Daten des ersten Datensatzes im UF1 ins HF1 kopiert. Ich will aber, dass der letzte Datensatz im UF1 ins HF1 kopiert wird. Dazu will ich den Focus vor dem kopieren auf den letzen Datensatz im UF1 setzen.

Anbei der vollständige Code falls der hilft. Vielleicht kannst Du mir ja noch einen Tip geben:

Forms![Auftragsdaten_Immobilie_kopieren]![Auftragsdaten_Objekt_übernehmen_Unterformular].SetFocus
Forms![Auftragsdaten_Immobilie_kopieren]![Auftragsdaten_Objekt_übernehmen_Unterformular]![PLZ].SetFocus

DoCmd.GoToRecord acDataForm, "Auftragsdaten_Immobilie_kopieren!Auftragsdaten_Objekt_übernehmen_Unterformular", acLast



onummer = (DMax("[Objektnummer]", "Auftragsdaten_Objekt_übernehmen")) + 1
Forms![Auftragsdaten_Erfassung]![OBJEKTNUMMER] = onummer
Forms![Auftragsdaten_Erfassung]![PLZ] = Forms![Auftragsdaten_Immobilie_kopieren]![Auftragsdaten_Objekt_übernehmen_Unterformular]![PLZ]
Forms![Auftragsdaten_Erfassung]![Kunde] = Forms![Auftragsdaten_Immobilie_kopieren]![Auftragsdaten_Objekt_übernehmen_Unterformular]![ANTRAGSTELLER]
Forms![Auftragsdaten_Erfassung]![STRASSE] = Forms![Auftragsdaten_Immobilie_kopieren]![Auftragsdaten_Objekt_übernehmen_Unterformular]![STRASSE]
Forms![Auftragsdaten_Erfassung]![HAUSNUMMER] = Forms![Auftragsdaten_Immobilie_kopieren]![Auftragsdaten_Objekt_übernehmen_Unterformular]![HAUSNUMMER]
Forms![Auftragsdaten_Erfassung]![Ort] = Forms![Auftragsdaten_Immobilie_kopieren]![Auftragsdaten_Objekt_übernehmen_Unterformular]![Ort]
Forms![Auftragsdaten_Erfassung]![weitere Strassen] = Forms![Auftragsdaten_Immobilie_kopieren]![Auftragsdaten_Objekt_übernehmen_Unterformular]![weitere Strassen]
Forms![Auftragsdaten_Erfassung]![OBJEKTNAME] = Forms![Auftragsdaten_Immobilie_kopieren]![Auftragsdaten_Objekt_übernehmen_Unterformular]![OBJEKTNAME]
Forms![Auftragsdaten_Erfassung]![Bundesland] = Forms![Auftragsdaten_Immobilie_kopieren]![Auftragsdaten_Objekt_übernehmen_Unterformular]![Bundesland]
RunCommand acCmdSaveRecord


Vielen Dank

Lars

Antwort 3 von Herbert

Hallo LarsB,
die meisten Probleme löse ich in VBA , deshalb habe ich mit den anderen Hilfsroutinen weniger Erfahrung.
Trotzdem bin ich der Meinung das der Kopiervorgang von (Popup) Unterformular1 ausgelöst werden muß.
Traust Du Dir zu einem sichtbarem Feld im Unterformular1 ein Ereignis über DoppelClick zuzuordnen ?.

Wenn ja, trage dort nur zum Test folgendes ein:

Anfang Test
Dim OTestNummer
OTestNummer= (DMax("[Objektnummer]", "Auftragsdaten_Objekt_übernehmen")) + 1
Forms![Auftragsdaten_Erfassung]![OBJEKTNUMMER] = OTestNummer
Forms![Auftragsdaten_Erfassung]![PLZ] = me!PLZ

Ende Test

Wenn Du jetzt im Popup bist Dir einen Datensatz aussuchst und dann den DoppelClick ausführst, sollten in Hauptformular1 die beiden Werte eingetragen sein.

Die anderen Felder und der tatsächlich zunehmende WEg müssen noch ausgearbeitet werden, es sei denn es folgen hier bessere Lösungsvorschläge.
Gruß Herbert