Kezdőlap › Fórumok › Excel programozás › [Resolved] Lekérdezés paraméterezése
- This topic has 6 hozzászólás, 3 résztvevő, and was last updated 6 years telt el by horvimi.
-
SzerzőBejegyzés
-
2018-11-08-09:00 #5228
Szia Imi,
egy SQL lekérdezést szeretnék készíteni, ami a „Where” feltételt egy Excel-tábla lista értékeiből (jelen esetben: ‘V0529′,’V1085’), paraméterként (?) veszi, valahogy így:
SELECT FIRMA.FIRMANR FROM INFOR.RELFIRMA FIRMA WHERE (FIRMA.FIRMANR In (?))
A lista valójában ennél sokkal hosszabb, és az értékei gyakran változnak, a frissítéseket pedig változásakor egy eseményvezérelt makró végezné.
Arra gondoltam, hogy az Excelben egy cellában szövegként összefűzöm a lista elemeit, és amikor a query futtatáskor bekéri a paraméter értékét, akkor hivatkozásként megadom az adott cellát.
A dolog sajnos nem tűnik ilyen egyszerűnek, ugyanis a következő történik:
1. Ha a ? helyett egyszerűen felsorolom az értékeket így: WHERE (FIRMA.FIRMANR In (‘V0529′,’V1085’)) – akkor működik
2. Ha lemakrózom a query készítését úgy, hogy az az adott sztringet tartalmazó cellára hivatkozik, (ld. a csatolmányban) – akkor is működik, méghozzá úgy, hogy a makró beleírja a query-be a hivatkozott cellában található értékeket.
3. Ha viszont megírom a lekérdezést, majd a kapcsolat definíciójánál paraméterként megadom a több elemből összefűzött sztringet tartalmazó cellát, a lekérdezés lefut, de az eredménytábla üres lesz.
Sokat játszottam már az aposztrófokkal, zárójelekkel, cellaformátumokkal, de eddig nem találtam meg a megoldást.
Van esetleg valami tipped, hogy hol lehet a kutya elásva?
Előre is köszönöm.
AndrásAttachments:
You must be logged in to view attached files.2018-11-08-23:01 #5233Szia!
Egy kicsit utánanéztem, úgy néz ki, hogy ebben a formában nem fog ez menni.
De találtam egy fórum bejegyzést, ahol pont erről van szó, és lehet, hogy jó lesz neked.
Van ott egy Ron Coderre nevű figura bejegyzése.https://www.excelforum.com/excel-general/535886-microsoft-query-parameter-is-one-of.html
Nagyon kíváncsi vagyok.
Imre
2018-11-09-08:13 #5234Sziasztok!
Nem nagyom vágom a fenti témát, de vba-ba ágyazott sql kifejezésbe kellett már beillesztenem változót – ott ez működött:
strSheet = „Regeszet” ‘ – ez a beillesztendő változó
strSql = „SELECT * FROM" & strSheet & "$
WHERE [#] <> 0″tehát a formula: ‘” & változó & „‘
az egész prg az alábbi linken van a minták.zip fájl word makrójában
http://excel-bazis.hu/forumok/topic/excelre-hivatkozo-word-korlevel-abszolut-hivatkozasanak-relativva-tetele… hátha segít…
2018-11-09-08:16 #5235a kódot nem jól illeszti be… tehát mégegyszer:
aposztróf(shift+1) macskaköröm & változó & macskaköröm aposztróf2018-11-09-11:50 #5237Sziasztok,
köszönöm a tanácsokat. A makrózott változat működik, ahogy az eredeti bejegyzésben is írtam, úgyhogy, ha nem sikerül másként megoldani, akkor az marad.
A Ron Coderre-féle bejegyzés nyomán még bajlódom egy sort a makrózatlan verzió megalkotásával, ha jutottam valamire, megírom.András
2018-11-09-13:39 #5238Imi,
működik! Ez a Ron tudta a trükköt, te pedig remekül kiszúrtad a fórumbejegyzést.
A megoldás tehát ennyi:SELECT FIRMA.FIRMANR FROM INFOR.RELFIRMA FIRMA WHERE INSTR(?,FIRMA.FIRMANR)<>0
Ha tehát a Where feltételben szereplő paraméter (?) egy olyan sztringet tartalmazó cellára mutat, amelynek valamely részlete tartalmazza a szűrőfeltételeként használt (természetesen szöveges) értéket (nálam ez a FIRMA táblában lévő FIRMANR mező), akkor az Instr egy 0-nál nagyobb egész számot ad vissza, vagyis nem 0. 🙂
Még egyszer köszönöm, nagy segítség volt.
András- A hozzászólás módosításra került: 6 years telt el-horvimi.
2018-11-09-15:22 #5240Na, örülök. Ez azért már a nem triviális esetek közé tartozik.
megjegyezném, hogy ha kódot írtok a kommentbe, akkor a formázó gombok között találtok egy code feliratút.Ez megformázza PRE formátumban, azaz l jeleníti meg a kódot, és egy szürke hátteret is ad hozzá.
Átformáztam, hogy lássátok.
Imre
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.