September 19, 2021, 07:17:57

Neuigkeiten:

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


VBA-Code funktioiniert bei einem Wert, bei einem anderen nicht

Begonnen von OPS, Mai 19, 2010, 15:44:03

⏪ vorheriges - nächstes ⏩

OPS

Hi

Es gibt ein Formular mit einer Liste. Ich drücke auf den "View" Button, dann soll ein Detailformular aufgehen, das die Details für den Eintrag in der Liste zeigt.

Ich habe im Ausgangsformular je Datensatz Textfelder ID_DT und ID_Signal welche die IDs einwandfrei anzeigen, im Zielformular gibt es auch entsprechende Textfelder. Mit dem Button View sollen im Zielformular die eingegebenen IDs aufgerufen werden.
Mit ID_DT klappt es, mit ID_Signal nicht.

Ich habe einen kurzen VBA-Code geschrieben, der ursprünglich beide IDs verlinken sollte, weil das nicht gleich geklappt hat, habe ich den Button erst mal getrennt ausprobiert, beide IDs einzeln. für die eine ID funktioniert er, für die andere seltsamerweise nicht. Dabei sind die IDs in dem Zielformular korrekt verlinkt. Ich kann mir das nicht erklären! Weiß jemand Rat?

Quelltext der Funktioniert:

Private Sub btn_View_Data_Click()

    Dim stLinkCriteria_DT As String
    stLinkCriteria_DT = "ID_DT = " & Nz(Me.ID_DT, 0)
    DoCmd.OpenForm "FM_View_Desk_Tile_Data_P1", , , stLinkCriteria_DT, , acDialog
   
Exit_subOpenForm:
    Exit Sub

End Sub


Quelltext der nicht funktioniert:

Private Sub btn_View_Data_Click()

    Dim stLinkCriteria_Signal As String
    stLinkCriteria_Signal = "ID_Signal = " & Nz(Me.Signal_DT, 0)
    DoCmd.OpenForm "FM_View_Desk_Tile_Data_P1", , , stLinkCriteria_Signal, , acDialog
   
Exit_subOpenForm:
    Exit Sub

End Sub


Im Grunde geht es nur darum, die Werte im Tabellenformular an das Zielformular zu übergeben. Geht das vielleicht auch irgendwie anders?

DF6GL

Mai 19, 2010, 16:33:59 #1 Letzte Bearbeitung: Mai 19, 2010, 16:37:39 von DF6GL
Hallo,

welchen Datentyp hat denn "ID_Signal" in der den Formularen zugrundeliegenden Tabelle?

Falls es sich um "Text" handelt, sollte das so aussehen:

stLinkCriteria_Signal = "ID_Signal = '" & Nz(Me!Signal_DT, "") & "'"


Weiterhin:

"Es gibt ein Formular mit einer Liste."   was heißt das? Ein "Endlosform" oder ein "Listenfeld" in einem (Einzel-) Form?

Wo (in welchem Bereich) befinden sich die Buttons im Ausgangsform? (Wichtig, falls es ein Endlosform ist)

OPS

Danke für die Antwort

Beide IDs sind Autowerte vom Datentyp Long Integer.

DF6GL

Hallo,

Zwei Autowerte in einer Tabelle?  Oder ist für die Datenherkunft des Forms eine Abfrage über zwei Tabellen eingesetzt?

Hat dann das zweite Form dieselbe Abfrage als Datenherkunft?

OPS

Nein nein, das Herkunftsformular ist eine Art Liste. Sie vereint mittels einer Hilfstabelle zwei Tabellen mit m:n Beziehung.

tbl_Signals --->tbl_Unite<--- tbl_DT

tbl_Unite
ID_Unite
FK_ID_DT
FK_ID_Signals

Was also in dem Formular FO_Overview steht ist eine Auflistung der ID-Paare ohne weitere Details.
1 45 16
2 45 17
3 11 99

Jetzt möchte ich an ein anderes Formular übergeben, das weitere Details der beiden Werte angibt.
Wenn ich jetzt den Datensatz 1 auswähle, geht ein Formular auf in dem aus der Tabelle tbl_DT alle Felder der ID 45 angegeben sind. In dem selben Formular werden auch die Felder der Tabelle tbl_Signals mit ID 16 angezeigt werden.

Das kuriose: Mit dem unten beschriebenen Quellcode funktioniert es für ID_DT, es funktioniert NICHT für ID_Signal.
Würde ich also nur die Details von DT aufrufen wollen, würde das bereits funktionieren.
Zum Testen versuche ich bereits nur ID_Signals zu übertragen, aber es klappt seltsamerweise nicht.

Und das kann ich mir nicht erklären, es kommt auch keine Fehlermeldung. In der Datenherkunft des Zielformulars sind beide Tabellen und ihre Werte gleichberechtigt aufgeführt.
Habe ich irgendwo etwas übersehen?

Datenherkunft des Zielformulars:

SELECT [tbl_Unite].[ID_Unite], [tbl_Unite].[FK_Signals], [tbl_Unite].[FK_Desktile], [tbl_DT].[ID_DT], [tbl_signals].[ID_Signal] FROM ([tbl_signals] INNER JOIN ([tbl_DT] INNER JOIN [tbl_Unite] ON [tbl_DT].[ID_DT] =[tbl_Unite].[FK_DT]) ON [tbl_signals].[ID_Signal] =[tbl_Unite].[FK_Signals])

DF6GL

Hallo,

für die Anzeige der DS aus "tbl_Signals" brauchst Du dann ja auch ein anderes Form, das auf Tabelle "tbl_Signals" basiert...

OPS

Ich will aber beide Infos in einem Formular anzeigen.

Das Zielformular basiert ja auch nicht auf tbl_DT, und dennoch kann ich ID_DT an das Zielformular übergeben.
ID_Signals nicht.

Wenn da mein Denkfehler liegt, erkläre ihn mir bitte, warum kann ich ID_DT übergeben, ID_Signals nicht?
Wenn beides nicht ginge hätte ich ja ein einsehen, aber die beiden sind doch eigentlich von Geburt getrennte Zwillingsbrüder.

OPS

Jetzt gehts!

Du hast mich auf die richtige Fährte gebracht, das Listenformular hatte eine unzureichende Datenherkunft. Jetzt gehts. Danke für die Hilfe!