[SOLVED] Wybor przez listę
[SOLVED] Wybor przez listę
Witam
W bazie są dwie tabele z polami:
towary:
Nazwa (klucz)
Opis
zakupy
IdZakupu (klucz)
NrRachunku
NazwaFirmy
Nazwa
Dwie tabele są połączone relacją (pole Nazwa)
Problem polega na utworzeniu formularz, w którym za pomocą listy będę wybierał nazwę towaru (pobraną z tabeli towary) a w podformularzu w postaci tabeli wyświetlone zostaną wszystkie rekordy z tabeli zakupy dotyczące wybranego towaru.
W bazie są dwie tabele z polami:
towary:
Nazwa (klucz)
Opis
zakupy
IdZakupu (klucz)
NrRachunku
NazwaFirmy
Nazwa
Dwie tabele są połączone relacją (pole Nazwa)
Problem polega na utworzeniu formularz, w którym za pomocą listy będę wybierał nazwę towaru (pobraną z tabeli towary) a w podformularzu w postaci tabeli wyświetlone zostaną wszystkie rekordy z tabeli zakupy dotyczące wybranego towaru.
Re: Wybor przez listę
(+ zał.)
Pole kombi:
- typ zawartości listy "SQL"
- zawartość listy:
- wydarzenia ...
Makra:
Pole kombi:
- typ zawartości listy "SQL"
- zawartość listy:
Kod: Zaznacz cały
select distinct "towar_zakup" from "tab_zakupy" order by "towar_zakup"
Makra:
Kod: Zaznacz cały
option explicit
'=============================
sub filtruj
dim oDok as object
dim oForm as object
dim oList as object
dim towar as string
oDok = thisComponent
oForm = oDok.drawPage.forms(0)
oList = oForm.getByName("Pole listy 1")
towar = oList.text
'msgbox(towar)
oForm.filter = "tab_zakupy.towar_zakup = " & "'" & towar & "'"
oForm.reload
end sub
'=============================
'=============================
sub wylacz_filtr
dim oDok as object
dim oForm as object
dim oList as object
oDok = thisComponent
oForm = oDok.drawPage.forms(0)
oList = oForm.getByName("Pole listy 1")
oList.text = "włącz filtr towaru"
oForm.filter = ""
oForm.reload
end sub
'=============================
- Załączniki
-
- formularz_filtr_wymaga_ooo_3.1.1_lub_wyzej.odb
- (14.15 KiB) Pobrany 884 razy
OOo3.1.1 na Ubuntu 9.04
Re: Wybor przez listę
Witam
Jeśli wszyscy odpowiadaliby w ten sposób, to na pewno łatwiej można byłoby się wielu rzeczy nauczyć.
Serdecznie dziękuję, za szybką, rzeczową a przede wszystkim wyczerpującą!!!! odpowiedź.
Jeśli wszyscy odpowiadaliby w ten sposób, to na pewno łatwiej można byłoby się wielu rzeczy nauczyć.
Serdecznie dziękuję, za szybką, rzeczową a przede wszystkim wyczerpującą!!!! odpowiedź.
Re: Wybor przez listę
witam, proszę o pomoc w następującej kwestii
mam bazę Karty i użytkownicy, posiada ona pole Nazwisko, po którym to chcę filtrować w formularzu rekordy bazy
przerobiłem podany w poście skrypt i przy zaznaczaniu wyszukiwania pojawia się błąd (zawarty w treści makra- na czerwono)
Nie jestem biegły w skryptach , ale najprawdopodobniej nie zadeklarowałem metody text, ale porównując oryginalny skrypt, tam też nie ma takiej deklaracji.
Za wszelką pomoc z góry dziękuję
"Nazwisko = oList.text " <- tu pojawia się błąd - nie znaleziono właściwości lub metody text.
mam bazę Karty i użytkownicy, posiada ona pole Nazwisko, po którym to chcę filtrować w formularzu rekordy bazy
przerobiłem podany w poście skrypt i przy zaznaczaniu wyszukiwania pojawia się błąd (zawarty w treści makra- na czerwono)
Nie jestem biegły w skryptach , ale najprawdopodobniej nie zadeklarowałem metody text, ale porównując oryginalny skrypt, tam też nie ma takiej deklaracji.
Za wszelką pomoc z góry dziękuję
Kod: Zaznacz cały
option explicit
'=============================
sub filtruj
dim oDok as object
dim oForm as object
dim oList as object
dim Nazwisko as string
oDok = thisComponent
oForm = oDok.drawPage.forms(0)
oList = oForm.getByName("MainForm_Grid")
Nazwisko = oList.text
Kod: Zaznacz cały
'msgbox(Nazwisko)
oForm.filter = "Karty i użytkownicy.Nazwisko = " & "'" & Nazwisko & "'"
oForm.reload
end sub
'=============================
'=============================
sub wylacz_filtr
dim oDok as object
dim oForm as object
dim oList as object
oDok = thisComponent
oForm = oDok.drawPage.forms(0)
oList = oForm.getByName("MainForm_Grid")
oList.text = "włącz filtr nazwisko"
oForm.filter = ""
oForm.reload
end sub
'=============================
OpenOffice 3.2
Re: Wybor przez listę
Już znalazłem powód błędu, okazało się ,że nie zmieniłem nazwy etykiety pola kombi, które wybierało Nazwisko i dlatego pojawiał się błąd "Nazwisko = oList.text " nie znaleziono właściwości lub metody text.
Jest następujący problem :
przyciski z formularza mają podłączone zmienione już makra .. ale po wybraniu przez pole kombi nazwiska np. kowalski wszystkie dane w tabeli w formularzu znikają , a powinny przecież zostać wszystkie wystąpienia nazwiska Kowalski.
Sprawdzałem formanty, ustawienia formularza , ale nie znalazłem przyczyny owego znikania danych.
Proszę o pomoc
Jest następujący problem :
przyciski z formularza mają podłączone zmienione już makra .. ale po wybraniu przez pole kombi nazwiska np. kowalski wszystkie dane w tabeli w formularzu znikają , a powinny przecież zostać wszystkie wystąpienia nazwiska Kowalski.
Sprawdzałem formanty, ustawienia formularza , ale nie znalazłem przyczyny owego znikania danych.
Proszę o pomoc
OpenOffice 3.2
Re: Wybor przez listę
Makro filtr nie działało, ponieważ nazwa bazy zawierała polskie znaki i miała w nazwie spację, po poprawieniu nazwy bazy wszystko działa poprawnie.
zmienilem z "moje dvd i cd" na "moje_dvd_cd:"
zmienilem z "moje dvd i cd" na "moje_dvd_cd:"
OpenOffice 3.2
Re: Wybor przez listę
Witam
Chciałbym się dowiedzieć czy jest taka możliwość aby do filtra z 2 postu można by dołączyć więcej kryteriów
np. żeby filtrował towary ale tylko z konkretnej firmy
Chciałbym się dowiedzieć czy jest taka możliwość aby do filtra z 2 postu można by dołączyć więcej kryteriów
np. żeby filtrował towary ale tylko z konkretnej firmy
OpenOffice 3.3
Re: Wybor przez listę
Jasne. Potrzeba wstawić w polu filter warunek złożony, a jeżeli chcemy tym zarządzać, to dołożyć więcej pól i sczytywać z nich wartości do tego warunku.Noiprocek pisze:Witam
Chciałbym się dowiedzieć czy jest taka możliwość aby do filtra z 2 postu można by dołączyć więcej kryteriów
np. żeby filtrował towary ale tylko z konkretnej firmy
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Wybor przez listę
Problem z tym że nie wiem jak powinien wyglądać warunek złożony
Doszedłem do tego:
niestety nic nie wyświetla się w tabeli
Doszedłem do tego:
Kod: Zaznacz cały
'=============================
sub filtruj
dim oDok as object
dim oForm as object
dim oList as object
dim oList2 as object
dim towar as string
dim firma as string
oDok = thisComponent
oForm = oDok.drawPage.forms(0)
oList = oForm.getByName("Pole listy 1")
oList2 = oForm.getByName("Pole listy 2")
towar = oList.text
firma = oList2.text
'msgbox(towar)
oForm.filter = "tab_zakupy.towar_zakup = " & "'" & towar & "'" & "tab_zakupy.firma = " & "'" & firma & "'"
oForm.reload
end sub
'=============================
OpenOffice 3.3
Re: Wybor przez listę
W SQL, w uproszczeniuNoiprocek pisze:Problem z tym że nie wiem jak powinien wyglądać warunek złożony
Kod: Zaznacz cały
select ... where wyrażenie operator wartość [spójnik wyrażenie operator wartość [...]]
Kod: Zaznacz cały
... where cena > 2000 and producent <> 'moja_konkurencja'
// W bardziej zaawansowanych formularzach filtrowania nawet spójniki i operatory mogą być wybierane.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Wybor przez listę
Kod: Zaznacz cały
option explicit
'=============================
sub filtruj
dim oDok as object
dim oForm as object
dim oList as object
dim oList2 as object
dim towar as string
dim firma as string
oDok = thisComponent
oForm = oDok.drawPage.forms(0)
oList = oForm.getByName("Pole listy 1")
oList2 = oForm.getByName("Pole listy 2")
towar = oList.text
firma = oList2.text
'msgbox(towar)
'msgbox(firma)
oForm.filter = "SELECT" & "tab_zakupy.firma, tab_zakupy.towar_zakup" & "FROM" & "tab_zakupy" & "WHERE" & "tab_zakupy.firma = " & "'" & firma & "'" & "AND" & "tab_zakupy.towar_zakup = " & "'" & towar & "'"
oForm.reload
end sub
'=============================
'=============================
sub wylacz_filtr
dim oDok as object
dim oForm as object
dim oList as object
dim oList2 as object
oDok = thisComponent
oForm = oDok.drawPage.forms(0)
oList = oForm.getByName("Pole listy 1")
oList2 = oForm.getByName("Pole listy 2")
oList.text = "włącz filtr towaru"
oList2.text = "włącz filtr towaru"
oForm.filter = ""
oForm.reload
end sub
'=============================
- Załączniki
-
- formularz_filtr_wymaga_ooo_3.1.1_lub_wyzej(1).odb
- (14.34 KiB) Pobrany 404 razy
OpenOffice 3.3
Re: Wybor przez listę
Bo filter nie ma zawierać całego zapytania, tylko frazę warunku, tego po słowie where.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Wybor przez listę
Problem w tym że filter działa tylko dla jednego warunku:
albo:
gdy wpisuje
po wyborze pierwszego warunku znika cała lista
Kod: Zaznacz cały
oForm.filter = "tab_zakupy.firma = " & "'" & firma & "'"
Kod: Zaznacz cały
oForm.filter = "tab_zakupy.towar_zakup = " & "'" & towar & "'"
Kod: Zaznacz cały
oForm.filter = "tab_zakupy.firma = " & "'" & firma & "'" & "AND" & "tab_zakupy.towar_zakup = " & "'" & towar & "'"
OpenOffice 3.3
Re: Wybor przez listę
Warunek SQL
zakupy.firma = 'pole1' AND zakupy.towar = 'pole2'
wymaga odstępu oddzielającego AND od nazwy tabeli. U ciebie się sklejają. Wpisz w kodzie "AND " zamiast "AND".
zakupy.firma = 'pole1' AND zakupy.towar = 'pole2'
wymaga odstępu oddzielającego AND od nazwy tabeli. U ciebie się sklejają. Wpisz w kodzie "AND " zamiast "AND".
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: [SOLVED] Wybor przez listę
Witam, nie chciałem zaśmiecać i zakładać nowego wątku więc skrobnę tutaj... Jestem początkującym użytkownikiem OO Base i mam również problem z polem kombi i wyborem przez listę.
Moja baza zawiera tabelę Pracownicy z polami:
ID klucz (liczba)
NAZWISKO (tekst)
IMIĘ (tekst)
N1 (liczba)
N2 (liczba)
...
N50 (liczba)
INN (tekst)
Utworzyłem sobie formularz w którym wprowadzam dane to tabeli, umieściłem tam również pole kombi z wyborem przez listę (chodzi o NAZWISKO [Typ: Sql; zawartość:SELECT DISTINCT "NAZWISKO" FROM "Pracownicy"] ) ale o ile na liście pojawiają się dodane nazwiska to nie mogę się się miedzy nimi "swobodnie przełączać".np :
[ID] 1[Nazwisko] Kowalski[Imię]Jan[N1]2[N2]1...
[ID] 2[Nazwisko] Nowak[Imię]Piotr[N1]1[N2]1...
[ID] 3[Nazwisko] Stasiak[Imię]Marian[N1]1[N2]2...
itd.
Jestem w formularzu na Kowalski a z pola listy wybiorę Stasiak to przechodzi mi na kolejny rekord czyli Nowak a nie jak chciałem na Stasiak :/ Potrzebuje Makra ? ( nie zam się na Makrach :/)
Jestem naprawdę początkujący więc proszę o pomoc noob-friendly
Moja baza zawiera tabelę Pracownicy z polami:
ID klucz (liczba)
NAZWISKO (tekst)
IMIĘ (tekst)
N1 (liczba)
N2 (liczba)
...
N50 (liczba)
INN (tekst)
Utworzyłem sobie formularz w którym wprowadzam dane to tabeli, umieściłem tam również pole kombi z wyborem przez listę (chodzi o NAZWISKO [Typ: Sql; zawartość:SELECT DISTINCT "NAZWISKO" FROM "Pracownicy"] ) ale o ile na liście pojawiają się dodane nazwiska to nie mogę się się miedzy nimi "swobodnie przełączać".np :
[ID] 1[Nazwisko] Kowalski[Imię]Jan[N1]2[N2]1...
[ID] 2[Nazwisko] Nowak[Imię]Piotr[N1]1[N2]1...
[ID] 3[Nazwisko] Stasiak[Imię]Marian[N1]1[N2]2...
itd.
Jestem w formularzu na Kowalski a z pola listy wybiorę Stasiak to przechodzi mi na kolejny rekord czyli Nowak a nie jak chciałem na Stasiak :/ Potrzebuje Makra ? ( nie zam się na Makrach :/)
Jestem naprawdę początkujący więc proszę o pomoc noob-friendly
OpenOffice 3.3.0
Win XP
Win XP