Avatar billede -anders- Juniormester
29. november 2014 - 13:07 Der er 11 kommentarer og
1 løsning

Fritekst-søgning med SQL, mange felter, Access 2010

Hej Eksperter

Jeg tumler med et problem jeg ikke rigtigt kan dreje.

Jeg en formular med en ubunden tekstboks, og en liste, samt en kommandoknap. jeg skriver et eller andet i tekstboksen, og klikker på knappen, og nedenstående kode køres:


'kode start'
Dim SQLfind As String

SQLfind = "Select * From QRYfindmedaljer where [Navn]&[Kaldenavn]&[Regent]&[Indstiftet år]&[Stempel nr - Avers]&[Stempel nr - Revers]&[Beskrivelse - Avers]&[Beskrivelse - Revers] Like '*" & Me!txtfind & "*'"

Me!Liste21.RowSource = SQLfind
'kode slut'

Listen på formen viser nu de poster hvor der indgår noget tekst der svarer til det der er indtastet i tekstboksen Me!txtfind. Det virker fint.

Problem:
Jeg skal fritekst-søge i hele 34 felter i forespørgslen "QRYmedaljer" hvilket gør ovenstående kode temmelig uoverskuelig. Kan det gøres på en anden måde? Eller kan man lave lineskift i ovenstående kode så koden bliver mere overskuelig at læse? Jeg har søgt her på eksperten, og via Google, men finder ikke rigtigt noget brugbart. Nogen der har en ide :-)

Hilsen
Anders.
Avatar billede larsgrau Forsker
29. november 2014 - 13:20 #1
du kan vel bruge _ og der efter ny line
Avatar billede Slettet bruger
29. november 2014 - 13:25 #2
Sqlfind = "bla bla " & _
"Osv osv " & _
"Etc..."
Avatar billede -anders- Juniormester
29. november 2014 - 13:31 #3
Hej

Tak for indlæggende, det har jeg prøvet, men syntaxen fejler hvis jeg anvender _ eller & _ eller _ &
Avatar billede fdata Forsker
30. november 2014 - 16:04 #4
Du mangler formodentlig det afsluttende " i hver linje og det indledende " i den næste. Se spg's svar.
Avatar billede -anders- Juniormester
02. december 2014 - 18:52 #5
Hej

Det virker ikke. Hvis jeg skriver nedenstående kode fejler det ikke, men der returneres ikke nogen poster til listen hvis jeg i mit søgefelt txtfind skriver Emil. Jeg ved der findes 2 poster hvor der fx i feltet navn står Emil.

Dim sSQL As String

sSQL = "Select * From QRYfindmedaljer Where [Navn]" & _

"[Kaldenavn]" & _

"[Regent] Like '*" & Me!txtfind & "*'"

Me!Liste21.RowSource = sSQL

Hvis jeg skriver koden som nedenstående, altså i en lang række virker det.

Dim sSQL As String

sSQL = "Select * From QRYfindmedaljer Where [Navn]&[Kaldenavn]&[Regent] Like '*" & Me!txtfind & "*'"

Me!Liste21.RowSource = sSQL

Som skrevet tidligere skal der defineres 34 felter, så en lang række er ikke særlig læse venligt. Gad vide om der måske var en helt anden måde at gøre det på :-)

Hilsen
Anders.
Avatar billede Slettet bruger
02. december 2014 - 19:19 #6
I det tilfaelde skal du ogsaa have & indenfor:
"[DitFelt]&" & _
Osv..
Avatar billede Slettet bruger
02. december 2014 - 19:23 #7
Du kan ogsaa lave en forespoergsel, som indeholder en kolonne med alle dine felter i og have en where clause som peger paa dit felt i formularen.
Avatar billede -anders- Juniormester
02. december 2014 - 19:28 #8
Hej spg

tak for indlægget jeg prøver 02. december 2014 kl. 19:19:09 af. Jeg har prøvet det med feltet i forespørgslen, og det virker fint, men jeg syntes at VBA koden er mere "elegant" :-)
Avatar billede -anders- Juniormester
02. december 2014 - 19:37 #9
Desværre, det virker ikke, jeg for en fejl "at der er forventet et udtryk"

Vil du prøve at poste et fuldt ex som bygger på min kode, hvis det ikke virker, dropper jeg det bare (du skal nok få point:-)
Avatar billede Slettet bruger
03. december 2014 - 20:49 #10
Vis mig koden som fejler.
Avatar billede Slettet bruger
03. december 2014 - 20:57 #11
Du kan sikkert selv se det hvis du tilfoejer debug.print sSQL lige foer du saetter den som rowsource. (Du skal have immidiate vinduet aktiveret!~)
Avatar billede -anders- Juniormester
04. december 2014 - 16:34 #12
Hej spg, tak for indlæggende, point er tildelt
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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