Telefonszámunk: 1-472-0679

Adatok lekérdezése Excel fájlból

Kezdőlap Fórumok Excel témák Adatok lekérdezése Excel fájlból

12 bejegyzés megtekintése - 1-12 / 12
  • Szerző
    Bejegyzés
  • #3180
    mano4219
    Felhasználó

      Sziasztok!

      A problémám a következő:
      2007-es Excel-ben létrehozott lekérdezés nem működik megfelelően az új 2016-os Excel-ben.
      A lekérdezést Excel fájlból lekérdezésszerkesztővel hoztam létre.
      Minden adatot áthoz, kivéve az időértékeket, helyettük csak 0 értékeket ad eredményül.
      Azóta elkészítettem a 2016-os lekérdezésszerkesztővel az új Lekérdezést. Minden remekül működik benne csak a paraméteres lekérdezést nem tudom hogyan kell beállítani.
      Próbálkoztam a korábbi módszerrel, azaz [adat]-t írtam a konkrét adatok helyett, de az itt nem műxik, mivel a [] mezőnév hivatkozásra utal.
      A másik kérdésem a következő:
      Hogyan lehet elérni, hogy a lekérdezésben szereplő adatforrás/fájl elérési útja megadható legyen, pl: ugyanott keresse ahol a főprogram is található.
      Mivel ezt a programot sokan használják más gépeken is, csak akkor működik, ha azonos nevű (elérési útvonalú) mappában vannak. Sajnos ez nem minden gépen oldható meg.

      Köszönöm!

      #3181
      horvimi
      Adminisztrátor

        Szia!

        Egy kicsit eljátszogattam vele, bár nem nagyon szoktam MS Query-t használni, legalább is nagyon rég jött szembe, Most újra megbizonyosodtam, hogy nagyszerű eszköz.

        Paraméteres lekérdezés
        ————————–
        Azt találtam a neten, és nekem bevált, ha SQL nézetben a Where feltételben az érték helyére egy kérdőjelet írtam.
        A Query frissítésekor vagy futtatásakor kérdezi a paraméter értékét. Gondolom azt tudod, hogy ilyenkor megadható egy cella, ahonnan a paramétert vegye, sőt, megadható, hogy mindig innen vegye, vagy frissüljön a lekérdezés, ha változik a paraméter cella értéke.

        Kapcsolati útvonal
        ——————-
        Ezt pedig ki lehet exportálni egy *.odc nevű fájlba. Ez XML formátumú, és tartalmazza a kapcsolat tulajdonságait, így a kapcsolat nevét és az útvonalat is.
        Adatok->Kapcsolatok->Tulajdonságok->Definíció fül->Kapcsolatfájl Exportálása

        Új kapcsolatkor pedig be lehet importálni.
        Tehát ha import előtt módosítod egy sima szerkesztővel, akkor az új gépen már a módosított útvonalon fogja keresni.
        Ez két lépéses buli
        1. Adatok->kapcsolatok->Hozzáadás… ->Kitallózod a módosított kapcsolati fájlt
        2. Üres cella (munkalap)->Adatok->Meglévő kapcsolatok->Kiválasztod

        Erre gondoltál?

        Imre

        • A hozzászólás módosításra került: 8 years telt el-horvimi.
        #3183
        mano4219
        Felhasználó

          Szia Imre!

          Köszönöm a gyors választ.
          A paraméteres lekérdezésnél én is úgy jártam el ahogy említetted, sajnos azonban az új 2016-os Office-ban valamilyen adattípus inkompatibilitási probléma lehet.
          A „régi” MS Query-t használva minden jól működik egészen addig, amíg vissza nem küldöm az adatokat.
          Mellékelek néhány képet, ahol láthatóak a lekérdezési feltételek (az SQL utasítás is) és a feltétel szerint szűrt (kapott) adatok. A háttérben látható, hogy itt még jól jelennek meg a repülési idők (lekérdezés8.jpg), de azokat visszaküldve már csak 00:00-kat látunk. (lekérdezés6.jpg)

          Attachments:
          You must be logged in to view attached files.
          #3185
          mano4219
          Felhasználó

            folyt.

            Az új 2016-os Excel lekérdezésszerkesztőjével ez a probléma megszűnik, mivel rögtön a fájl beolvasása után típus módosítást végez az összes adatra.
            Itt meg az a bajom, hogy nem találok sehol a neten utalást arra, hogy milyen vezérlő karakterekkel kell beírni a képletbe a paramétereket (lásd MS Query-ben „[név]” kapcsos zárójelek). Sajnos itt már nincs meg a jó öreg SQL utasítás, vagy legalábbis én nem találtam meg.

            Az elérési útvonallal kapcsolatban meg arra gondoltam, hogy Makróban lekérdezem a fájlok elérési útvonalát(szülő könyvtár), ahogy az pl. az SQL utasításban látszik is, majd ezt az elérési útvonalat, mint paramétert megadom a Lekérdezésszerkesztőnek.
            A helyzet ugyanis az, hogy sokan csak egyszerű felhasználóként futtatják a munkatársaim ezt a programot (otthoni gépen, vagy munkahelyi környezetben) és problémát okoz nekik, ha újra csatolni kell az adatbázist.

            Még egyszer köszönöm a segítséget!
            Ha valakinek lenne további ötlete, szívesen várom.

            Üdv: Péter

            Attachments:
            You must be logged in to view attached files.
            #3187
            mano4219
            Felhasználó

              folyt.

              Így néz ki az újfajta lekérdezésszerkesztőben a szűrési parancs. Az aposztrófok között van a „Stark” szűrni kívánt adat.
              Ide nem tudom mit kéne írni, hogy paraméterként vegye át máshonnan.
              Az is látható, hogy valamiféle adat konverziót végez mikor betölti az adatbázist. ( =Table.SelectRows(#”Típus módosítva”, each stb.)

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

                Na ok, most látom mit csinálsz.

                Ez, amit újnak nevezel a PowerQuery beépülő modul.
                2016-ba be van építve alapból az Adatok fülön. Most éppen ezt tanulmányozom. Elég ÁLLAT!

                De megvan a jó öreg MS Query is, csak egy kicsit balra.
                tehát NE az „Új lekérdezés” gombbal indulj, hanem az Adatok lapon az első nagy gombbal, a „Külső adatok…” a mi barátunk.
                Itt meglesz minden, ami a régi MS Query-hez kell.

                A forrás változtatást MS Query-hez makróval lehet megcsinálni valóban a leginkább felhasználóbarát módon.
                Ehhez segítség:
                http://www.excelforum.com/excel-general/390063-ms-query-data-source-change.html

                Imre

                Különben a PowerQuery nagyon klassz, és ott is lehet Paraméter táblát csinálni, de nem annyira egyszerű, mint az MS Query-ben
                Ha ragaszkodnál ehhez, akkor itt egy kis segítség:
                https://blog.oraylis.de/2013/05/using-dynamic-parameter-values-in-power-query-queries/

                #3190
                mano4219
                Felhasználó

                  Köszi.

                  Az MS Query-t is próbáltam az újban, de ott is ugyanaz a jelenség: nem hozzá át az időértékeket.
                  Ha adsz egy E-mail címet elküldöm a fájlokat, hátha rájössz mi lehet a gond.

                  #3191
                  horvimi
                  Adminisztrátor

                    A lekérdezés8.jpg-ben azt látom, hogy a „Repült idő” oszlopban 1899-es dátum-idő értékek vannak.
                    Ez a problémás oszlop?
                    És ez nem okozhatja a problémát?

                    Különben horvath.imre@pentaschool.hu a címem

                    Imre

                    #3192
                    mano4219
                    Felhasználó

                      Lehet, hogy ez a probléma, ugyanis a forrásfájlban 1900. 1. 0. 0:25-ként jeleníti meg, míg a Query-ben 1899. 1. 0. 0:25-ként ugyanazt az értéket.

                      #3193
                      horvimi
                      Adminisztrátor

                        Az 1900.01.01-nél kisebb dátumokat nem kezeli dátumként az Excel.
                        Ez okozhat problémát.

                        A forrás adatban miért vannak 1900-as dátumok?
                        Valami különbség képlettel számolódik a repülési idő?

                        lehet, h ott nem dátum formátumban kellene számolni, hanem rendesen kiszámolni percben az értékeket.
                        A különbséget szorozni 24*60-al, kerekíteni és számmá formázni. Utóbbi nem lényeges.

                        Imre

                        #3194
                        mano4219
                        Felhasználó

                          jól látod 🙂
                          repült idő= leszállási idő-felszállási idő

                          #3195
                          mano4219
                          Felhasználó

                            Elültetted a gondolatot bennem és remélem ez lesz a megoldás!
                            Mivel a repülési idő egy számított érték és teljesen feleslegesen van jelen az adatbázisban, egyszerűbbnek vélem a fel- leszállási időket lekérdezni és abból számoltatni utólag.

                            Köszönöm még egyszer!

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