Avatar billede Slettet bruger
29. september 2001 - 13:17 Der er 13 kommentarer og
1 løsning

Søge i hele tabellen?

Hej

Jeg har en \"søge\"-form med nogle felter - Jeg skal søge i en tablen (der har de samme felter som tabellen har) ... Hvordan laver jeg det? ... Det skal ikke være et fra, at brugeren har skrevet noget i alle felterne i formen... Gerne et eksempel. .:)
Avatar billede Slettet bruger
29. september 2001 - 13:18 #1
Rettelse: Det skal ikke være et krav, at brugeren har skrevet noget i alle felterne i formen
Avatar billede nute Nybegynder
29. september 2001 - 13:20 #2
Avatar billede Slettet bruger
29. september 2001 - 13:24 #3
nute> Hver felt i formen skal kun søge på tilsvarende felt i tabellen.. Og man skal kunne unlade, at skrive i alle felter...
Avatar billede Slettet bruger
29. september 2001 - 13:25 #4
Den eneste løsning jeg selv ser er en masse \"if\" sætninger, men det må da kunne løses nemmere.?
Avatar billede nute Nybegynder
29. september 2001 - 13:29 #5
well...du kan benytte Select case:
SQL = \"SELECT * FROM tabell\"

for each item in Request.form
  Select case item
    case \"etFormFelt\"
      \' bygg noe av din SQL
    case \"etAnnetFormFelt\"
      \' bygg noe av din SQL
  End select
next

u c ?
Avatar billede Slettet bruger
29. september 2001 - 13:32 #6
nute> Kan ikke helt følge den?
Avatar billede nute Nybegynder
29. september 2001 - 13:41 #7
Request.Form vil kun returnere de formfelt som det er skrevet noe i. Med andre ord, hvis du har et formular som inneholder formfeltene \"txt\", \"category\" og \"order\", så kan du benytte Request.Form til å funne ut av hvilke formelement som har noe innhold. Hvis du kun skriver i feltene \"txt\" og \"order\", så kan du enkelt bruke en select case for å bygge din SQL:

SQL = \"SELECT * FROM tabell WHERE \"
SQLEnd = \"\"
counter = 0
if( UBOUND(Request.Form) > 0 ) then \' sjekker om noen av feltene er utfylt
  formLength = UBOUND(Request.Form)
  for each item in Request.Form
    Select Case item
    case \"txt\"
      SQL = SQL & \" txt LIKE \'\" & Request.Form( item ) & \"\'\"
    case \"category\"
      SQL = SQL & \" category = \" & Request.Form( item )
    case \"order\"
      SQLEnd = SQLEnd & \" ORDER BY ID \" & Request.Form( item )
    end Select
   
    counter = counter + 1
    if( counter < formLength ) then
      SQL = SQL & \" AND \"
    end if
  next
  SQL = SQL & SQLEnd
end if

(( dette er bare en rask skisse til hvordan du kan løse det. Håper du forstår...))

/nute
Avatar billede Slettet bruger
29. september 2001 - 13:55 #8
nute> Hey... Når jeg bruger UBound siger den følgende:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A000D)
Typerne stemmer ikke overens: \'UBOUND\'
/form.asp, line 16

Avatar billede nute Nybegynder
29. september 2001 - 14:02 #9
aahhh...sorry...man kan ikke bruke UBOUND på Request.Form. Denne returnerer en Collection og ikke en array. Du skal bruke

Request.Form.Count

/nute
Avatar billede Slettet bruger
29. september 2001 - 14:22 #10
Hey.. okay...

Men jeg bliver jo nød til at checke på om f.eks. \"txt\" er tom...

etc.

    case \"txt\"
        if txt <> \"\" then
      SQL = SQL & \" txt LIKE \'\" & Request.Form( item ) & \"\'\"
        end if

Går jeg ud fra?
Avatar billede nute Nybegynder
29. september 2001 - 14:29 #11
nope...for hvis txt er tom, så vil ikke txt bli sendt med over til neste side. Som jeg skrev i et tidligere innlegg...Request.Form inneholder *kun* de formelementer som inneholder en verdi. Med andre ord...hvis du ikke har skrevet noe i \"txt\", så vil ikke dette elementet bli postet over til neste side...
Avatar billede nute Nybegynder
29. september 2001 - 14:31 #12
nææææ....sorry....litt galt...i ASP er man visst nødt til å sjekke om feltet inneholder noe:

Select case item
  case \"txt\"
    if( LEN( request.Form( item ) ) > 0 ) then
      SQL = SQL & ...
    end if


/nute
Avatar billede Slettet bruger
29. september 2001 - 15:10 #13
nute> Yes, det mente jeg nok... :) tak for hjælpen
Avatar billede nute Nybegynder
29. september 2001 - 15:11 #14
anytime :)
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