Neuigkeiten:

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

Mobiles Hauptmenü

Index aus Formular1 beim Öffnen an Formular2 weitergeben

Begonnen von MisterSteve, Dezember 28, 2010, 14:39:41

⏪ vorheriges - nächstes ⏩

MisterSteve

Hallo zusammen,

ich habe ein Formular, dessen hinterlegte Tab bei jeder neuen Eingabe einen AutoWert (LongInt) unter der Bezeichnung "IndexB" speichert. Mit dem unten angehängten VB möchte ich 2 Dinge erreichen:

Durch den Button soll das zugehörige Formular "02e_Kostenbeteiligte" geöffnet werden. Die Daten befinden sich in Tab2, die ebenfalls ein Feld "IndexB" enthält. Dieses Formular ist dann
1. entweder leer oder
2. es erscheinen die bereits eingegebenen Daten.
Neu hinzugefügte Daten sollen - egal, ob schon welche vorhanden sind - nach der Eingabe direkt die IndexB-Verknüpfung bekommen.

Kurzbeispiel:

Form01: IndexB=45
=>
Form02: Firma IndexB
             ABC    45
             XYZ     45
            UVW    45

neu:    WWW -> 45

Bei mir geht leider nur immer das Form02 leer auf und der Index wird auch nicht mitgespeichert :(
Was ist falsch?
 

Private Sub Kostenbeteiligte_Click()
On Error GoTo Err_Kostenbeteiligte_Click

   DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

   Dim stDocName As String
   Dim stLinkCriteria As String

   stDocName = "02e_Kostenbeteiligte"
   
   stLinkCriteria = "[IndexB]=" & Me!IndexB
   DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Kostenbeteiligte_Click:
   Exit Sub

Err_Kostenbeteiligte_Click:
   MsgBox Err.Description
   Resume Exit_Kostenbeteiligte_Click
       
End Sub

MzKlMu

Hallo,
wenn Du das zugehörige Formular "02e_Kostenbeteiligte" als Unterformular in Formular1 einbindest, hast Du ohne eine einzige Zeile VBA die von Dir gewünschte Funktionalität.
Zitatnach der Eingabe direkt die IndexB-Verknüpfung bekommen.
Selbst das geht dann automatisch.
Hafo und Ufo müssen über die Schlüsselfelder verknüpft sein.
Gruß Klaus

MisterSteve

Das ist schon richtig, nur ist das 1.Formular zum einen schon recht unübersichtlich, da hier etliche Einträge nötig sind (füllt fast 1 Bildschirmseite) und zum anderen hab ich die Formulare thematisiert (es gibt noch 8 weitere!).

Gibt's u.U. doch eine VB-Lösung?

MzKlMu

#3
Hallo,
übergibt den Wert noch in den Öffnungsargumenten.

stLinkCriteria = "[IndexB]=" & Me!IndexB
   DoCmd.OpenForm stDocName, , , stLinkCriteria, , , Me!IndexB


Als Standardwert für das Indexfeld in Formular2 trägst Du dann ein:
=[Öffnungsargumente]

ZitatDas ist schon richtig, nur ist das 1.Formular zum einen schon recht unübersichtlich, da hier etliche Einträge nötig sind (füllt fast 1 Bildschirmseite) und zum anderen hab ich die Formulare thematisiert (es gibt noch 8 weitere!).
Registersteuerelemente wirken hier Wunder. Da bringst Du zusammenhängend alle Infos sehr übersichtlich strukturiert auf ein Formular. Mit den 8 anderen.
Gruß Klaus

MisterSteve

Cool, Danke!!!

Nur noch eine Kleinigkeit:

funzt das auch mit 2 Kriterien:

   Dim stLinkCriteria1 As String
   Dim stLinkCriteria2 As String

   stDocName = "02e_Kostenbeteiligte"
   
   stLinkCriteria1 = "[Projektbezeichnung]=" & "'" & Me![Projektbezeichnung] & "'"
   stLinkCriteria2 = "[IndexB]=" & Me!IndexB


Ist nicht zwingend, aber wenn ich zur Kontrolle in die Tab2 schaue, tue ich mir mit der Projektbezeichnung wesentlich leichter als mit einer Zahl.

Das Argument mit den Registersteuerelementen ist auch nicht schlecht - werde das mal bei Gelegenheit testen, aber diese DB steht ja jetzt ;)

MzKlMu

Hallo,
ist der IndexB der Index der Projektbezeichnung?

Bitte etwas genauer erklären.
Gruß Klaus

MisterSteve

Sorry, war etwas ungenau:

Der Index ist der Primärschlüssel und ein fixer Wert in der Tab1.
Die Projektbezeichnung ist ebenfalls ein Wert der Tab1, der i.d.R. auch "einzigartig" ist.

Wunschgedanke:
An die Tab2 sind Index und zugehörige Projektbezeichnung zu übergeben.

Zum Hintergrund:
Eigentlich habe ich - da ich mir nicht anders zu helfen wusste - das Form1 doppelt. Das eine ist das frmNeu, das andere das frmErgänzung.
Neu ist einfach, da automatisch ein weiterer Index erzeugt wird und ich die Projektbezeichnung manuell eingebe.
Ergänzung ist das Form, von dem es weiter geht. Dort mache ich über ein Auswahlfeld ein bestimmtes, bereits angelegtes Projekt über die Projektbezeichnung auf und kann so im Form1 (Ergänzung) bereits ergänzende Eintragungen vornehmen. Über den VB-Button gelange ich dann zum Form2 (Kostenbeteiligte) - weiter wie bereits beschrieben...
Übergeben werden sollte hier nun nicht nur der Index, sondern auch die Projektbezeichnung - auch wenn das redundante Datenhaltung ist. Nachdem niemand unfehlbar ist und Falscheingaben manchmal vorkommen, hätte ich gerne durch einen einfachen Blick auf die Tab2 den "Übeltäter" ertappt.


DF6GL

Hallo,

Deine Begründung unterliegt einem logistischem "Zirkelbezug"   ;)  und ist an mehr oder weniger an den Haaren herbei gezogen   ;) ;D


Wenn Du die Pr.Bezeichnung nicht nochmal eingibst, brauchst Du sie auch nicht prüfen... (auch wenn es für eine mögliche Fehleingabe sein soll, die gar nicht nötig ist...)

Führe einfach das Feld "Indexb" in Tabelle Tab2 als Kombi aus und lass in einem weiterem Textfeld die Pr. Bez. anzeigen. (z. B. =IndexB.Column(1) , wenn Datensatzherkunft des Kombis so etwa lautet:  Select IndexB, Projektbezeichnung from Tab1  )