Neuigkeiten:

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

Mobiles Hauptmenü

Datensatz über Kombinationsfeld auswählen

Begonnen von AMB, Februar 18, 2014, 09:30:35

⏪ vorheriges - nächstes ⏩

AMB

Hallo Zusammen,

In einem Formular habe ich zwei ungebundene Kombinationsfelder. Hierüber sollen die entsprechenden Datensätze ausgewählt werden. Kombifeld1 nur die Aktiven, Kombifeld2 Alle.
Die Datensatzherkunft ist eine Abfrage.
Code der Felder:
-Private Sub cboAktiv_AfterUpdate()
'Datensatz speichern'
DoCmd.RunCommand acCmdSaveRecord
On Error GoTo Fehler
'Datensatz anwählen'
Dim Datensatz1 As Object
    Set Datensatz1 = Me.Recordset.Clone
    Datensatz1.FindFirst "tblQMA0500901ID = " & Int(Me!cboAktiv)
    If Not Datensatz1.EOF Then Me.Bookmark = Datensatz1.Bookmark
Me.Refresh
Exit Sub
Fehler:
    MsgBox Err.Description & vbCrLf & Err.Number
End Sub
-Private Sub cboAktiv_GotFocus()
Me.Refresh
End Sub

-Private Sub cboAlle_AfterUpdate()
'Datensatz speichern'
DoCmd.RunCommand acCmdSaveRecord
On Error GoTo Fehler
'Datensatz anwählen'
Dim Datensatz2 As Object
    Set Datensatz2 = Me.Recordset.Clone
    Datensatz2.FindFirst "tblQMA0500901ID = " & Int(Me!cboAlle)
    If Not Datensatz2.EOF Then Me.Bookmark = Datensatz2.Bookmark
Me.Refresh
Exit Sub
Fehler:
    MsgBox Err.Description & vbCrLf & Err.Number
End Sub
-Private Sub cboAlle_GotFocus()
Me.Refresh
End Sub

Das funktionierte bis zu einer gewissen Anzahl von Datensätzen einwandfrei.
Nun ist es allerdings so, dass (manchmal) nach der Auswahl ein falscher Datensatz angezeigt wird. Oder der richtige Datensatzsatz wird angezeigt und beim Ändern des Datensatzes wird direkt in den falschen Datensatz gesprungen und dort die Änderung eingetragen.
Der wird dann immer um genau 100 Datensätze zurückgesprungen. Nur wenn ich das Formular verlasse und neu öffne, passiert dies nicht.

Wo liegt der Fehler? Jemand eine Idee?
Gruß

Hondo

Hallo,
was genau möchtest du jetzt machen? Den entsprechenden Datensatz mittels ungebundenem Kombinationsfeld auswählen?
Warum verwendest du dann nicht einfach einen Filter?
Private Sub cboAktiv_AfterUpdate()
    Me.Filter = "Textfeld='" & Me.cboAktiv & "'"
    Me.FilterOn = True
End Sub

DF6GL

Hallo,

neben dem was Hondo sagt, frage ich mich, warum Me.Refresh nach dem Positionieren auf den Datensatz gemacht wird..


Und beim Aktualisieren der Kombiliste(n) , was vermutlich bezweckt werden soll, wäre ein Requery des Kombis angebrachter (bei "Enter"-Ereignis, sollte es überhaupt nötig sein)


Private Sub cboAktiv_Enter()
Me.Requery
End Sub
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

AMB

Hallo,

ich habe es nun mal über die Methode von Hondo probiert, aber bekomme nur eine Fehlermeldung:
Datentypenkonflikt in Kriterienausdruck
3464

Was ist an meiner Methode falsch?

Hondo

Warum postest du deinen Code nicht?
So können wir nur raten dass die gebundene Spalte im Kombinationsfeld ein Zahlenfeld ist.
Dann müsstest du die Hochkommatas entfernen.

AMB

Die Spalte ist ein Zahlenfeld (ID). Die Hochkommatas habe ich nun entfernt.
Code:
Me.Filter = "tblQMA0500901ID= Me.cboAlle"
Me.FilterOn = True

Wenn ich nun einen Datensatz auswähle, dann kommt eine Parameterabfrage.
1. Der Datensatz soll aber über das Kombifeld ausgewählt werden, keine Parameterabfrage
2. Eine erneute Abfrage eines weiteren Datensatzes soll auch möglich sein (ist in dem Fall nicht möglich)

Hondo

Verweis auf Formularfelder müssen außerhalb des Strings sein:
Me.Filter = "tblQMA0500901ID = " & Me.cboAlle

bahasu

Hi,

anbei ein Vorschlag, der auch einen leeren Inhalt im Auswahlfeld berücksichtigt.

Private Sub cboAlle_AfterUpdate()
    If Nz(Me.cboAlle, 0) > 0 Then
        Me.Filter = "tblQMA0500901ID=" & Me.cboAlle
        Me.FilterOn = True
    Else
        Me.Filter = ""
        Me.FilterOn = False
    End If
End Sub


Harald
Servus