Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » Demo 09:05
 » ReMoS 09:01
 » ulan 09:01
 » kyusi 09:00
 » 5eba 08:57
 » Kenny 08:54
 » JE Jacaw 08:53
 » Fight 08:51
 » PeKa 08:46
 » soyo 08:46
 » Doczu 08:42
 » MARtiuS 08:42
 » Kool@ 08:40
 » marcin502 08:39
 » Wolf 08:36
 » Ament 08:32
 » fiskomp 08:29
 » XepeR 08:28
 » Sherif 08:27
 » Matti 08:27

 Dzisiaj przeczytano
 27782 postów,
 wczoraj 29788

 Szybkie ładowanie
 jest:
wyłączone.

 
ccc
TwojePC.pl © 2001 - 2024
A R C H I W A L N A   W I A D O M O Ś Ć
    

Jak zwrócić wartość zapytania SQL -> EXCEL , ReMoS 2/11/11 18:36
Witam,

czy da radę tak zrobić jakoś aby w komórce Excela w "formule" wpisać zapytanie do bazy SQL? Tak aby zwrócona wartość pokazała się mi w tej komórce.

Nie ufaj każdemu, kto zawsze mówi
uwierz mi.

  1. Gotowej formuły nie ma , bwana 2/11/11 18:51
    musiałbyś stworzyć makro w VBA i zarejestrować to makro jako formułę. Ale może wystarczy Ci np. zdefiniowanie źródła danych (polecenie SQL) i podlinkowanie go jako zakresu w Excelu?

    "you don't need your smile when I cut
    your throat"

  2. Da się , ligand17 2/11/11 19:15
    to zrobić. Działa np. z bazą Oracle - w polu tekstowym wpisuje się polecenie SQL, a makro zwraca wyniki zapytania do nowego arkusza.

  3. A można coś bliżej podpowiedzieć jak to miałoby wyglądać. , ReMoS 2/11/11 19:21
    Lub przybliże temat, który porzebuję zrobić.
    Otóż w bazie danych występują dokumenty różne (sprzedaż,zakup, magazynowe etc.)

    Wystawiane te dokumenty są przez różne osoby i teraz zadanie jest takie aby policzyć ile dokumentów jaki operator wykonał.

    Mogę to uzyskać zapytaniem w Managment Studio:

    SELECT count (*) from CDN.TraNag where Trn_OpeNumerW = 3 and Trn_GIDTyp = 2034 and TrN_VatRok = 2010

    Gdzie otrzymam zwrotną informację.
    Nie jestem mocny w sql, nie wiem jak stworzyć jakieś zaawnasowane zapytanie, które być może pozwoliłoby mi osiągnąć zamierzony cel. Stąd pomysł na excela i tam utworzyłbym "powiązania" etc.

    A tak to ręcznie mi pozostaje odpytywać bazę!?

    Czy może jest na to jakiś inny sposób?

    Nie ufaj każdemu, kto zawsze mówi
    uwierz mi.

    1. Ja zrobiłbym to tak , bwana 2/11/11 19:40
      Stworzyłbym na bazie widok

      XXDokumentyCnt as
      select count(1) liczba_dokumentow, trn_openumerw, trn_gidtyp, trn_vatrok
      from cdn.tranag
      group by trn_openumerw, trn_gidtyp, trn_vatrok

      Potem w Excelu stworzyłbym źródło danych wskazujące na ten widok, wypełniające zakres (w jakimś osobnym arkuszu tego pliku Excel). Pojedyncze zapytanie wypełniałoby zakres wszystkimi zliczeniami dla wszystkich istniejących w bazie kombinacji roku VAT, typu i numeru operatora. W takim wyniku (zakresie) wyszukiwałbym funkcją "wyszukaj.pionowo".

      Ma to rozwiązanie swoje wady i zalety, nie wiem, czy Cię interesuje taki sposób - jeśli tak, to daj znać - poprodukuję się bardziej.

      "you don't need your smile when I cut
      your throat"

      1. Pewnie, że pasowałoby, , ReMoS 2/11/11 19:52
        aczkolwiek już teraz po wklejeniu przeze mnie:

        select count(1) liczba_dokumentow, trn_openumerw, trn_gidtyp, trn_vatrok
        from cdn.tranag where Trn_OpeNumerW = 3
        group by trn_openumerw, trn_gidtyp, trn_vatrok
        order by trn_gidtyp

        Mam już sprawę ułatwioną bo otrzymuję Dla konkretnego operatora wszsytkie dokumenty za zadany okres (tj okrest tutaj akurat całość, ale to też można zawęzić). Pozostaje tylko sobie rozpisać trn_gidtyp jaka cyfra to jaki dokument.

        Aczkolwiek niedo końca rozumiem zapytanie (oj przydałoby się jakieś szkolenie, przydało). Tj. muszę potem powalczyć jak działa to group i dlaczego jest (1) w select count.

        Nie ufaj każdemu, kto zawsze mówi
        uwierz mi.

        1. komentuję i wyjaśniam , bwana 3/11/11 07:34
          count() - zliczenie wierszy. Jeżeli w zapytaniu dalej jest group by element1, element2 to dostajemy wszystkie różne kombinacje wierszy składających się z element1, element2 i zliczenie tych kombinacji. Dla Twojego przykładu (wynik wymyślam)

          count | trn_gidtyp | trn_vatrok
          -----------------------------

          100, 23, 1998
          123, 28, 1998
          231, 31, 1998
          321, 23, 1999
          456, 28, 1999
          874, 31, 1999

          -------

          czyli 100 dokumentów operatora nr 23 w roku 1998; 123 dokumenty operatora nr 28 w roku 1998 i tak dalej.

          count(1) działa nieco szybciej niż count(*) bo bada jedną wartość (wartość natychmiastową aka literał - liczbę 1 - można wpisać count (1000) albo count(sysdate) z takim samym efektem).

          Słowem - masz w wyniku wszystkie możliwe obliczenia, które chciałbyś dostać z bazy danych - załatwiasz to jednym zapytaniem.

          Co do budowy Excela założyłem że masz "dużo" wierszy, dla których chcesz poznać wartość zliczenia (count). Jeśli dla każdego wiersza będziesz wykonywał zapytanie dokładne (czyli z warunkiem where) to tyle ile masz wierszy, tyle zapytań Excel prześle do bazy - to może trwać dużo dłużej niż pobranie naraz całego wyniku (tego "mojego") i lokalnie w arkuszu wyszukanie właściwej wartości formułą (np. wyszukaj.pionowo).

          Pomogłem?

          "you don't need your smile when I cut
          your throat"

          1. co do słownika typów dokumentów - pomoże JOIN , bwana 3/11/11 07:44
            nawiązując do Twojego zapytania i zakładając, że typy dokumentów są w tabeli cdn.typy_dokumentow:

            select count(1) liczba_dokumentow, trn_openumerw, trn_gidtyp, trn_vatrok, td.nazwa_typu_dokumentu
            from cdn.tranag tra join cdn.typy_dokumentow td on tra.trn_gidtyp = td.id_typu_dokumentu
            where Trn_OpeNumerW = 3
            group by trn_openumerw, trn_gidtyp, trn_vatrok, td.nazwa_typu_dokumentu
            order by trn_gidtyp

            i masz załatwioną sprawę.

            "you don't need your smile when I cut
            your throat"

  4. o Optima sie kłania.. , Glock19 2/11/11 19:36
    lub XL

    1. XL. , ReMoS 2/11/11 19:58
      XL.

      Nie ufaj każdemu, kto zawsze mówi
      uwierz mi.

  5. Tabelą przestawną to załatwiamy w XL'u , McIsland 2/11/11 20:14
    jakos działa, ale tabela ciągnie z przygotowanego widoku

    GTD ...

    
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL