Miten saisi haettua tietokannasta jonkin kentän kaikki tiedot listboxiin?
1. Ei jooko näitä "tehkää mulle tällänen ja tällänen koodi joka tekee niin ja näin."
2. Auttaisi asiaa jos kertoisit minkälainen tietokanta.
Access tietokantassa ovat etunimi ja sukunimi taulut. Haluaisin hakea tietokannasta kaikki etunimet kerralla listboxiin. Saan kyllä yhteyden tietokantaan (kokeilin sitä text-kentän avulla), mutta mitään en saa näkyviin listboxiin.
Listpoksiin saa lisättyä tavaraa näin:
list1.additem ja_tähän_tulee_se_data_jonka_haluat_listpoksiin
Kiitos! Mulla oli = liikaa.
Mikä vielä mättää? Yritän hakea etunimeä napsauttamalla kaikki henkilöt, joilla on sama sukunimi lstSuku listaan. Antaa virheeksi: vähintään yhdelle pakolliselle parametrille ei ole annettu arvoa
Private Sub lstEtu_Click() ' tyhjenntään lista aluksi lstSuku.Clear ' laitetaan listaindeksi osoittamaan listaluetteloon ListIndex = lstEtu.Text ' listaindeksin mukaan haetaan etunimiä vastaavat sukunimet Dim SQLALL As String Set rsNimi = New ADODB.Recordset 'SQL haettu lause, joka tallennetaan muuttujaan SQLALL SQLALL = "SELECT * FROM sukunimi WHERE etunimi=ListIndex;" rsNimi.Open SQLALL, cn, adOpenKeyset, adLockOptimistic rsNimi MoveLast 'siirtää tulostusjoukon osoittamaan ensimmäistä alkiota rsNimi.MoveFirst Do While Not rsNimi.EOF frmPäälomake.lstSuku.AddItem rsNimi.Fields(1) rsNimi.MoveNext Loop End Sub
Kerroppa vielä millä rivillä virhe on.
tällä: rsNimi.Open SQLALL, cn, adOpenKeyset, adLockOptimistic
Et anna tuolle rsNimi tarpeeksi parametrejä?
eli tuo
rsNimi.Open SQLALL, cn, adOpenKeyset,AdLockOptimistic, puuttuisiko_kenties_tästä_vielä_jotain?
Ja tuo seuraava rivi
rsNimi MoveLast
kannattaa korjata muotoon:
rsNimi[l].[/l]MoveLast
Ilmeisesti puutuu, mutta mikä se voisi olla?
rsNimi.Open SQLALL, cn, adOpenKeyset,AdLockOptimistic, puuttuisiko_kenties_tästä_vielä_jotain?
Tässä se virhe on:
SQLALL = "SELECT * FROM sukunimi WHERE etunimi=ListIndex;"
En tiedä mitä tuo ; tekee tuolla yleensäkkään, mutta jos haluat sisällyttää sql-stringiin muuttujan, syntaksi on suunnilleen tämännäköistä:
SQLALL = "SELECT * FROM sukunimi WHERE etunimi='" & muuttuja & "'"
Joo. Haluaisin sisällyttää muuttujan ja muuttuja olisi nimenomaan tuo etunimi, jota on likattu listassa lstEtu. Eli SELECT lause hakisi sukunimet, joita vastaa sama etunimi.
Siinä tapauksessa tämän pitäisi toimia:
SQLALL = "SELECT * FROM sukunimi WHERE etunimi='" & lstEtu.Text & "'"
Ei jaksa kyllä tehdä projektia että kokeilis kaikkea, mutta jos jotakin: "ListIndex = lstEtu.Text", "rsNimi MoveLast" ja "rsNimi.MoveFirst" vaikuttaa turhilta, ja "Do While Not rsNimi.EOF" pitäis laittaa muotoon:
Do Until rsNimi.EOF Or rsNimi.BOF
Näyttää siltä että käytät ääkkösiä formien nimissä? Se ei ole kovinkaan hyvä idea. Vaikka toisinaan toimii, toisinaan ei.
Tietokantayhteys on varmaan luotu jossain muualla? Kun tuo Recordsetin syntaksi näyttää _niin_ oudolta...
Aihe on jo aika vanha, joten et voi enää vastata siihen.