Avatar billede codegryf Nybegynder
10. marts 2002 - 13:33 Der er 8 kommentarer

Søgning

Jeg har en tabel med flg. indhold (i feltet VareTekst)
'vare 1','vare 2','vare 3','andet', osv.

Og så har jeg en form med et Dbgrid der viser ovenstående, samt en knap der hedder 'Find' og en tekstboks. Når jeg så skriver 'vare' i tekstboksen og trykker på 'Find' finder den 'vare 1', det kan jeg gøre med
'locate('VareTekst',tekstboks.text,[loCaseInsensitive,loPartialKey]),
det er fint nok, men hvordan får jeg den til at finde den næste vare når jeg trykker på 'Find' igen?
Avatar billede stoney Nybegynder
10. marts 2002 - 13:46 #1
Avatar billede codegryf Nybegynder
10. marts 2002 - 13:57 #2
Den har jeg læst, men jeg synes ikke at den gi'r svaret på mit spørgsmål, for jeg kan ikke se at der en funktion ala findfirst, findnext.
Avatar billede stoney Nybegynder
10. marts 2002 - 14:26 #3
Avatar billede codegryf Nybegynder
10. marts 2002 - 14:40 #4
Kapitel 9, har jeg læst, men som sagt synes jeg ikke det gi'r et svar, Hvor er det du mener at svaret står, er det afsnittet med Seek du mener.

Jeg har ikke prøvet Seek metoden, da der ikke står noget om at man kan lave en 'Findnext', med mindre 'soAfterEQ' eller 'soAfter', kan bruges til det, men det fremgår ikke af teksten.
Avatar billede stoney Nybegynder
10. marts 2002 - 15:14 #5
Næ, du har ret.

Så brug ADOquery eller ADOdataset.

Jeg bruger selv ADOquery selvom det "rigtige" er at bruge ADOdataset.
Grunden til at ADOquery og ADOtable findes er at Borland mente
det ville gøre det nemmer at omskrive/rekompilere eksisterende BDE
applicationer til ADO

Stoney
Avatar billede wmkurt Nybegynder
10. marts 2002 - 15:45 #6
Hvad opnår jeg ved at bruge ADOquery i stedet for, de har da heller ikke en funktion til at finde den næste forekomst af 'vare', eller mener du at jeg skal ændre Where delen i query.
Det jeg vil er at alle vare skal være vist i 'griddet', og når jeg så trykker på find skal den blot stille sig på den næste record der starter med 'vare'.

Jeg er godt klar over at jeg selvfølgelig kan gøre det 'manuel' med
while not tabel.eof and p=0 do
begin 
  P := pos('vare',tabel.FieldValues['varetekst']);
  if p=0 then
    tabel.next;
end;

men det er vel ikke særlig effektiv.
Avatar billede codegryf Nybegynder
10. marts 2002 - 16:03 #7
UPS, forkert brugernavn, det er altså ikke for at snyde jeg har 2 navne, jeg var bare træt af navnet wmkurt, da det henviser til min tidligere arbejdsplads. Så det var ikke meningen at jeg nogensinde mere ville bruge det navn, men det smuttede altså.
Nu har jeg afmeldt det, så nu smutter det ikke mere :-)
Avatar billede nih Novice
10. marts 2002 - 17:15 #8
Ellers skulle du lave en parameter forespørgsel 'QryVare':

SELECT * FROM tabel WHERE VareTekst LIKE * :Pvare *

Så sætter du parameteren således (uden * stjerner)
with QryVare do begin
close;
Parameters.ParamByName('Pvare').Value := edtBox.text;
open;
end;

Niels
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