Új hozzászólás Aktív témák

  • hallgat

    csendes tag

    Sziasztok!

    A következő problémával küzdök és kérek segítséget, ha valaki már találkozott vele:
    MS Query használatával adatokat húzok be egy Excel munkafüzet lapra, ODBC kapcsolaton keresztül elért MS SQL szerver adatbázis táblákból.

    Mivel egy-egy lekérdezés nagyon sok sort tud visszaadni, szűkítenem szükséges.
    Erre MS Query-nek van is megoldása, paraméter mezőben megadható fix érték, értékek, vagy kiadhatok cellára mutató hivatkozást, amit WHERE feltételként kezel a lekérdezés során.
    Ez idáig OK, rendszeresen használom gond nélkül.

    Most olyan WHERE feltételt kellene megadnom, ami tetszőleges számú adatot tartalmaz egy cellában, azaz -- WHERE "mező" IN (paraméter1,paraméter2,paraméter_n) --. Jelen esetben termékek adatait kérdezem le, a cikkszámok a szűkítési lehetőség, így a cella egymástól vesszővel, vagy ponttal, vagy akármivel elválasztott cikkszám felsorolást tartalmaz.
    Mivel makróval fűzöm össze a cellába a szükséges cikkszámokat, meg tudom szabni előre, hogy mi legyen az elválasztó karakter, ez nem gond.

    Az MS Query grafikus felületén a paraméter mezőknél választható az a lehetőség, hogy "eleme".
    Ebben az esetben a paraméter meghatározás így nézhet ki: --eleme (123456;543210;456789)-- Pontosvesszővel tagolt felsorolás. De ez csak akkor működik, ha fixen begépelem előre a cikkszámokat, vagy kiválasztom a felajánlott listából a query-n belül a saját eszközével.

    Az "eleme" paraméter tartalmazhat bármennyi értéket, akár ha WHERE lenne ott. Igazából az SQL kódot megnézve az is van, csakhogy az --WHERE "táblanév.mezőnév" IN(?)-- formával, azaz a kérdőjel jelzi, hogy adatot kell bekérnie. A kérdőjelet nem lehet megváltoztatni. Bármi más karakter kerül a kérdőjel helyére, nem fut le a lekérdezés, szintaktikai hibára hivatkozva.

    Ha szeretném azt elérni, hogy a paraméter a későbbiekben egy cellaértékre hivatkozzon, vagy dobjon fel párbeszéd ablakot, azt a [ ] jelekkel tehetem. Ez esetben nem kell értéket előre megadnom, a lekérdezés futásakor kéri be, és ekkor alkalmazza a kérdőjeles megoldást is.
    Ez esetben ez látszik a grafikus lekérdező felületen --eleme ([szabad_szöveg])--. A szabad szöveg bármivel helyettesíthető, vagy akár üresen is hagyható, csak a párbeszédablakban megjelenő szövegre van hatással, mondhatjuk, hogy a paraméter neve, de csak az emberi szem számára.

    Innen azonban nem tudok tovább haladni. :((

    Ha az "eleme" paramétert választom, nem tudom elérni, hogy a beadott értékeket elfogadja, bármivel is választom el őket az Excel cellában. Idáig el sem kell menni, kézzel is futtatható, még az MS Query felületén, ahol ilyenkor egy párbeszéd ablakban kéri be a paramétert. Ha több számot próbálok beadni, mindegy mivel elválasztva, érvénytelen értékre hivatkozva nem fut le a lekérdezés.

    Esetleg valaki, aki használja az MS Query-t, találkozott már hasonló problémával? Azaz miként tudok több számot paraméterként megadni a futtatandó lekérdezés számára?

    Előre is köszönöm!!!!

Új hozzászólás Aktív témák