Det kan jeg ikke få til at virke. Det jeg mangler er en sætning ligesom SELECT * FROM tabel1 WHERE NAVN LIKE '%hans%'. Men der skal kun returneres poster hvor der ord der søges på er 100% magen til et der findes i NOTAT-feltet
Det hele kodes i Delphi og se så ledes ud: procedure TForm6.BitBtn2Click(Sender: TObject); var r,s,allS:string; D1:TADODataset; i,j:integer; res:TForm4; begin res:=tform4.Create(Application); res.Caption:='Resultat ved udvidet søgning.'; s:=''; r:='SELECT * FROM Fonde_1 WHERE '; if navn.Text <>'' then begin if navnEksakt.Checked then s:='Navn LIKE ''*'+navn.Text+'*''' // Det er dit forslag........ else s:='Navn LIKE ''%'+navn.Text+'%'''; end; if prio.Text <>'' then begin if s<>'' then s:=s+' AND '; if Prioeksakt.Checked then S:=s+'Prioritetsomraade ='''+prio.Text+'''' else s:=s+'Prioritetsomraade LIKE ''%'+prio.Text+'%''' end; if Ans.text <>'' then begin if s<>'' then s:=s+' AND '; if Anseksakt.Checked then s:=s+'Ansoegningsskema ='''+ans.Text+'''' else s:=s+'Ansoegningsskema LIKE ''%'+ans.Text+'%''' end; if dead.Text <>'' then begin if s<>'' then s:=s+' AND '; if deadEksakt.Checked then s:=s+'Deadline ='''+dead.Text+'''' else s:=s+'Deadline LIKE ''%'+dead.Text+'%''' end; if legat.Text <>'' then begin if s<>'' then s:=s+' AND '; if legatEksakt.Checked then s:=s+'Legatsum ='''+legat.Text+'''' else s:=s+'Legatsum LIKE''%'+legat.Text+'%''' end; if kommentar.Text <>'' then begin if s<>'' then s:=s+' AND '; if kommentarEksakt.Checked then s:=s+'Kommentar ='''+kommentar.Text+'''' else s:=s+'Kommentar LIKE''%'+kommentar.Text+'%''' end; if kvartal.Text<>'Vælg' then begin if s<>'' then s:=s+' AND '; s:=s+'Kvartal ='''+kvartal.Text+'''' end; alls:=r+s; showmessage(alls); try i:=0; D1:=TADOdataset.create(self); D1.Connection:=form1.ADOCon; D1.Close; d1.CommandText:=alls; D1.Open; for j:=1 to res.resultatGrid.RowCount do begin res.resultatGrid.Cells[0,j]:=''; res.resultatGrid.Cells[1,j]:=''; res.resultatGrid.Cells[2,j]:=''; res.resultatGrid.Cells[3,j]:=''; res.resultatGrid.Cells[4,j]:=''; res.resultatGrid.Cells[5,j]:=''; end; res.resultatGrid.RowCount:=D1.RecordCount+1; while i< D1.RecordCount do begin res.resultatGrid.Cells[0,i+1]:=(D1.FieldByName('Navn').Value); res.resultatGrid.Cells[1,i+1]:=(D1.FieldByName('Prioritetsomraade').Value); res.resultatGrid.Cells[2,i+1]:=(D1.FieldByName('Ansoegningsskema').Value); res.resultatGrid.Cells[3,i+1]:=(D1.FieldByName('Deadline').Value); res.resultatGrid.Cells[4,i+1]:=(D1.FieldByName('Legatsum').Value); res.resultatGrid.Cells[5,i+1]:=(D1.FieldByName('Kommentar').Value); D1.next; inc(i) end; except showmessage('DB-fejl........') end; //
hmm, det ser umiddelbart rigtigt ud. Kan du udskrive værdien af s, når den er færdiggenereret?
For lige at fjerne alle potentielle misforståelser: ..Navn Like "*Hans*" finder alle poster, hvor ordet Hans indgår vilkårligt sted i Navn
..Navn = "Hans" finder alle poster, hvor Navn er eksakt lig Hans. Der er altså ikke flere tegn i Navn-feltet end HANS.
..Navn Like "%Hans%" er ikke en gyldig syntaks i Access. Af gyldige jokertegn/wildcards findes disse: * Erstatter et eller flere tegn ? Erstatter ét tegn # Erstatter et tal
Derudover kan man bruge kantet parenteser, minustegn og udråbstegn til lidt mere specifikke søgninger.
Hmmm Navn Like '%Hans%' osv. funker fra delphi, problemet er at den også returnere eks. Hansen. En færdig værdi af s med din løsning ser ud som følger: SELECT * FROM Fonde_1 WHERE Navn LIKE '*Velux*'
noget tyder på at jeg har besværet dig uden grund, jeg har lige prøvet dit forslag fra access, og her virker det som du også skriver, det må være en fejl i oversættelsen fra delphi der er kage i. Du får derfor point for dit svar var jo rigtigt....
Det lader til, at % virker som * burde gøre. Hansen vil også blive returneret, hvis du fik * til at virke. Hvis du kun ønsker at finde "Hans" som delstreng, men ikke ønsker Hansen, så findes der ingen standard-funktion i Access som kan løse det problem :o(
ja, sådan tænker jeg også...jeg oplever bare tit, at folk i sådan en situation tager pointene selv - som om, at dette bare var et gratis service-organ, hvor man ikke behøver at sige tak for indsatsen.
Men sådan er folk jo så forskellige ;)
Synes godt om
Ny brugerNybegynder
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.