Discussion:
kwerenda parametryczna + lista rozwijalna
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
suze_e
2006-07-14 11:12:20 UTC
Permalink
Witam,

Mam kwerende, którą jak uruchamiam to pojawia się okienko, w którym
wpisuję nazwisko osoby. Chciałabym żeby to okienko to była lista z
której mogę sobie wybrać osobę. W jaki sposób coś takiego można
zrobić? Najlepiej jeszcze, żeby po napisaniu kawałka nazwiska reszta
się dopełniła. Mam coś takiego w formularzu ale zupełnie nie wiem
jak to zrobić w kwerendzie:/ Oczywiście nazwiska są przechowywane w
tabeli.

Pozdrawiam
Alicja
Kondi
2006-07-14 13:17:21 UTC
Permalink
Post by suze_e
Witam,
Mam kwerende, którą jak uruchamiam to pojawia się okienko, w którym
wpisuję nazwisko osoby. Chciałabym żeby to okienko to była lista z
której mogę sobie wybrać osobę. W jaki sposób coś takiego można
zrobić? Najlepiej jeszcze, żeby po napisaniu kawałka nazwiska reszta
się dopełniła. Mam coś takiego w formularzu ale zupełnie nie wiem
jak to zrobić w kwerendzie:/ Oczywiście nazwiska są przechowywane w
tabeli.
Pozdrawiam
Alicja
nie zrobisz tak w "golej" kwerendzie. muszisz zrobic sobie pole combobox
na formularzu i na akcje przycisku lub zmiany wywolywac filtrowana
kwerende lub nastepny formularz
--
Pozdrawiam
Kondi ®
suze_e
2006-07-14 13:48:00 UTC
Permalink
Post by Kondi
nie zrobisz tak w "golej" kwerendzie. muszisz zrobic sobie pole combobox
na formularzu i na akcje przycisku lub zmiany wywolywac filtrowana
kwerende lub nastepny formularz
Ha:) to znalazłam już w helpie:)
Tylko mam jeszcze pytanie takie. Rozumiem, że z kwerendy wywalam
wszystko związane z parametrem w takim razie, tak?
I jak na guziku wywoływać filtrowaną kwerende?

Pozdrawiam
Alicja
Tomasz Kiełpiński
2006-07-14 14:02:27 UTC
Permalink
Post by suze_e
Post by Kondi
nie zrobisz tak w "golej" kwerendzie. muszisz zrobic sobie pole combobox
na formularzu i na akcje przycisku lub zmiany wywolywac filtrowana
kwerende lub nastepny formularz
Ha:) to znalazłam już w helpie:)
Tylko mam jeszcze pytanie takie. Rozumiem, że z kwerendy wywalam
wszystko związane z parametrem w takim razie, tak?
Nie,nie,nie
Kryterium [Nazwisko:] zamień na Forms!Twojformularz.TwojeKombi

na guziku wywoływać filtrowaną kwerende?

Docmd.OpenQuery "TwojaKwerenda"

Pozdrawiam,
Kiełpiś
--
Był czas mrutszławy, ślibkie skrątwy Tomasz Kiełpiński
Na wałzach wiercząc świrypły, a.k.a. "Kiełpiś"
A mizgłe do cna borogłątwy Odpowiadając prywatnie,
I zdomne świszczury zgrzypły. usuń: FALSZYWY z adresu
suze_e
2006-07-14 14:21:35 UTC
Permalink
Post by Tomasz Kiełpiński
Nie,nie,nie
Kryterium [Nazwisko:] zamień na Forms!Twojformularz.TwojeKombi
hmm
czyli powinno to wyglądać tak?
WHERE Pracownicy.Nazwisko LIKE [Forms!list_of_employees.Combo0]
albo tak?
WHERE Pracownicy.Nazwisko LIKE Forms!list_of_employees.Combo0

bo prawde mówiąc nie działa ani jedno ani drugie ale może ja coś
źle pisze:/
Marcin Ziemian
2006-07-14 14:26:13 UTC
Permalink
hmm
czyli powinno to wygl=B1da=E6 tak?
WHERE Pracownicy.Nazwisko LIKE [Forms!list_of_employees.Combo0]
albo tak?
WHERE Pracownicy.Nazwisko LIKE Forms!list_of_employees.Combo0
bo prawde m=F3wi=B1c nie dzia=B3a ani jedno ani drugie ale mo=BFe ja co=B6
=BCle pisze:/
WHERE Pracownicy.Nazwisko LIKE '*' & [Forms]![list_of_employees].[Combo0]
& '*'

lub jeśli chcesz dokładnie dopasować dane:

WHERE Pracownicy.Nazwisko=[Forms]![list_of_employees].[Combo0]
(ale to nie wyszuka wszystkich Kowalskich i Dziadkow dla wprowadzonego
tekstu "kow".

Pozdro
--
M.Z.
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
suze_e
2006-07-14 14:32:52 UTC
Permalink
Post by Marcin Ziemian
WHERE Pracownicy.Nazwisko LIKE '*' & [Forms]![list_of_employees].[Combo0]
& '*'
Ale to nie działa:/
tzn działa tak samo jak poprzednio. Otwiera się okienko w które
muszę wpisać nazwisko. A nie mój formularz z combo boxem:/

a tutaj pozwalam sobie wkleić całą kwerende:

SELECT
Pracownicy.Id_pracownika, Pracownicy.Imie, Pracownicy.Nazwisko,
Komputery.Model, Komputery.Serial_number_k, Komputery.Cena,
Komputery.Typ_k, Komputery.Os_k, 'KOMPUTERY' AS 'SPRZET'
FROM Pracownicy INNER JOIN Komputery ON Pracownicy.Id_pracownika =
Komputery.Id_pracownika
WHERE Pracownicy.Nazwisko LIKE '*' &
[Forms]![list_of_employees].[Combo0] & '*'
UNION ALL
SELECT
Pracownicy.Id_pracownika, Pracownicy.Imie, Pracownicy.Nazwisko,
Drukarki.Nazwa_win_d, Drukarki.serial_number_d, Drukarki.Cena,
Drukarki.Id_drukarki_d, Drukarki.Model, 'DRUKARKI' AS 'SPRZET'
FROM Pracownicy INNER JOIN Drukarki ON Pracownicy.Id_pracownika =
Drukarki.Id_pracownika_d
WHERE Pracownicy.Nazwisko LIKE '*' &
[Forms]![list_of_employees].[Combo0] & '*'

UNION ALL SELECT
Pracownicy.Id_pracownika, Pracownicy.Imie, Pracownicy.Nazwisko,
Bc.Nazwa, [Bc.nr_karty_bc] & '/' & [Bc.nr_SIM] AS Numer_seryjny,
Bc.Cena, Bc.Id_blue, Bc.nr_SIM, 'BC' AS 'SPRZET'
FROM Pracownicy INNER JOIN Bc ON Pracownicy.Id_pracownika =
Bc.id_pracownika
WHERE Pracownicy.Nazwisko LIKE '*' &
[Forms]![list_of_employees].[Combo0] & '*';
Piotr Chlabicz
2006-07-14 14:38:58 UTC
Permalink
Post by suze_e
Post by Tomasz Kiełpiński
Nie,nie,nie
Kryterium [Nazwisko:] zamień na Forms!Twojformularz.TwojeKombi
hmm
czyli powinno to wyglądać tak?
WHERE Pracownicy.Nazwisko LIKE [Forms!list_of_employees.Combo0]
albo tak?
WHERE Pracownicy.Nazwisko LIKE Forms!list_of_employees.Combo0
bo prawde mówiąc nie działa ani jedno ani drugie ale może ja coś
źle pisze:/
WHERE Pracownicy.Nazwisko LIKE [Forms]![list_of_employees]![Combo0]

O ile oczywiscie w kolumnie zwiazanej Cobmo0 jest Nazwisko.
Jezeli w innej kolumnie (na przyklad drugiej) mozesz uzyc nastepujacej
funkcji:

Public Function fComboBoxColumns(FormName As String, _
FieldName As String, _
ColumnIndex As Integer) As Variant
On Error Resume Next
fComboBoxColumns = Forms(FormName)(FieldName).Column(ColumnIndex)
End Function

Wklej ja do modulu std. i uzyj w kryteriach kwerendy tak:

fComboBoxColumns("list_of_employees";"Combo0";1)
--
Piotr Chlabicz
http://groups.google.pl/groups?as_ugroup=pl.comp.bazy-danych.msaccess
suze_e
2006-07-14 14:48:15 UTC
Permalink
Post by Piotr Chlabicz
WHERE Pracownicy.Nazwisko LIKE [Forms]![list_of_employees]![Combo0]
tak wpisałam
Post by Piotr Chlabicz
O ile oczywiscie w kolumnie zwiazanej Cobmo0 jest Nazwisko.
Jest nazwisko pobierane z tabeli Pracownicy. Co znaczy 'kolumna
związana'?
Bo w tym combo boxie jest napisane że unbound. No ale to normalnie
działa. Tzn sam formularz. Jak go otwieram to mam liste i moge sobie
wybierać na niej nazwiska.
Tylko nijak nie chce mi się to podpiąć do kwerendy. W kwerendzie
nadal mam okienko do wpisania parametru:/
Piotr Chlabicz
2006-07-14 15:29:42 UTC
Permalink
Post by suze_e
Jest nazwisko pobierane z tabeli Pracownicy. Co znaczy 'kolumna
związana'?
Bo w tym combo boxie jest napisane że unbound. No ale to normalnie
działa. Tzn sam formularz. Jak go otwieram to mam liste i moge sobie
wybierać na niej nazwiska.
W kombo mozesz miec wiecej niz jedna kolumne.
Unbound odnosi sie do wlasciwosci ControlSource, a ja mialem na mysli
wlasciwosc Bound Column.
Okresla ona wartosc pola kombi.
Post by suze_e
Tylko nijak nie chce mi się to podpiąć do kwerendy. W kwerendzie
nadal mam okienko do wpisania parametru:/
A o jaki parametr Cie prosi? Tzn o jakiej nazwie?
Widocznie odwolanie do pola kombi jest nieprawidlowe.
--
Piotr Chlabicz
http://groups.google.pl/groups?as_ugroup=pl.comp.bazy-danych.msaccess
suze_e
2006-07-14 15:36:01 UTC
Permalink
Post by Piotr Chlabicz
A o jaki parametr Cie prosi? Tzn o jakiej nazwie?
Widocznie odwolanie do pola kombi jest nieprawidlowe.
Otwiera się okienko Enter Parametr Value
A jako nazwa parametru jest Forms!list_of_employees!Combo0

Hmm wydaje mi się, że nazwy podaję dobre.

jak bedę pisała tutaj a potem jeszcze na mejla do zostane
schizofreniczką. Więc może będę odpisywać tutaj;)

Pozdrawiam
Alicja
Piotr Chlabicz
2006-07-14 16:09:21 UTC
Permalink
Post by suze_e
Post by Piotr Chlabicz
A o jaki parametr Cie prosi? Tzn o jakiej nazwie?
Widocznie odwolanie do pola kombi jest nieprawidlowe.
Otwiera się okienko Enter Parametr Value
A jako nazwa parametru jest Forms!list_of_employees!Combo0
Hmm wydaje mi się, że nazwy podaję dobre.
jak bedę pisała tutaj a potem jeszcze na mejla do zostane
schizofreniczką. Więc może będę odpisywać tutaj;)
To ty zaczelas, ja tylko wyslalem przykladzik na priva ;-)

Jestes pewna, ze formularz "list_of_employees" jest wowczas otwarty?
Napewno znajduje sie tam pole kombi o nazwie Combo0 ?

Zreszta wydaje mi sie, czytajac ten watek, ze chodzi Ci o cos zupelnie
innego.
Powtorze (to co napisalem na priv):

Prawdopodobnie, jak mniemam chcesz wydrukowac raport wg zadanych kryteriow z
listy na formularzu.
Wiec w kwerendzie zwracajacej dane do raportu odwolaj sie do wartosci
wybranej w polu kombi (jak to juz Ci podawalem), a na tym samym formularzu
zbuduj przycisk otwierajacy raport.
--
Piotr Chlabicz
http://groups.google.pl/groups?as_ugroup=pl.comp.bazy-danych.msaccess
suze_e
2006-07-14 16:25:46 UTC
Permalink
Post by Piotr Chlabicz
To ty zaczelas, ja tylko wyslalem przykladzik na priva ;-)
oj faktycznie:)
Post by Piotr Chlabicz
Jestes pewna, ze formularz "list_of_employees" jest wowczas otwarty?
otwarty? no nie jest otwarty. hmm sądziłam, że otworzy się gdy
uruchomie kwerende. Przecież o to chodzi. Kurcze zaczynam już się
gubić. To jest formularz, na którym jest tylko i wyłącznie combo
box. I on powinien się otwierać zamiast tego okienka 'enter parameter
value'.
Post by Piotr Chlabicz
Napewno znajduje sie tam pole kombi o nazwie Combo0 ?
Tak.
Post by Piotr Chlabicz
Prawdopodobnie, jak mniemam chcesz wydrukowac raport wg zadanych kryteriow z
listy na formularzu.
zgadza się.
Post by Piotr Chlabicz
Wiec w kwerendzie zwracajacej dane do raportu odwolaj sie do wartosci
wybranej w polu kombi (jak to juz Ci podawalem), a na tym samym formularzu
zbuduj przycisk otwierajacy raport.
odwołuje się do wartości wybranej w kombi w taki sposob:
WHERE Pracownicy.Nazwisko LIKE [Forms]![list_of_employees]![Combo0]
tak?

