Avatar billede skurggman Nybegynder
12. juni 2000 - 17:07 Der er 3 kommentarer og
3 løsninger

Søge i en database

Jeg har lavet en Tabel i DB-desktop - og den skal jeg gerne kunne søge i -hvordan??
Avatar billede admin Novice
12. juni 2000 - 17:45 #1
Jeg har slettet dit andet indlæg da man kun må oprette et indlæg med samme spm.
Avatar billede tigerdyr Nybegynder
12. juni 2000 - 20:23 #2
Dvs. det er en Desktop database application du er igang med ??
In that case, må det være TQuery du skal have fat i!
Avatar billede skurggman Nybegynder
13. juni 2000 - 10:43 #3
Øhhh - det skal lige siges at jeg ikke er hjemme i delphi, som sådan. Men ææh jeg har lavet den med sådan en guide efter jeg har lavet en tabel i database desktop - nu skal den bare have en søgefunktion...håber du kan lave et eks eller noget. ;-)
Avatar billede sjensen Nybegynder
19. juni 2000 - 11:35 #4
hvis du selv vil lave et simpelt delphi program (hvis ikke for andet så får at komme igang med delphi) så er her en simpel trin for trin instruktion:

1. Start Delphi og vælg New Application fra File-menuen.

2. På den form der fremkommer dropper du følgende fra komponent paletten:

a. et edit-komponent fra standard,
b. en Button fra standard
c. et Query-komponent fra dataaccess
d. en datasource-komponent, fra dataaccess og
d. en DBGrid fra datacontrols

2. Klik på query-ikonet på din form og indsæt sti/navn på din database i feltet "Databasename"

3. Klik på datasource-komponentet og vælg Query1 i dataset feltet.

4. Klik på DBgrid komponentet og vælg DataSource1 i datasource feltet.

5. Klik på Button1 komponentet og skriv følgende kode imellem begin og end:

query1.close;
query1.sql.clear;
query1.sql.add(edit1.text);
query1.open;

6. Gem programmet (unit og project) på disken og compiler det.

7. Kør programmet og indtast følgende i edit-feltet:

select * from xxx

og erstat xxx med navnet på din database. Hvis den f.eks. hedder kunder.db (paradox database) skriver du

select * from kunder

Tryk derefter på knappen og dbgridden udfyldes nu med alle records, med alle felterne på tværs for hver linie.

8. For at søge kan du så bruge SQL statements ved at skrive dem i edit-feltet og trykke på knappen. Hvis du laver fejl får du en fejlmeddelelse og hvis ikke vises de records der findes i dbgridden.

eksempler:

a. hvis du vil finde alle record med et bestemt postnr så skriv: select * from kunder where postnr = 1234

så får du alle kunder der har postnr 1234

b. hvis du vil finde alle kunder der hedder noget med "kurt" skriver du: select * from kunder where kundenavn like %kurt%

og hvis du vil finde alle dem der bor i postnr 1234 og hedder noget med kurt skriver du: select * from kunder where (postnr = 1234) and (kundenavn like %kurt%)

og, hvis du vil have sorteret records i dbgridden så skal du bruge sætningen: "order by zzz", hvor zzz er navnet på det felt, f.eks. kundenavn, du vil sortere efter. Altså:

select * from kunder where (postnr = 1234) and (kundenavn like %kurt%) order by kundenavn

o.s.v. o.s.v.

Simpelt ikke ?

Men husk lige på at du ikke kan have et felt du kalder by fordi der er et reserveret ord i SQL (order by). kald det i stedet for "bynavn" (eller postdistriks som er den korrekte, tekniske, betegnelse)

Jeg håber at det er noget du kan bruge !!
Avatar billede surreal Nybegynder
29. november 2000 - 17:20 #5
Her får du en procedure til at finde den første element i DB\'en og så dem der kommer efter:

procedure GetFirst(var Navn:string; var FoundData:boolean);
begin
  FoundData := False;
  With DataModule1.Table1 do
  begin
    First;
    if not EOF then
    begin
      Navn := FieldByName(\'SName\').AsString;
      FoundData := True;
    end;
  end;
end;

procedure GetNext(var Navn:string; var FoundData:boolean);
begin
  FoundData := False;
  with DataModule1.Table1 do
  begin
    Next;
    if not EOF then
    begin
      Navn := FieldByName(\'SName\').AsString;
      FoundData := True;
    end;
  end;
end;

Du kan nu kombinere de to for at udskrive indholdet til en listbox.

procedure TFormMain.BListClick(Sender: TObject);
var Navn:string;
    FoundData:Boolean;
begin
  AlleListBox.Clear;
  GetFirst(Navn,FoundData);
  while FoundData do
  begin
    AlleListBox.Items.Add(Navn);
    GetNext(Navn,FoundData);
  end;
end;
Avatar billede puddelundercover Nybegynder
17. august 2001 - 16:00 #6
Table1.Setkey;
Table1.IndexName := \'Feltnavn\'; //Andet end primary Index
Table1.FieldByName(\'Feltnavn\').AsString := Edit1.text;
Table1.GotoNearest

eller

Table1.FindNearest([edit1.text]);
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