🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.bazy-danych.msaccess
2 messages
2 total messages Started by dzagorski Mon, 27 Jul 2015 13:49
filtry na formularzu
#136947
Author: dzagorski
Date: Mon, 27 Jul 2015 13:49
32 lines
2134 bytes
Proszę o pomoc


Mam tabelę: Tabela
ID (Integer)
Name(Varchar)
IsGrupa1 (Integer, Default 0 CHECK Is Grupa1 0 OR 1)
IsGrupa2 (Integer, Default 0 CHECK Is Grupa2 0 OR 1)
IsGrupa3 (Integer, Default 0 CHECK Is Grupa1 0 OR 1)
IsGrupa4 (Integer, Default 0 CHECK Is Grupa1 0 OR 1)
i tak 10 grup oraz cała masa innych pól



Na formularzu wstawiam pole kombi i pole listy:
CBoxFilterGrupa - którego źródłem jest lista wartości (wpisana z palucha):
1;IsGrupa1;
2;IsGrupa2;
3;IsGrupa3;
4;ISGrupa4;
itd.
Dwie kolumny, związana kolumna 1


ListBox - źródło rekordów
SELECT ID, Name, IsGrupa1, IsGrupa 2 ..... FROM Tabela


Po aktualizacji CBoxFilterGrupa ma się  filtrować lista wartości w ListBox oraz rekordy z tabeli i dalej po kliknięciu na konkretnej wartości w ListBox formularz ma przejść do konkretnego rekordu wg ID wybranego w polu ListBox. I utknąłem na CBoxFilterGrupa_AfterUpdate (). Jak zapisać poprawnie warunek filtrowania z wykorzystaniem SELECT CASE.  


 
Re: filtry na formularzu
#136948
Author: md
Date: Tue, 28 Jul 2015 09:53
63 lines
3095 bytes
W dniu 27-07-2015 o 15:49, dzagorski@wp.pl pisze:
> Proszę o pomoc
>
>
> Mam tabelę: Tabela
> ID (Integer)
> Name(Varchar)
> IsGrupa1 (Integer, Default 0 CHECK Is Grupa1 0 OR 1)
> IsGrupa2 (Integer, Default 0 CHECK Is Grupa2 0 OR 1)
> IsGrupa3 (Integer, Default 0 CHECK Is Grupa1 0 OR 1)
> IsGrupa4 (Integer, Default 0 CHECK Is Grupa1 0 OR 1)
> i tak 10 grup oraz cała masa innych pól
>
>
>
> Na formularzu wstawiam pole kombi i pole listy:
> CBoxFilterGrupa - którego źródłem jest lista wartości (wpisana z palucha):
> 1;IsGrupa1;
> 2;IsGrupa2;
> 3;IsGrupa3;
> 4;ISGrupa4;
> itd.
> Dwie kolumny, związana kolumna 1
>
>
> ListBox - źródło rekordów
> SELECT ID, Name, IsGrupa1, IsGrupa 2 ..... FROM Tabela
>
>
> Po aktualizacji CBoxFilterGrupa ma się  filtrować lista wartości w ListBox oraz rekordy z tabeli i dalej po kliknięciu na konkretnej wartości w ListBox formularz ma przejść do konkretnego rekordu wg ID wybranego w polu ListBox. I utknąłem na CBoxFilterGrupa_AfterUpdate (). Jak zapisać poprawnie warunek filtrowania z wykorzystaniem SELECT CASE.
>
>
>
>
w zdarzeniu po aktualizacji dla kombi ustaw
select case
	case is=1
	  zap="Select Tabela* where Tabela.Isgrupa1=1"
         case is=2
	..................................................
	zapytania oczywiście dla wszystkich przypadków
end select
forms!....ListBox.RowSource=zap
forms!....ListBox.requery

tu załatwiliśmy pole listy zawiera ono tylko rekordy z wybranej grupy


analogicznie postępujesz po wybraniu wartości na liście tylko zapytanie 
wstawiasz do źródła formularza jako podstawę ograniczenia przyjmując id 
rekordu

md

ps.
wg mnie masz nieprawidłowo skonstruowaną w tabelę Tabela

powinieneś rozbić ją na 2 tabele
Tabela - zawierającą wszystkie dane bez pól IsGrupa
Tabela1 - zawierająca pola ID i GrupaNr

ograniczy to rozmiar bazy i będzie zgodne przynajmniej z 2 postacią normalną
md
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads