Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Kwerenda krzyżowa z parametrem - nie mozna zrobić raportu

409 views
Skip to first unread message

Irokez

unread,
Apr 5, 2010, 7:33:37 AM4/5/10
to
Witam

Za oknem leje jak to w lany poniedziałek więc zasiadłem do zrobienia raportu
w mojej bazie.
Zrobiłem kwerendę krzyżową z parametrem dotyczącym zakresu daty pobieranym z
komórki formularza:
Between [Forms]![frmRaport]![Data_od] And [Forms]![frmRaport]![Data_do]

Sama kwerenda działa idealnie, idealnie też działała i robiłem formularz czy
raport gdy nie było zakresów daty.
W momencie wstawienia tego warunku czy też na sztywno [Between #2010-03-23#
And #2010-03-26#] nie ma jakiejkolwiek możliwości wstawienia tej kwerendy do
raportu czy formularza. Autokreator nie widzi jakichkolwiek danych w nich,
natomiast ręczne wykreowanie raportu skutkuje komunikatem "aparat bazy
danych Microsoft Jet nie może rozpoznać '' jako poprawnej nazwy pola lub
jako wyrażenie". Ta pustka pomiędzy dwoma apostrofami '' jest faktyczna
pustką, nic nie ma. Kwerenda w tym momencie istnieje sama tylko dla siebie.

Czy jest jakaś możliwość otrzymania tych danych w raporcie w Accessie czy
trzeba to wysłać znowu do Excela bo się nie da tutaj?

Accessa nie znam dobrze niestety, google nie dały jakiejkolwiek podpowiedzi
(nikt tego nie robił czy wszyscy wiedzą że się nie da?) oprócz podpowiedzi
gdy jest problem z wywołaniem samej kwerendy
(http://support.microsoft.com/default.aspx?scid=kb%3Bpl%3B2097789) ale to
już wcześniej robiłem.

Access 2003


Pozdrawiam i Wesołych Świąt.


--
Irokez

Irokez

unread,
Apr 5, 2010, 2:02:24 PM4/5/10
to
Użytkownik "Irokez" <nie...@email.pl> napisał w wiadomości
news:hpchql$vio$1...@news.onet.pl...

> Witam
>
> Za oknem leje jak to w lany poniedziałek więc zasiadłem do zrobienia
> raportu w mojej bazie.
> Zrobiłem kwerendę krzyżową z parametrem dotyczącym zakresu daty pobieranym
> z komórki formularza:
> Between [Forms]![frmRaport]![Data_od] And [Forms]![frmRaport]![Data_do]

Zrobiłem kwerende krzyzową bez warunków, pobierająca dane z kwerendy
wybierającej gdzie dałem ten warunek.
Nic się nie zmieniło.
Brak mozliwości jakiegokolwiek użycia wyniku tej kwerendy krzyżowej w
jakimkolwiek formularzu czy raporcie, oprócz zaznaczenia i copy-paste do
Excela. Brak jakiejkolwiek funkcjonalności tej kwerendy.

Pomocy. Tylko Excel mnie ratuje?

--
Irokez

Krzysztof Pozorek

unread,
Apr 5, 2010, 4:17:51 PM4/5/10
to
(...).

> Brak mozliwości jakiegokolwiek użycia wyniku tej kwerendy krzyżowej w
> jakimkolwiek formularzu czy raporcie, oprócz zaznaczenia i copy-paste do
> Excela. Brak jakiejkolwiek funkcjonalności tej kwerendy.

Twoj wnosek o nieprzydatnosci kwerendy krzyzwej jest jak najbardziej
bledny:-)

Po prostu Twoj parametr odwolujacy sie do formularzu zadeklaruj w menu
kwerenda/parametry. Zobacz tutaj:
http://www.access.vis.pl/af0601.htm

Byc moze tez przydatne okaza sie przyklady radzenia sobie z kwerendami
krzyzowymi na raporcie:
http://www.access.vis.pl/war412.htm
A moze tez problem wyboru kolumn na raporcie:
http://www.access.vis.pl/war414.htm

K.P.


Irokez

unread,
Apr 6, 2010, 11:03:35 AM4/6/10
to
Użytkownik "Krzysztof Pozorek" <acc...@vis.pl> napisał w wiadomości
news:hpdghi$n4h$1...@news.onet.pl...

> (...).
>> Brak mozliwości jakiegokolwiek użycia wyniku tej kwerendy krzyżowej w
>> jakimkolwiek formularzu czy raporcie, oprócz zaznaczenia i copy-paste do
>> Excela. Brak jakiejkolwiek funkcjonalności tej kwerendy.
>
> Twoj wnosek o nieprzydatnosci kwerendy krzyzwej jest jak najbardziej
> bledny:-)
>
> Po prostu Twoj parametr odwolujacy sie do formularzu zadeklaruj w menu
> kwerenda/parametry. Zobacz tutaj:
> http://www.access.vis.pl/af0601.htm