A przycisk otwierający raport mam na ogólnym formularzu.
Mam taki formularz 'Start' gdzie są różne przyciski i między innymi
jest przycisk odpalający ten raport.
Karol MARCHEWKA
2006-07-14 20:43:53 UTC
Permalink
Post by suze_e
otwarty? no nie jest otwarty. hmm sądziłam, że otworzy się gdy
uruchomie kwerende. Przecież o to chodzi.
W takim razie zamiast kwerendy odpal Twój formularz z polem combo :-)
--
Pozdrawiam
Karol MARCHEWKA

troszkę więcej o mnie na stronie www.marchewka.za.pl
Jeżeli piszesz na priv z adresu email wytnij tekst "-WYTNIJ-TO-"
Piotr Chlabicz
2006-07-17 07:57:19 UTC
Permalink
"suze_e" wrote:

[...]
Post by suze_e
A przycisk otwierający raport mam na ogólnym formularzu.
Mam taki formularz 'Start' gdzie są różne przyciski i między innymi
jest przycisk odpalający ten raport.
Wiec, z formularza Start otwieraj formularz z Combo, a dopiero z jego
poziomu otwieraj raport.

Czyli:

1. Na formularzu Start:
- przycisk z procedura OnClick:
DoCmd.OpenForm "list_of_employees"

2. Na formularzu list_of_employees:
- Combo0 z lista Nazwisk
- przycisk otwierajacy Raport

3. Raport ze zrodlem rekordow w postaci kwerendy z warunkiem:
WHERE Pracownicy.Nazwisko = [Forms]![list_of_employees]![Combo0]


Operatora Like uzywa sie, kiedy kryteria zawieraja znaki wieloznaczne.
--
Piotr Chlabicz
http://groups.google.pl/groups?as_ugroup=pl.comp.bazy-danych.msaccess
Krzysztof Naworyta
2006-07-14 15:07:02 UTC
Permalink
Juzer suze_e <***@o2.pl> napisał

|| Nie,nie,nie
|| Kryterium [Nazwisko:] zamień na Forms!Twojformularz.TwojeKombi
|
| hmm
| czyli powinno to wyglądać tak?
| WHERE Pracownicy.Nazwisko LIKE [Forms!list_of_employees.Combo0]
| albo tak?
| WHERE Pracownicy.Nazwisko LIKE Forms!list_of_employees.Combo0
|
| bo prawde mówiąc nie działa ani jedno ani drugie ale może ja coś
| źle pisze:/

a formularz był uprzednio otwarty, czy tez liczysz, że sam się domysli, że
powinien sie otworzyć ?

radzono Ci:
na formularzu oprócz kombo umieść przycisk, który będzie otwierał
kwerendę!

Generalnie nie pracuje sie bezpośrednio ani na tabelach ani kwerendach. Do
wszystkiego robi sie interfejsy w formularzach.
Zwłaszcza że zwykle w skończonej aplikacji blokuje sie wyświetlanie okna
bazy.
--
KN
(MVP, M$ Office Access)

