Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: tobsn121 am Juni 30, 2015, 13:53:22

Titel: finden und öffnen eines recordsets
Beitrag von: tobsn121 am Juni 30, 2015, 13:53:22
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
Titel: Re: finden und öffnen eines recordsets
Beitrag von: MaggieMay am Juni 30, 2015, 14:50:44
Hallo,

in einem gebundenen Formular kannst du mit der Me.Recordset.FindFirst-Methode auf den gesuchten Datensatz springen.
Titel: Re: finden und öffnen eines recordsets
Beitrag von: tobsn121 am Juni 30, 2015, 15:02:23
ok, und wie genau würde ich das in meinen code dann einbinden?

Danke!
Titel: Re: finden und öffnen eines recordsets
Beitrag von: MzKlMu am Juni 30, 2015, 16:02:22
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 ?
Titel: Re: finden und öffnen eines recordsets
Beitrag von: tobsn121 am Juni 30, 2015, 16:10:22
die felder heißen: Project_Name und Covenant und sind beide vom datentyp string.
Titel: Re: finden und öffnen eines recordsets
Beitrag von: MzKlMu am Juni 30, 2015, 16:37:35
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 ?
Titel: Re: finden und öffnen eines recordsets
Beitrag von: tobsn121 am Juni 30, 2015, 17:07:01
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.