To na samym poczatku zrobiłem, zgodnie ze stronką microsoftu której linka
dałem w poście.


> Byc moze tez przydatne okaza sie przyklady radzenia sobie z kwerendami
> krzyzowymi na raporcie:
> http://www.access.vis.pl/war412.htm
> A moze tez problem wyboru kolumn na raporcie:
> http://www.access.vis.pl/war414.htm

A to dotyczy tylko zmieszczenia pól na raporcie.
U mnie pól będzie praktycznie zawsze tyle samo, ale musze brać różne
przedziały czasowe. I tutaj kompletnie nic nie działa. Mozliwość wstawienia
warunków w kwerendzie krzyzowej jak widze jest tylko dla picu.

Pozdrawiam.

--
Irokez

jcm

unread,
Apr 6, 2010, 12:53:13 PM4/6/10
to
Użytkownik "Irokez" <nie...@email.pl> napisał w wiadomości news:hpfigd$oq4

>> http://www.access.vis.pl/af0601.htm
> To na samym poczatku zrobiłem, zgodnie ze stronką microsoftu której linka
> dałem w poście.
>> Byc moze tez przydatne okaza sie przyklady radzenia sobie z kwerendami
>> krzyzowymi na raporcie:
>> http://www.access.vis.pl/war412.htm
>> A moze tez problem wyboru kolumn na raporcie:
>> http://www.access.vis.pl/war414.htm
> A to dotyczy tylko zmieszczenia pól na raporcie.
> U mnie pól będzie praktycznie zawsze tyle samo, ale musze brać różne
> przedziały czasowe. I tutaj kompletnie nic nie działa. Mozliwość
> wstawienia warunków w kwerendzie krzyzowej jak widze jest tylko dla picu.
> Pozdrawiam.


Dziwne, bo dosłownie kilka dni temu wykonałem arkusz PKPiR oraz rejestry vat, na
podstawie dokumentów zakupu i sprzedaży, wykorzystując właśnie kwerendę
krzyżową, ograniczając okres księgowy podobnie jak Ty, datami w formularzu.
I wszystko ładnie mi pokazuje.

Czy nazwy kontrolek formularzy powiązanych z datami mają tę samą nazwę co
powiązane z nimi pola tabeli?
Jeśli tak, to spróbuj zmienić nazwy tych kontrolek.


Irokez

unread,
Apr 6, 2010, 1:59:55 PM4/6/10
to
Użytkownik "jcm" <ja...@10g.pl> napisał w wiadomości
news:hpfpjr$l6e$1...@nemesis.news.neostrada.pl...

>
> Dziwne, bo dosłownie kilka dni temu wykonałem arkusz PKPiR oraz rejestry
> vat, na podstawie dokumentów zakupu i sprzedaży, wykorzystując właśnie
> kwerendę krzyżową, ograniczając okres księgowy podobnie jak Ty, datami w
> formularzu.
> I wszystko ładnie mi pokazuje.
>
> Czy nazwy kontrolek formularzy powiązanych z datami mają tę samą nazwę co
> powiązane z nimi pola tabeli?
> Jeśli tak, to spróbuj zmienić nazwy tych kontrolek.


Może ktoś rzuci okiem
http://www.sendspace.com/file/3kjnec
Access 2003


Otwiera się frmRaport gdzie mogę ustawić daty.
W kwerendach mam "Kwerenda_wyb_data" który sortuje po dacie oraz kwerendę
krzyżową "Krzyz_kwerenda" która to chcę umieścić w raporcie.
Rozbiłem na dwie bo kombinuje na wszystkie sposoby jak to obejść
Próbując teraz zrobić raport lub formularz na podstawie tej kwerendy
krzyżowej po prostu kreatorem jest to fizycznie niemozliwe - brak
jakichkolwiek danych w oknie kreatora do zaznaczenia. Dla kreatora dane nie
istnieją. Kwerenda jest sama dla siebie i mogę ja obejrzeć, przejść w
podgląd wydruku i druknąć jak jest oraz skopiować ręcznie i wkleić do
excela.
Koniec innych mozliwości pracy na niej.
Bez problemu za to mogę zrobić co chcę z kwerendą "Kwerenda_wyb_data" a
również i krzyzową ale tylko i wyłacznie gdy usunę kryteria dla pola daty.

