Neuigkeiten:

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

Mobiles Hauptmenü

finden und öffnen eines recordsets

Begonnen von tobsn121, Juni 30, 2015, 13:53:22

⏪ vorheriges - nächstes ⏩

tobsn121

Hallo Zusammen,

ich möchte gerne durch einen Button zwei werte abfragen, durch welche ein zugehöriger datensatz eindeutig bestimmt ist und dann den selben im formular ausgeben.
Leider finde ich nicht wie ich den zugehörigen datensatz öffenen kann.. bei mir wird immer der aktuell im formular geöffnete datensatz mit dem in der suche gefundenen datensatz überschrieben..

besten dank schon mal!

hier mein bisheriger code:
Private Sub cmdSearch_Click()
    Dim rst As New ADODB.Recordset
    Dim x As Integer


    str_Project_Name = InputBox("Please enter the name of related Project")
    str_Covenant = InputBox("Please enter the related Covenant")

    If str_Project_Name = "" Then
        End
    End If

    rst.Open _
    "Select *" & _
    "From [tblCovenants]" & _
    "where [Project_Name] Like '%" & str_Project_Name & "%' And [Covenant] Like '%" & str_Covenant & "%'", _
    ActiveConnection:=CurrentProject.Connection, _
    CursorType:=adOpenKeyset, _
    options:=adCmdTableDirect

    x = rst.AbsolutePosition
   
   
    DoCmd.GoToRecord , , acGoTo, x


    Do Until rst.EOF
        Application.Forms("frmCovenants").Controls("ID").Value = rst![ID]
        Application.Forms("frmCovenants").Controls("Project_Name").Value = rst![Project_Name]
        Application.Forms("frmCovenants").Controls("Covenant").Value = rst![Covenant]
        Application.Forms("frmCovenants").Controls("CTA_Clause").Value = rst![CTA_Clause]
        Application.Forms("frmCovenants").Controls("Review_Frequency").Value = rst![Review_Frequency]
        Application.Forms("frmCovenants").Controls("Frequency").Value = rst![Frequency]
        Application.Forms("frmCovenants").Controls("Last_Review").Value = rst![Last_Review]
        Application.Forms("frmCovenants").Controls("Next_Review").Value = rst![Next_Review]
        Application.Forms("frmCovenants").Controls("Fullfilled?").Value = rst![Fullfilled?]

        rst.MoveNext
    Loop
    rst.Close
    Set rst = Nothing


   

End Sub

MaggieMay

Hallo,

in einem gebundenen Formular kannst du mit der Me.Recordset.FindFirst-Methode auf den gesuchten Datensatz springen.
Freundliche Grüße
MaggieMay

tobsn121

ok, und wie genau würde ich das in meinen code dann einbinden?

Danke!

MzKlMu

Hallo,
Zitatok, und wie genau würde ich das in meinen code dann einbinden?
gar nicht, der wird bei einem gebundenen Formular gar nicht mehr benötigt. Verwende als Datenherkunft für das Formular einfach die Tabelle. Suchen tust Du mit 2 Feldern mit den das Formular dann einfach gefiltert wird.

Wie heißen die Felder nach denen Du suchen willst und welcher Datentyp haben diese ?
Gruß Klaus

tobsn121

die felder heißen: Project_Name und Covenant und sind beide vom datentyp string.

MzKlMu

Hallo,
Button zum Filtern:

Me.Filter = "Project_Name = '" & Me.Formularfelddazu & "' And Covenant = "' & Me.Formularfelddazu &"'")
Me.FilterOn = True


Das Formular muss gebunden sein.

Wieso benötigst Du 2 Felder zur Eindeutigkeit, gibt es da keinen Primärschlüssel ?
Gruß Klaus

tobsn121

gibt es schon, nur kennt der nutzer diesen nicht zwingend, daher ist es intuitiver ihn nach etwas suchen zu lassen was er tatsächlich wissen will.