Neuigkeiten:

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

Mobiles Hauptmenü

OpenArgs Problem - Datenweitergabe fehlerhaft

Begonnen von Heine90, Mai 15, 2014, 17:37:02

⏪ vorheriges - nächstes ⏩

Heine90

Hallo an alle,

ich verwende MS Access 2010 und habe ein Problem mit der Datenweitergabe innerhalb von Formularen.
In der Datenbank gibt es eine Tabelle mit allgemeinen Vertragsinfos (ContractT) und aktuell drei Tabellen mit jeweiligen Details (Details Versicherungsvertrag, Vertrag mit Direktoren etc.). Verknüpft sind diese über die Contract ID.

Nun arbeite ich an einer Formularreihe, die es ermöglichen soll, die Verträge und die Details einzusehen, zu bearbeiten und über Abfragen Berichte auszudrucken. Ich habe ein Formular, in dem man die generellen Infos einsehen kann (aus ContractT). Per Button sollen nun die Details (via der ContractID Verknüpfung) in weiteren Formularen einsehbar werden. 

Dazu habe ich den Button mit dem folgenden VBA-Code ausgestattet:

Private Sub Befehl67_Click()


If (ContractType = 1) Then
    DoCmd.OpenForm "AddOandMContractF", acNormal, , , , , Me!ContractID
End If

If (ContractType = 2) Then
    DoCmd.OpenForm "AddAdminContractF", acNormal, , , , , Me!ContractID
End If

If (ContractType = 3) Then
    DoCmd.OpenForm "AddDirectorContractF", acNormal, , , , , Me!ContractID
End If


End Sub


Für den ersten Vertrag (ContractType = 1) hat es wunderbar funktioniert, jetzt habe ich einen zweiten Vertrag des gleichen Typen als Datensatz gespeichert, aber bei Klicken des Buttons werden die Details des ERSTEN Vertrages angezeigt. Dazu sollte ich sagen, dass das Formular, welches den Button enthält ein Endlosformular ist, auf welchem ich eine Suchfunktion eingerichtet habe.

Kann mir jemand damit helfen? Vor Klicken des Buttons speichern habe ich versucht, dass hat nicht geholfen.

Vielen Dank,

Heine

MzKlMu

#1
Hallo,
es nutzt absolut nichts, die Openargs zu übergeben, wenn im aufgerufenen Formular nicht zu der mit Openargs übergebenen ID positioniert wird, das geht nicht automatisch. Die Datenübergabe ist auch nicht fehlerhaft, es wird nur nichts damit gemacht. Es wird immer zum 1.DS positioniert. Aber die ganze Openargsgeschichte ist in dieser Form nicht sinnvoll, Du kannst die ID direkt im Openbefehl als Where Kriterium übergeben. Außerdem lässt sich der Code auch noch verkürzen.
ZitatPrivate Sub Befehl67_Click()
Dim Formularname(4) As String
    Formularname(1) = "AddOandMContractF": Formularname(2) = "AddAdminContractF": Formularname(3) = "AddDirectorContractF"
    DoCmd.OpenForm Formularname(ContractType), acNormal, , "ContractID = " & Me!ContractID
End Sub
Ich würde es allerding noch einfacher machen und den Formularnamen in der Tabelle mit den ContractTyp als Feld anlegen und darin den Formularnamen speichern.
Dann hast Du direkt den Namen des zum Typ gehörenden Formulars.
Gruß Klaus

Heine90

Super, danke für die Hilfe!

Heine

PS: In der Datenbak gibt es bestimmt die ein oder andere Sache, die man eleganter lösen kann - das sind meine ersten Versuche in Access. Daher bin ich immer froh über solche Tipps!