Avatar billede morientes Nybegynder
27. april 2004 - 16:34 Der er 10 kommentarer og
1 løsning

@thomasjepsen vedr. dynamisk søgning...igen

Jeg sidder og kigger på denne kodestump og kan ikke gennemskue, hvad den helt præcist gør i forhold til resten af funktionen.

SQLStr = Left(SQLStr, Len(SQLStr) - 5)

Jeg håber, du kan forklare mig det.
Avatar billede limemedia Nybegynder
27. april 2004 - 16:36 #1
linien fjerner de sidste 5 tegn i SQLStr
27. april 2004 - 16:38 #2
Jeg skal prøve at forklare:

Metoden går jo ud på, at løbe alle formularens kontrolelementer gennem og kontrollere om de har et tag (mærke). Hvis Ja, så lægges kriteriet til SQLStr. Og for hver gennemløb sluttes af med at 'klistre' et " And " bagest på SQLStr.
Når gennemløbet er forbi skal sidste " And " fjernes. Og som lars Jensen skrier, så fjerner den stump kode blot de sidste 5 karaktere :o)

Giver det mening?
Avatar billede morientes Nybegynder
27. april 2004 - 16:41 #3
Jo tak, det er jeg klar over, men i den større sammenhæng forstår jeg ikke hvorfor den gør det ;-)
Avatar billede morientes Nybegynder
27. april 2004 - 16:42 #4
...min kommentar der var til det første svar...ikke til dit Thomas.
Avatar billede limemedia Nybegynder
27. april 2004 - 16:43 #5
det kunne du jo bare have skrevet ;) var jo ikke til at gætte
Avatar billede morientes Nybegynder
27. april 2004 - 16:44 #6
Tak for svaret...nu forstår jeg den sætning. Men hvad er grunden til, at "And" klistres på SQLstr?
27. april 2004 - 16:50 #7
ja, det er lidt teknisk, men hvis du kigger på hvordan SQLstrengen ender op med at se ud - f.eks.:
"Fornavn = 'Ole' And Stilling = 'Lærer' And Postnr = 2000 And Køn = 'Kvinde'

For hver gang man sætter et nyt kriterie på, skal der en And mellem. Men da man, for hvert gennemløb, i princippet ikke ved om der står noget i SQLStr i forvejen, så er dette den hurtigste måde at sikre sig, at der kommer det rigtige antal "And"'s på.
Man kunne alternativt spørge:
If Len(SQLStr) > 0 then
  SQLStr = SQLStr & " And " & NytKriterie
else
  SQLStr = SQLStr & NytKriterie
endif

Men det andet er hurtigere (har jeg lært af erfaring efter at have brugt den anden metode i et par år ;o)
Avatar billede morientes Nybegynder
27. april 2004 - 16:52 #8
Jeg tror, jeg forstår det nogenlunde nu. Det er godt nok barske sager for en semi-newbie som jeg selv ;-)
Avatar billede terry Ekspert
27. april 2004 - 19:07 #9
an easier method, which I have also mentioned previosuly is to start by setting WHERE to 1

SQLStr = "WHERE 1 "

then there is no need to check
27. april 2004 - 20:10 #10
Jeg har godt set, at du bruger den metode af og til, Terry. Men jeg mener min metode giver en 'renere' SQL.
Men det er jo bare en smagssag, om man synes at "Select 1 And ...." er en acceptabel syntaks :o)
27. april 2004 - 20:10 #11
Sludder og vrøvl - der skulle have stået:
Men det er jo bare en smagssag, om man synes at "Where 1 And ...." er en acceptabel syntaks :o)
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