Jak napisałem jestem poczatkujący, duzo szukam po helpie i necie ale takiego
przypadku i rozwiazania problemu nie znalazłem nigdzie.
Jak juz kompletnie nie mogę nic zrobić eksportuje dane do excela i tam już
zero jakichkolwiek ograniczeń, robię na co mam ohotę z danymi.
A tu chciałem taki prosty raporcik tylko i nie chciałem wyciagać armaty na
muchę ale chyba się nie da inaczej?

Pozdrawiam.

--
Irokez

Jacek

unread,
Apr 7, 2010, 1:44:10 AM4/7/10
to

Krzysztof Naworyta

unread,
Apr 7, 2010, 7:32:48 AM4/7/10
to
Irokez wrote:

|| Dziwne, bo dosłownie kilka dni temu wykonałem arkusz PKPiR oraz
|| rejestry vat, na podstawie dokumentów zakupu i sprzedaży,
|| wykorzystując właśnie kwerendę krzyżową, ograniczając okres księgowy
|| podobnie jak Ty, datami w formularzu.
|| I wszystko ładnie mi pokazuje.
||
|| Czy nazwy kontrolek formularzy powiązanych z datami mają tę samą
|| nazwę co powiązane z nimi pola tabeli?
|| Jeśli tak, to spróbuj zmienić nazwy tych kontrolek.
|
|
| Może ktoś rzuci okiem
| http://www.sendspace.com/file/3kjnec
| Access 2003
|
|
| Otwiera się frmRaport gdzie mogę ustawić daty.
| W kwerendach mam "Kwerenda_wyb_data" który sortuje po dacie oraz
| kwerendę krzyżową "Krzyz_kwerenda" która to chcę umieścić w raporcie.
| Rozbiłem na dwie bo kombinuje na wszystkie sposoby jak to obejść
| Próbując teraz zrobić raport lub formularz na podstawie tej kwerendy
| krzyżowej po prostu kreatorem jest to fizycznie niemozliwe - brak
| jakichkolwiek danych w oknie kreatora do zaznaczenia. Dla kreatora
| dane nie istnieją.


Taki urok kreatorów :)
Kwerenda krzyzowa jest dość specyficzną kwerendą.
Najważniejsze, że teoretycznie może wracać dowolną ilość kolumn (<=255) i to
dla kreatora jest kłopotliwe.
Poza tym jeśli kwerenda zwraca kolumnę NULL, to access zamienia to na <>.
Ale kreator tak nie potrafi.

Aby zaczął prawidłowo działac kreator raportów, musisz na ten czas ustawić w
kwerendzie "ustalone nagłówki kolumn".
Przykladowo, w Twoim przypadku:

PARAMETERS [Forms]![Startup]![Data_do] DateTime, [Forms]![Startup]![Data_od]
DateTime;
TRANSFORM Sum(Kwerenda_wyb_data.czas_pracy) AS SumaOfczas_pracy
SELECT Nazw.Nazwisko
FROM Nazw LEFT JOIN Kwerenda_wyb_data ON Nazw.Nazwisko =
Kwerenda_wyb_data.Nazwisko
WHERE (((Kwerenda_wyb_data.praca_dla) Is Not Null))
GROUP BY Nazw.Nazwisko
ORDER BY Nazw.Nazwisko
PIVOT Kwerenda_wyb_data.praca_dla In ("Grupa 1","Grupa 2","Grupa 3","Grupa
4");

A najlepiej nie korzystać z kreatorów :)

KN

PawełB

unread,
Apr 7, 2010, 8:50:00 AM4/7/10
to
Jeżeli można się włączyć :)

Jeżeli powyższy przykład z PIVOT .... IN nie jest wskazany, to co jest
alternatywą ? Pytam z ciekawości, gdyż jakiś czas temu Pivot rozwiązałem mój
problem z raportem.
Wcześniej korzystałem z Twojego rozwiązania "RaportKrzyżowy":
====
On Error Resume Next
Dim i As Long, rs As DAO.Recordset, ilePol As Byte
Set rs = CurrentDb.OpenRecordset("Zatrudnieni")
ilePol = rs.Fields.Count - 1
If ilePol > 10 Then
MsgBox "Za duża ilość pól (" & ilePol + 1 & ") w kwerendzie
krzyżowej. Raport wyświetli tylko pierwsze 11 kolumn, pozostałe pominie.",
64
ilePol = 10
End If
For i = 2 To ilePol
'A to jest cały sekret raportu opartego na kweredzie krzyżowej,
'chodzi o to, żeby dynamicznie ustawić nagłówki kolumn i źródło dla
pól tekstowych.
Me("Etykieta" & i - 1).Caption = rs.Fields(i).Name
Me("Pole" & i - 1).ControlSource = rs.Fields(i).Name
Me("Razem" & i - 1).ControlSource = "=Sum(" & rs.Fields(i).Name &
")"
Next i
Set rs = Nothing
===
ale, z tego co pamiętam to przy większych raportach (duża ilość recordów),
raport się zawieszał.

