Telefonszámunk: 1-472-0679

[Resolved] Lekérdezés paraméterezése

Kezdőlap Fórumok Excel programozás [Resolved] Lekérdezés paraméterezése

Topic Resolution: Resolved
7 bejegyzés megtekintése - 1-7 / 7
  • Szerző
    Bejegyzés
  • #5228
    Vbacube
    Felhasználó

      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ás

      Attachments:
      You must be logged in to view attached files.
      #5233
      horvimi
      Adminisztrátor

        Szia!

        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

        #5234
        Sicamber
        Felhasználó

          Sziasztok!

          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…

          #5235
          Sicamber
          Felhasználó

            a kódot nem jól illeszti be… tehát mégegyszer:
            aposztróf(shift+1) macskaköröm & változó & macskaköröm aposztróf

            #5237
            Vbacube
            Felhasználó

              Sziasztok,

              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

              #5238
              Vbacube
              Felhasználó

                Imi,
                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.
                #5240
                horvimi
                Adminisztrátor

                  Na, ö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

                7 bejegyzés megtekintése - 1-7 / 7
                • Be kell jelentkezni a hozzászóláshoz.