archiwum grupy:
http://groups.google.pl/advanced_group_search
(grupa: pl*msaccess)
suze_e
2006-07-14 15:18:44 UTC
Permalink
Post by Krzysztof Naworyta
a formularz był uprzednio otwarty, czy tez liczysz, że sam się domysli, że
powinien sie otworzyć ?
do otwierania formularza mam przycisk. patrz niżej.
Post by Krzysztof Naworyta
na formularzu oprócz kombo umieść przycisk, który będzie otwierał
kwerendę!
zupełnie nie o to mi chodzi.
Post by Krzysztof Naworyta
Generalnie nie pracuje sie bezpośrednio ani na tabelach ani kwerendach. Do
wszystkiego robi sie interfejsy w formularzach.
Zwłaszcza że zwykle w skończonej aplikacji blokuje sie wyświetlanie okna
bazy.
Nie pracuje bezpośrednio na kwerendach ani na tabelach. Akurat na
bazie tej kwerendy mam stworzony raport. Na formularzu mam guzik który
ten raport otwiera. Chodzi tylko o to, że jak otwieram raport to
otwiera się najpierw okienko kwerendy parametrycznej (bo przecież na
niej bazuje raport), w którym wpisuje sobie nazwisko pracownika, dla
którego ten raport ma być wyświetlony. A chcę żeby zamiast tego
okienka otwierał się combo box zebym mogła sobie wybrać z listy to
nazwisko i nie musiała go wpisywać.

Pozdrawiam.
Krzysztof Naworyta
2006-07-14 15:38:59 UTC
Permalink
Juzer suze_e <***@o2.pl> napisał


a węc jeszcze raz ...

| Nie pracuje bezpośrednio na kwerendach ani na tabelach. Akurat na
| bazie tej kwerendy mam stworzony raport. Na formularzu mam guzik który
| ten raport otwiera.

więc na tym samym formularzu umieść dodatkowo kombo z nazwiskami!
Albo jak nie na tym formularzu, to niech on otwiera inny formularz
(zawierający owo kombo) a dopiero ten ostatni niech otwiera raport!

Aby raport nie traktował odwołania do kombo jak nazwę parametru, formularz
musi być otwarty zanim spróbujesz otworzyć raport!

| Chodzi tylko o to, że jak otwieram raport to
| otwiera się najpierw okienko kwerendy parametrycznej (bo przecież na
| niej bazuje raport), w którym wpisuje sobie nazwisko pracownika, dla
| którego ten raport ma być wyświetlony. A chcę żeby zamiast tego
| okienka otwierał się combo box zebym mogła sobie wybrać z listy to
| nazwisko i nie musiała go wpisywać.

Więc w prosty sposób nie da się!

Nie mozna np. napisać funkcji f(), która otwiera formularz jako dialog,
czeka na jego ukrycie, poczym przekazuje wartość do kryteriów kwerendy:

(...) Where nazwisko = f()

Zwykłe DoCmd.OpeForm w takim miejscu jest niedozwolone. Mozna otwierać
formularz poprzez nową instancję klasy, ale nadal nie będzie zachowywał
sie poprawnie ...

Można napisać funkcję z wykorzystaniem UserForm, ale to nie takie proste i
ma swoje pułapki.

Mozna w końcu subclassować okno "Input Parameter" i "wpisać" do niego
combo!
(chyba BraZby ma taki przykład na swojej stronie)

Wszystkie z powyższych możliwości są daleko bardziej skomplikowane niż
zwyczajne otwarcie formularza z kombi, ustawienie w nim właściwego
nazwiska i dopiero potem otwieranie raportu, którego kwerenda obwołuje się
do tego kombi.
--
KN
(MVP, M$ Office Access)

archiwum grupy:
http://groups.google.pl/advanced_group_search
(grupa: pl*msaccess)
Piotr Chlabicz
2006-07-14 14:21:32 UTC
Permalink
Post by suze_e
Post by Kondi
nie zrobisz tak w "golej" kwerendzie. muszisz zrobic sobie pole combobox
na formularzu i na akcje przycisku lub zmiany wywolywac filtrowana
kwerende lub nastepny formularz
Ha:) to znalazłam już w helpie:)
Tylko mam jeszcze pytanie takie. Rozumiem, że z kwerendy wywalam
wszystko związane z parametrem w takim razie, tak?
I jak na guziku wywoływać filtrowaną kwerende?
Wyslalem ci przykald na priv.
--
Piotr Chlabicz
http://groups.google.pl/groups?as_ugroup=pl.comp.bazy-danych.msaccess
Loading...