/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Filte på TTable
Fra : Ulrik Vadstrup


Dato : 07-09-01 11:20

Hvordan fan..... virker filter på et TTable

Jeg prøver f.eks at finde alle der hedder jens til fornavn, ved at putte det
ind i et editfelt, jeg har prøvet følgende.

Med et input på Jens*

Får jeg i det ene tilfælde fejl, noget med at * ikke tillades, og i det
andet vælger den ingen poster - selvom der er en masse der hedder Jens til
fornavn

OnKeyDown
If Key = 13 then
TabNames.Filter = 'LeederNames = edtFilet.Text';

Og

OnKeyDown
If Key = 13 then
TabNames.Filter = 'LeederNames = QuotedStr(edtFilet.Text');

Jeg har sat Filtered til True.

Er der noget jeg har misforstået ?

--
Med venlig hilsen
Ulrik Vadstrup



 
 
R. A. Larsen (08-09-2001)
Kommentar
Fra : R. A. Larsen


Dato : 08-09-01 17:37

"Ulrik Vadstrup" <vadstrup@post12.tele.dk> wrote:
>
> Hvordan fan..... virker filter på et TTable
>
> Jeg prøver f.eks at finde alle der hedder jens til fornavn, ved at putte det
> ind i et editfelt, jeg har prøvet følgende.
>
> Med et input på Jens*
>
> Får jeg i det ene tilfælde fejl, noget med at * ikke tillades, og i det
> andet vælger den ingen poster - selvom der er en masse der hedder Jens til
> fornavn
>
> OnKeyDown
> If Key = 13 then
> TabNames.Filter = 'LeederNames = edtFilet.Text';

Ovenstående virker i hvert fald ikke. Har du skrevet det efter hukommelsen?

Brug:

TabNames.Filter = 'LeederNames = ''' + edtFilet.Text + '''';

Jeg lavede en lille test, og det virker fint. Bemærk antallet af '.

I hjælpen til Filter står der, at man fx. kan finde staten californien ved at
sætte Filter til:

State = 'CA'

Bemærk at det (indholdet i databasen), man søger efter, skal omgives af '. Da
Delphi bruger ' omkring strenge, er man derfor nødt til at fordoble dem inde i
strengen. Her er det man skal skrive i Delphi for at få ovenstående:

'State = ''CA'''

Hvis man kun bruger edit-feltet som filter ( TabNames.Filter = edtFilet.Text ),
skal man dog kun skrive det første (ingen dobbelte '), da Delphi så selv
fordobler dem.

Håber det hjalp.

MVH, René

PS. QuotedStr() bruger " og ikke '.
--
Using Virtual Access
http://www.vamail.com


Bent Pedersen (10-09-2001)
Kommentar
Fra : Bent Pedersen


Dato : 10-09-01 10:08

Hej,

>Med et input på Jens*
>
>Får jeg i det ene tilfælde fejl, noget med at * ikke tillades, og i det

Prøv med % for joker.

>OnKeyDown
> If Key = 13 then
> TabNames.Filter = 'LeederNames = edtFilet.Text';

Du kan ikke bruge komponenter og deres properties i sådan et udtryk. Prøv:

TabNames.Filter = 'LeederNames = "' + edtFilet.Text+ '"';

/Bent



Ulrik Vadstrup (10-09-2001)
Kommentar
Fra : Ulrik Vadstrup


Dato : 10-09-01 17:27

"Bent Pedersen" <bentriloquist@eurosport.com> wrote in message
news:Hp%m7.1911$%u4.2084@www.newsranger.com...
> Hej,
>
> >Med et input på Jens*
> >
> >Får jeg i det ene tilfælde fejl, noget med at * ikke tillades, og i det
>
> Prøv med % for joker.
>
> >OnKeyDown
> > If Key = 13 then
> > TabNames.Filter = 'LeederNames = edtFilet.Text';
>
> Du kan ikke bruge komponenter og deres properties i sådan et udtryk. Prøv:
>
> TabNames.Filter = 'LeederNames = "' + edtFilet.Text+ '"';
>
> /Bent


OKay, nu kom jeg hjem og har prøvet følgende - det er lidt anderledes - men
jeg tror i fanger ideen

procedure TfrmMain.edtFilterKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
If Key = 13 then
Begin
TabInfo.Filter := 'FABRIK_NAVN = ''' + edtFilter.Text + '''';
End;
end;


Og

procedure TfrmMain.edtFilterKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
If Key = 13 then
Begin
TabInfo.Filter := 'FABRIK_NAVN = "' + edtFilter.Text + '"';
End;
end;

Hvor jeg altså i sidste eksembel bruger gåseøjn - ingen af tingene
fungerer - jeg fatter det simpelthen ikke.....

Ulrik



R. A. Larsen (10-09-2001)
Kommentar
Fra : R. A. Larsen


Dato : 10-09-01 23:10

"Ulrik Vadstrup" <vadstrup@post12.tele.dk> wrote:

[klip]
> OKay, nu kom jeg hjem og har prøvet følgende - det er lidt anderledes - men
> jeg tror i fanger ideen
>
> procedure TfrmMain.edtFilterKeyDown(Sender: TObject; var Key: Word;
> Shift: TShiftState);
> begin
> If Key = 13 then
> Begin
> TabInfo.Filter := 'FABRIK_NAVN = ''' + edtFilter.Text + '''';

Prøv at indsætte

TabInfo.Invalidate;

Jeg gjorde følgende i min test (filteret blev ændret, når man forlod
indtastningsfeltet):

procedure TForm1.Edit1Exit(Sender: TObject);
begin
Table1.Filtered := False;
if Edit1.Text <> '' then begin
Table1.Filter := 'Place = ''' + Edit1.Text + '''';
Table1.Filtered := True;
end;
DBGrid1.Invalidate;
end;

hvor "Place" er et felt i min testdatabase.

MVH, René

PS: Lad venligst være med at sende en email med svar. Det er høfligst at svare i
nyhedsgruppen, og det bliver lidt irriterende, hvis man først har svaret
tilbage pr. email og så finder ud af, at man skal til at sende det samme i
nyhedsgruppen.
--
Using Virtual Access
http://www.vamail.com


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste