Olen tekemässä VB6:llä ja ADO:a käyttäen ohjelmaa
joka tekee tietyn kyselyn Access-tietokantaan,
mutta saan virheilmoituksen:
Run-time error '-2147217904 (80040e10)':
[Microsoft][ODBC Microsoft Access -ohjain] Liian
vähän parametrejä. Tarvitaan 1.
Ilmoitus tulee juuri kun olen avaamassa
recordsettiä:
Joko:
rs.Open cmd, , adOpenStatic, adLockReadOnly,
adCmdText
tai:
rs.Open "SELECT osat.* From osat WHERE ((([osat].
[Osanro])=" & Chr(34) & "10014" & Chr(34) & "))"
Ihmeellistä on että seuraava tapa toimii:
rs.Open "SELECT OSAT.* From osat", cn, , ,
adCmdText
mutta en saa millään toimimaan sitä niin että
WHERE olisi mukana.
Mitä parametrejä tulisi asettaa ja mitä muuta
(ADO:n lisäksi) projektissa pitäisi olla mukana?
Odotan vastauksia _VAIN_ ADO:a joskus
käyttäneiltä, kiitos! :)
joka tekee tietyn kyselyn Access-tietokantaan,
mutta saan virheilmoituksen:
Run-time error '-2147217904 (80040e10)':
[Microsoft][ODBC Microsoft Access -ohjain] Liian
vähän parametrejä. Tarvitaan 1.
Ilmoitus tulee juuri kun olen avaamassa
recordsettiä:
Joko:
rs.Open cmd, , adOpenStatic, adLockReadOnly,
adCmdText
tai:
rs.Open "SELECT osat.* From osat WHERE ((([osat].
[Osanro])=" & Chr(34) & "10014" & Chr(34) & "))"
Ihmeellistä on että seuraava tapa toimii:
rs.Open "SELECT OSAT.* From osat", cn, , ,
adCmdText
mutta en saa millään toimimaan sitä niin että
WHERE olisi mukana.
Mitä parametrejä tulisi asettaa ja mitä muuta
(ADO:n lisäksi) projektissa pitäisi olla mukana?
Odotan vastauksia _VAIN_ ADO:a joskus
käyttäneiltä, kiitos! :)
Vastaukset 2
Vanhimmat
VB näkee kyselyn seuraavana:
SELECT osat.* From osat WHERE ((([osat].[Osanro])
="10014"))
Voi olla että olen väärillä jäljillä, mutta jos
VB:n pitää nähdä kysely näin:
SELECT osat.* From osat WHERE ((([osat].[Osanro])
= 10014))
Niin koodin on oltava:
"SELECT osat.* From osat WHERE ((([osat].
[Osanro]) = 10014))"
Jos osanro on tekstityyppinen, niin VB:n pitää
nähdä parametri (osanumero) heittomerkeissä:
SELECT osat.* From osat WHERE ((([osat].[Osanro])
= '10014'))
Ja tätä vastaava VB-koodi on
"SELECT osat.* From osat WHERE ((([osat].[Osanro])
= " & Chr(39) & 10014 & Chr(39) & "))"
Chr(39) on sama kuin heittomerkki (')
Käyttämäsi Chr(34) on sama kuin heittomerkki (")
Toivottavasti osuin oikeaan, mitä epäilen - tätä
mahdollisuutta etukäteen pahoitellen...
Tajusin saman itsekin n. tunti pari ennen
vastauksesi ilmestymistä.
Eli ((([osat].[Osanro]) = '10014')) toimii kuten
myös osat.osanro='10014' tai osanro='10014' .
Kenttä on tekstimuotoinen.
Virhe syntyi siitä että vanhahtava DAO (toisin
kuin ADO) hyväksyy heittomerkit (34) kyselyissä.
Myös access hyväksyy ne.