Accessből paraméteres lekérdezés ODBC hívás hiba

Accessből paraméteres lekérdezés ODBC hívás hiba
2010-02-23T10:56:57+01:00
2010-02-25T11:17:45+01:00
2022-11-16T19:35:38+01:00
lwaters
Az adattáblákat áthelyeztem Accessből SQL szerverre és csatolt táblaként használom őket. A paraméteres lekérdezés meghívásakor hibaüzenetet kapok: "ODBC hívás nem sikerült. Run-time error 3146". A következő a kód:

Dim MyDb As Database Dim MyQuery As QueryDef Dim lekerd As Recordset Set MyDb = CurrentDb Set MyQuery = MyDb.QueryDefs("lekerdezesnev") MyQuery.Parameters("Forms!apnev.[mezonev]") = Null Set lekerd = MyQuery.OpenRecordset()
Mutasd a teljes hozzászólást!
Teszteltem a többi paraméteres lekérdezést, és azt tapasztaltam, hogy nem mindegyiknél jelentkezik az ODBC hiba. Kielemeztem a kérdéses lekérdezést pontról-pontra, és sikerült a probléma okát megtalálnom! A lekérdezést kicsit át kellett csak alakítani. Semmiféle szintaktikai hiba nem volt ugyan a lekérdezésben, de a következőnél bukott ki feltétel (where) megadáskor (csak az elvet vázolom, nem a teljes, pontos kódot):
(szamla.fizmod=1 or szamla.fizmod=2)=False
Ezt átalakítottam:
(szamla.fizmod<>1 and szamla.fizmod<>2)
Így már elfogadta, nem problémázik ODBC hibával.
Mutasd a teljes hozzászólást!

  • Nem lenne jobb paraméteres lekérdezés helyett tárolt eljárással csinálni?

    (Prog.hu-n van példa Access + Tárolt eljárás témára)
    ----
    Biztos, hogy ilyen a paramétered neve?
    Szerintem se !, se "." nem lehetne benne, maximum []-ek között.
    Próbálj valami "egyszerű" paraméternevet használni.
    Mutasd a teljes hozzászólást!
  • Nem lenne jobb paraméteres lekérdezés helyett tárolt eljárással csinálni?

    De egész biztosan jobb lenne. Csak az a gond, hogy van egy jó csomó ilyen paraméteres lekérdezés hívás a programban, nemcsak ez az egy, és azt mind most gyorsan át kéne írni, de az idő meg kevés... Az az érdekes, hogy eddig a "sima" access adatbázisban, amikor a táblák is az mdb-ben voltak ez gond nélkül ment. Próbálkoztam már OpenRecordset()-et bemenő paramétere meghívni, de nekem nem sikerült így sem.
    Biztos, hogy ilyen a paramétered neve?

    A lekérdezésben feltételben az űrlap egy mezőjéből veszem az adatot, azért ilyen a paraméternév. De megpróbálom egyszerűbbé tenni.
    Mutasd a teljes hozzászólást!
  • Tervező nézetben a lekérdezés tervezőrácsában add meg a paramétert, működik e.


    Pl: név=Forms!űrlapneve.mezőneve
    Mutasd a teljes hozzászólást!
  • Próbálj valami "egyszerű" paraméternevet használni.

    Leegyszerűsítettem a paraméter elnevezéseket. Sajnos ezután is ugyanaz a hiba. Ezután az adatbázis ablakból direkt próbáltam elindítani a lekérdezést, el is indult, kérte a 6db (leegyszerűsített) paramétert, és a végén meging ODBC hiba.
    Mutasd a teljes hozzászólást!
  • Teszteltem a többi paraméteres lekérdezést, és azt tapasztaltam, hogy nem mindegyiknél jelentkezik az ODBC hiba. Kielemeztem a kérdéses lekérdezést pontról-pontra, és sikerült a probléma okát megtalálnom! A lekérdezést kicsit át kellett csak alakítani. Semmiféle szintaktikai hiba nem volt ugyan a lekérdezésben, de a következőnél bukott ki feltétel (where) megadáskor (csak az elvet vázolom, nem a teljes, pontos kódot):
    (szamla.fizmod=1 or szamla.fizmod=2)=False
    Ezt átalakítottam:
    (szamla.fizmod<>1 and szamla.fizmod<>2)
    Így már elfogadta, nem problémázik ODBC hibával.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd