Avatar billede michael-schou Novice
05. februar 2006 - 17:48 Der er 9 kommentarer og
1 løsning

Søgning på kun en del af navnet - Hvordan?

Hejsa :)

Jeg har en lille database (Paradox 7) med navn, efternavn og tlf.nr.

Jeg har forsøgt at lave en søg funktion ved hjælp af en knap og et edit felt, det er også lykkedes mig men, der skal man søge på hele For Navnet, ellers finder den ikke noget.

Eks.: Hvis jeg nu skriver Ma i mit Edit felt, så vil jeg gerne have den til at finde det første navn der starter med Ma og alle de andre navne der starter med Ma skal så vises i en DBGrid.

Den skal søge på Navnet lige meget om man skriver med store eller små bogsataver.

Hvordan får man den til det? :)

Indtil videre har jeg nedenstående kode på min knap :

*****KODE START*****

procedure TForm4.BitBtn1Click(Sender: TObject);
begin
if Form4.Table1.Locate('Navn på opskrift',Edit1.Text,[]) then
begin
  // Fundet
  showmessage('Fundet');
end else
begin
  // Ikke fundet
  showmessage('Ikke Fundet');
end;

end;

*****KODE SLUT*****
Avatar billede kroning Nybegynder
05. februar 2006 - 17:54 #1
Så skal du kikke på TQuery og benytte SQL
SELECT * from dinbase WHERE osv...
Avatar billede kroning Nybegynder
05. februar 2006 - 18:10 #2
Query.SQL.Text:='SELECT * from dinbase WHERE Navn på opskrift LIKE "'+Edit1.Text+'%"';
Query.Open;

Jeg er ikke helt sikke på om dit felt navn "Navn på opskrift" skal omsluttes af et eller andet.
Avatar billede michael-schou Novice
05. februar 2006 - 18:58 #3
Ups, Der skulle ikke stå 'Navn på opskrift' men bare 'Navn' :)

Jeg tester det lige :)
Avatar billede kroning Nybegynder
05. februar 2006 - 19:31 #4
Glemte lige at nævne at % tegnet efter Edit1.Text gør at du vil finde alt der starter med f.eks. Ma, du kan også sætte % foran og så finde alt hvad der slutter med teksten eller både foran og bagved hvis teksten bare skal være et eller andet sted i navnet.
Kan ikke huske om man i paradox 7 er nød til at bruge UPPER for at finde alt uanset om det er med store eller små bogstaver, således:

var
temp : string;
begin
Temp:=AnsiUpperCase(Edit1.Text);
Query.SQL.Text:='SELECT * from dinbase WHERE UPPER(Navn) LIKE "'+Temp+'%"';
Query.Open;
end;
Avatar billede michael-schou Novice
05. februar 2006 - 19:46 #5
Ok, det vil jeg også lige teste :) Det første virkede fint, men hvordan laver man så en : Showmessage('Findes') Hvis der er et navn der starter med Ma? :)
Avatar billede kroning Nybegynder
05. februar 2006 - 19:50 #6
Du linker din Query til din DBGrid så hvis den ikke er tom efter Query.open så blev der nogen fundet, men du kan også bruge Query.RecordCount:

var
temp : string;
begin
Temp:=AnsiUpperCase(Edit1.Text);
Query.SQL.Text:='SELECT * from dinbase WHERE UPPER(Navn) LIKE "'+Temp+'%"';
Query.Open;
if Query.RecordCount>0 then
  showmessage('Fundet')
else
  showmessage('Ikke Fundet');
Avatar billede michael-schou Novice
05. februar 2006 - 19:56 #7
Super, det skal også lige testes men bliver nok først imorgen :)
Avatar billede michael-schou Novice
06. februar 2006 - 12:07 #8
kroning : Den sidste kode du skrev virker perfekt til det jeg skal bruge den til, takker mange gange :)
Avatar billede michael-schou Novice
06. februar 2006 - 12:07 #9
Smid lige et svar :)
Avatar billede kroning Nybegynder
06. februar 2006 - 12:18 #10
Godt så :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester