Terve !
Voisiko joku neuvoa miten saisin haettua ja avattua toisen lomakkeen avaimen perusteella. Minulla on henkilölomake ja auto lomake. Henkilöllä voi olla monta autoa, jotka luodaan henkilölomakkeella olevasta painikkeesta. Luonnissa vien autolle myös henkilönro:n (avaimeksi) Tällä henkilönro:lle minun pitäisi saadaa auto kiinni ja avata se tai jos henkilöllä ei ole autoa se luodaan uutena. Teen tämän käyttämällä Accessia kantana. Ongelmana on myös mihin tämän haun sijoitan (henkilölomakkeen painikkeeseen tai auto lomakkeella olevaan datacontrolliin)
Onko neuvoja..
Henkilölomakkeen painikkeeseen, jossa käskytät auto-lomakkeen datakontrollia hakemaan haluamasi tiedon.
'Kaksi formia, joista Form2:lla on tavallinen Data-kontrolli. 'Esitetään Form2:lla TiedostoID(13):sta tiedot. Private Sub Command1_Click() Load Form2 'Huomioi, että TiedostoID:n täytyy olla sarake kyseisessä tietokannassa Form2.Data1.Recordset.FindFirst "TiedostoID = 13" If Form2.Data1.Recordset.NoMatch Then 'Arvoa ei löytynyt, joten suljetaan Form2 ilman että sitä tuodaan näkyviin MsgBox "Nada", vbInformation, "WTF!?" Unload Form2 Else Form2.Show End If End Sub
Edit:Filtterin käyttö...
Private Sub Command1_Click() 'filtteröidyt Load Form2 'esitetään vain tiedot TiedostoID:llä 13. Set Form2.Data1.Recordset = FilterField(Form2.Data1.Recordset, "TiedostoID=13") If Form2.Data1.Recordset.RecordCount = 0 Then MsgBox "Nada", vbInformation Unload Form2 Else Form2.Show End If End Sub Private Sub Command2_Click() 'kaikki tiedot Form2.Show End Sub Function FilterField(rstTemp As Recordset, _ strFilter As String) As Recordset 'Filtteröidään vain halutut tiedot mukaan rstTemp.Filter = strFilter Set FilterField = rstTemp.OpenRecordset End Function
Kiitos...Hiukan helpotti.
Kysymys:
Miten saan muutettua tähän esimerkin koodiin:
Form2.Data1.Recordset.FindFirst "TiedostoID = 13"
13:sta tilalle kentän auto lomakkeelta. Eli vertaisin Henkilölomakkeella olevaa TiedostoID kenttää Autolomakkeella olevaan AutoID kenttään ?
Avattaisiin aina samalla ID:llä oleva tieto
frmHenkilo.Data1.Recordset.FindFirst "TiedostoID = " & _ frmAuto.lblTiedostoID.Caption"
Eli et-merkillä liität jonon jatkoksi haettavan tiedon. Tässä tapauksessa Auto-formin TiedostoID-labelin sisältö.
Sain toimimaan tällä komennolla..
frmhenkilo.TiedostoID.Text = TiedostoID.Text
Mutta missä on vika kun antaa hakea vain yhden arvon.
Esim. jos kannassa on autot ja vastaavasti henkilöt ID:llä 1, 2, ja 3. Jos olen autossa 1 ja etsin henkilöä 1 niin löytyy, mutta muut ei löydy. Taas jos poistan kokonaan henkilön 1 niin löytää seuraavana autolomakkeelta haettavan 2 henkilön. Vaikuttaako tähän arvo henkilö lomakkeella olevan dataonjektin arvo ?. Nyt siellä on valittuna kohtaan Recordsource taulu henkilöt.
Toivottavasti en selittänyt liian vaikeasti =)
Aihe on jo aika vanha, joten et voi enää vastata siihen.