PawełB

Krzysztof Naworyta

unread,
Apr 7, 2010, 9:05:43 AM4/7/10
to
PawełB wrote:

(...)

Wydaje się, że wszystko zalezy od tego gdzie ten kod umieściłeś...
Jeśli zrobisz to w Report_Open, to kod wykona sie tylko raz i nie sądzę aby
to było powodem zawieszania się raportu.
Dobrze napisany kawałek kodu nie wymaga też "On Error Resume Next"...

Oczywiście jeśli podana w przykładzie kwerenda "Zatrudnieni" będzie
zawierała odwołania do kontrolek formularza, to kod trzeba zmodyfikować.

Nie ma innej alternatywy dla kwerend krzyżowych o nieznanej ilości kolumn
czy o zmiennych ich nazwach.
Trzeba to wiązać z kontrolkami formularza dynamicznie.

--
KN

PawełB

unread,
Apr 7, 2010, 10:08:41 AM4/7/10
to

Użytkownik "Krzysztof Naworyta" <k.naw...@datacomp.com.pl> napisał w
wiadomości news:hphvvb$pc6$1...@news.onet.pl...

Tak umieściłem kod w Report_Open

> to było powodem zawieszania się raportu.
> Dobrze napisany kawałek kodu nie wymaga też "On Error Resume Next"...

Zgadzam się, nie mniej jednak czasami lepiej ukryć ewentualny błąd przed
użytkownikiem - dla komfortu pracy :)

> Oczywiście jeśli podana w przykładzie kwerenda "Zatrudnieni" będzie
> zawierała odwołania do kontrolek formularza, to kod trzeba zmodyfikować.

Miała odwołanie do daty, ale nie bezpośrednie tylko przez Funkcję :
==
Public Function DataOd()
DataOd = [Forms]![frmStatystyki]![txtDataOd]
End Function
==

Pozdrawiam
PawełB


Irokez

unread,
Apr 7, 2010, 2:08:02 PM4/7/10
to
Użytkownik "Jacek" <a...@ola.pl> napisał w wiadomości
news:ixgdkujzpiv0.1keu5vnjx6d6k$.dlg@40tude.net...
> http://www.sendspace.com/file/oacqpy

Dzięki.
Teraz tylko przeanalizować o co kaman że tu działa a tu nie działa.

Pozdrawiam

--
Irokez

Irokez

unread,
Apr 8, 2010, 1:12:14 PM4/8/10
to
Użytkownik "Krzysztof Naworyta" <k.naw...@datacomp.com.pl> napisał w
wiadomości news:hphqh6$7d5$1...@news.onet.pl...

>
> Taki urok kreatorów :)
> Kwerenda krzyzowa jest dość specyficzną kwerendą.
> Najważniejsze, że teoretycznie może wracać dowolną ilość kolumn (<=255) i
> to
> dla kreatora jest kłopotliwe.
> Poza tym jeśli kwerenda zwraca kolumnę NULL, to access zamienia to na <>.
> Ale kreator tak nie potrafi.
>
> Aby zaczął prawidłowo działac kreator raportów, musisz na ten czas ustawić
> w
> kwerendzie "ustalone nagłówki kolumn".
> Przykladowo, w Twoim przypadku:
>
> PARAMETERS [Forms]![Startup]![Data_do] DateTime,
> [Forms]![Startup]![Data_od]
> DateTime;
> TRANSFORM Sum(Kwerenda_wyb_data.czas_pracy) AS SumaOfczas_pracy
> SELECT Nazw.Nazwisko
> FROM Nazw LEFT JOIN Kwerenda_wyb_data ON Nazw.Nazwisko =
> Kwerenda_wyb_data.Nazwisko
> WHERE (((Kwerenda_wyb_data.praca_dla) Is Not Null))
> GROUP BY Nazw.Nazwisko
> ORDER BY Nazw.Nazwisko
> PIVOT Kwerenda_wyb_data.praca_dla In ("Grupa 1","Grupa 2","Grupa 3","Grupa
> 4");


Dzięki !
PIVOT pięknie rozwiązuje problem i wszystko gra :)

Pozdrawiam

--
Irokez

0 new messages