PDA

Vollständige Version anzeigen : Me.recordsource mit SQLString


Theo B.
30.05.2012, 07:11
Hallo zusammen,

ich weiss mir keinen Rat mehr.

Versuche mittels SQL-String eine RecordSource in einem Formular zuszuweisen.

Ich bekomme aber immer wieder die Fehlermeldung 2107 "Der von Ihnen eingegebene Wert entspricht nicht der Gültigkeitsregel, die für das Feld bzw Steuerelement definiert ist"

Was mache ich falsch?
Habs auch schon mit ..."& "'" & Me![Kombiamt] & "'" &... versucht

Quellcode:

Private Sub Kombiamt_BeforeUpdate(Cancel As Integer)
Dim Projektabfragestring As String

Projektabfragestring = "SELECT [Pruefmaßnahmenabfrage].* FROM [Pruefmaßnahmenabfrage] WHERE (([Pruefmaßnahmenabfrage].[Auftraggeber])=" & Chr(34) & Me![Kombiamt] & Chr(34) & ");"

Me.RecordSource = Projektabfragestring
Me.Requery

End Sub

Storch
30.05.2012, 07:30
Moin,

versuch es mal so.

Projektabfragestring = “Select * From Pruefmaßnahmeabfrage Where Auftraggeber = ‘” & Me!Kombiamt & “’”

Stellt sich nur die Frage, was gibt das Kombifeld zurück... Zahl oder String???
Das obige Beispiel ist für einen Stringwert, bei einem Zahlwert müssen die einfachen Hochkomma weg und dann kannst DU den restlichen Teil hinter Me!Kombiamt ganz weglassen.

Es ist zudem nicht falsch aber auch nicht nötig, Benamsungen in eckige Klammern zu setzen, solange der Name den Konventionen entspricht.

In der SQL-Anweisung reicht dann auch Select * da er den Bezug zu der Quelle ja über die From-Klausel bekommt. Werden allerdings mehrere Quellen in einer Anweisung bemüht, kann es notwendig werden, auch die Quellen zu benennen in der Form: tbl_ABS.Feld1

Beachte auch, das sich die Schreibweisen im Abfrageditor und im VBA-Code unterscheiden. So verlangt der Abfrageditor den Abschluss einer Anweisung mit einem Semikolon, in VBA-Code ist dies nicht notwendig.

Josef P.
30.05.2012, 08:33
Hallo!

Hängt der Fehler sicher mit der SQL-Anweisung zusammen?
Ich nehme an, der kommt auch, wenn der Code folgendermaßen aussieht:
Private Sub Kombiamt_BeforeUpdate(Cancel As Integer)

Me.Requery

End Sub

Ich vermute, dass das Kombinationsfeld an ein Datenfeld aus der Datenherkunft des Formulars gebunden ist.

mfg
Josef

Theo B.
30.05.2012, 15:13
Hallo zusammen,

Danke für das Feedback.

Es lag daran, dass ich als Ereignis nicht Kombiamt_BeforeUpdate sondern Kombiamt_AfterUpdate benutzen mußte

mfg
Theo B.

Beaker s.a.
30.05.2012, 23:21
Hallo Uwe,
Ich schon wieder ;)
So verlangt der Abfrageditor den Abschluss einer Anweisung mit einem Semikolon, in VBA-Code ist dies nicht notwendig.
Nach meiner Erfahrung ist das ; auch im Abfrageeditor nicht notwendig,
es wird nur jedesmal, wenn man von der Entwurfs- in die SQL-
Ansicht schaltet, automatisch dran gehängt. Ich konnte es aber bis jetzt
immer wieder löschen, ohne Auswirkungen auf die Ausführung der Abfrage.
gruss ekkehard

Storch
31.05.2012, 08:19
Hallo Uwe,
Ich schon wieder ;)
Ja guck, mein persönlicher Zensor :grins: *mal schnell wechduck

Das habe ich in der Tat so noch nie getestet, sondern als gegeben angenommen.

Aber gut, wenn hier falsche Äußerungen korrigiert werden:) Es ist ja nicht meine Absicht, jemanden in die Irre zu leiten.

Beaker s.a.
31.05.2012, 21:26
Hallo Uwe,
Ja guck, mein persönlicher Zensor *mal schnell wechduck
Zensur sollte das nicht sein, aber man braucht doch seine persönlichen Erfolgserlebnisse, wenn man mal "mehr" weiss als die Profis ;)
Das habe ich in der Tat so noch nie getestet, sondern als gegeben angenommen.
Ja, ich habe früher auch immer brav das " & ";" " in VBA hinterdran gehängt,
weil der Editor es eben auch machte. Bis ich es dann auch gelesen habe, dass das Semikolon völlig überflüssig ist. Und da ich inzwischen auch schon einfachere Abfragen direkt in der SQL-Ansicht schreibe, habe ich die da dann auch weggelassen, ohne das es Fehlermeldungen gab.
Aber gut, wenn hier falsche Äußerungen korrigiert werden
Das Semikolon stört aber ja auch nicht.
Es ist ja nicht meine Absicht, jemanden in die Irre zu leiten.
Das würde ich mir auch nicht erlauben zu unterstellen.
gruss ekkehard