|  | 		    
					
    
        
            
                
                | |  | Søg ud fra checkbokse Fra :
  Duno | Vist : 1110 gange 100  point
 Dato :  21-02-05 11:33
 | 
 |  | Jeg skal lave en søgning hvor søgningen skal foretages ud fra flere markeringer i flere rækker af checkbokse
 
 altså 4 forskellige kategorier Type, Funktion, Form, tid
 
 Med ca 4 - 6 checkbokse i hver kategori
 
 hvordan laver man sådan en søgning nemmest??
 
 altså hvordan laver man strengen, Select * From tabel where form1 = checkbox1 and checkbox2 and.. osv.. så blivetr det jo en helvedes lang streng med ca 20 kriterier
 
 
 |  |  | 
 | |  | Kommentar Fra :
  smorch  | 
 Dato :  21-02-05 12:48
 | 
 |  | 
 
                Ja! Strengen bliver lang, men du skal så kun lave een.....
 Forslag:
 Du kan lave et valg på grundlag af hvilke bokse, der er checket, og dermed lave små bidder som du så tilføjer til din sql sætning efterhånden som de skal bruges.
 Jeg går ud fra, at checkboksene har en strengværdi...
 SQL="select * from tabel where AKTIV=1 "  
 if request.form("TypeBoks1")<>"" then SQL=SQL & " AND [type]='" & request.form("TypeBoks1") & "'"
 if request.form("TypeBoks2")<>"" then SQL=SQL & " AND [type]='" & request.form("TypeBoks2") & "'"
 if request.form("TypeBoks3")<>"" then SQL=SQL & " AND [type]='" & request.form("TypeBoks3") & "'"etc.
 if request.form("TypeBoks4")<>"" then SQL=SQL & " AND [type]='" & request.form("TypeBoks4") & "'"etc.
 if request.form("FunktionBoks1")<>"" then SQL=SQL & " AND [type]='" & request.form("FunktionBoks1") & "'"
 if request.form("FunktionBoks2")<>"" then SQL=SQL & " AND [type]='" & request.form("FunktionBoks2") & "'"
 if request.form("FunktionBoks3")<>"" then SQL=SQL & " AND [type]='" & request.form("FunktionBoks3") & "'"etc.
 if request.form("FunktionBoks4")<>"" then SQL=SQL & " AND [type]='" & request.form("FunktionBoks4") & "'"etc.
 etc.
 SQL=SQL & " ORDER by " & request.form("sortering") ' Som er fx. radiobuttons med et evt. sorteringskriterie
 Mvh
 Smorch
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  Duno | 
 Dato :  21-02-05 15:49
 | 
 |  | 
 
                ok.. det ser godt ud, men hvad menes der med AKTIV = 1
 og .form("sortering") jeg ser ingen af dem andre steder...
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  smorch  | 
 Dato :  21-02-05 18:33
 | 
 |  | 
 
                AKTIV - Lav en kollonne, der hedder aktiv, og sæt de poster der skal kunne søges på til af være lig med 1
 Sortering : Hvis du derudover lavede 4 radiobuttons der hedder sortering (Alle 4) med hhv. med værdien Type, Funktion, Form og tid, ville du kunne få sorteret dit søgeresultat i samme arbejdsgang ved at bruge den sidste linie også - du kan også bare lade være med at bruge den.
 Smorch
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  Duno | 
 Dato :  22-02-05 10:48
 | 
 |  | 
 
                Super, det var sku ikke dumt tænkt.. jeg var ude i meget større løsninger, men det her er jo nemt og simpelt FEDT    men hvad med forbindelsesstrengen ?
 er den ikke noget i stil med ?
 <%
 Set database = Server.CreateObject ("ADODB.Connection")
 database.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\web\db\test2.mdb")
 %>
 og visning af resultater må være sql("navn") osv ik... ?
 Hilsen
 Duno
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  smorch  | 
 Dato :  22-02-05 10:58
 | 
 |  | 
 
                <%
 Set database = Server.CreateObject ("ADODB.Connection")
 database.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\web\db\test2.mdb")
 SQL="select * from tabel where AKTIV=1 "  
 if request.form("TypeBoks1")<>"" then SQL=SQL & " AND [type]='" & request.form("TypeBoks1") & "'"
 if request.form("TypeBoks2")<>"" then SQL=SQL & " AND [type]='" & request.form("TypeBoks2") & "'"
 if request.form("TypeBoks3")<>"" then SQL=SQL & " AND [type]='" & request.form("TypeBoks3") & "'"etc.
 if request.form("TypeBoks4")<>"" then SQL=SQL & " AND [type]='" & request.form("TypeBoks4") & "'"etc.
 if request.form("FunktionBoks1")<>"" then SQL=SQL & " AND [type]='" & request.form("FunktionBoks1") & "'"
 if request.form("FunktionBoks2")<>"" then SQL=SQL & " AND [type]='" & request.form("FunktionBoks2") & "'"
 if request.form("FunktionBoks3")<>"" then SQL=SQL & " AND [type]='" & request.form("FunktionBoks3") & "'"etc.
 if request.form("FunktionBoks4")<>"" then SQL=SQL & " AND [type]='" & request.form("FunktionBoks4") & "'"
 'etc.
 SQL=SQL & " ORDER by " & request.form("sortering") ' Som er fx. radiobuttons med et evt. sorteringskriterie
 Set rs = Server.CreateObject("ADODB.Recordset")
 Set rs = ConnF.Execute( SQL )
 if not rs.eof then
    do until rs.eof
                 response.write(rs("KOLONNENAVN") & " - "  &  rs("KOLONNENAVN2") & "<br>") ' eksempel
                 rs.movenext
              loop
 end if
 set rs= nothing
 conn.close
 set conn= nothing
 %>
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  smorch  | 
 Dato :  22-02-05 10:59
 | 
 |  | 
 
                RETTELSE:
 if not rs.eof then
          do until rs.eof 
                response.write(rs("KOLONNENAVN") & " - "  &  rs("KOLONNENAVN2") & "<br>") ' eksempel
                rs.movenext
             loop
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  smorch  | 
 Dato :  22-02-05 11:00
 | 
 |  | 
 
                F#%&"#¤  
 I rettelsen rettede KanDu linieskiftet IGEN !!!!!!!!!!!! 
 Der skal være linieskift efter 
 do until rs.eof 
 response.write(rs("KOLONNENAVN") & " - "  &  rs("KOLONNENAVN2") & "<br>") ' eksempel
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  smorch  | 
 Dato :  22-02-05 11:01
 | 
 |  | 
 
                FU#&"%!"#%§
 efter do until rs.eof  skal der være linieskift
 Smorch
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  Duno | 
 Dato :  22-02-05 11:30
 | 
 |  | 
 
                Ja KanDu kan mange ting ""GG""
 ha ha sikken en kamp (hatten af for det    ) .. 
 men ok.. pointen er fanget ""GG""
 jeg takker og tester og smider efterfølgende 50 point oven i puljen, som respekt for din udholdenhed, samt dine kommentare som FU#&"%!"#%§, der straks sendte mine tanker tilbage til de gode gamle dage med et ny trykt Anders And blad!
 Tester med det samme....
 hey.. det slog mig lige...
 hvis der nu ikke er nogen poster som passer til de valgte kriterer
 kan man så ikke bare lave en sætning som denne
 i = 0
 if not rs.eof then
          do until rs.eof response.write(rs("KOLONNENAVN") & " - "  &  rs("KOLONNENAVN2") & "<br>") ' eksempel
                rs.movenext
 i = i + 1
             loop
 end if
 If i = 0 then
 response.write "Ingen poster svarende til kriterier"
 end if
 Hilsen
 Duno
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  smorch  | 
 Dato :  22-02-05 13:46
 | 
 |  | 
 
                Du kan bare lægge  ind efter 
             loop
 else
 response.write "Ingen poster svarende til kriterier"
 end if 
 set rs= nothing
 conn.close
 set conn= nothing
 Jeg er vokset op med AA
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  smorch  | 
 Dato :  22-02-05 13:48
 | 
 |  | 
 
                SK"%#&"&% kandu laver l... i det ígen
 Der skal være linieskift efter 
 end if  og altså før set rs=nothing
   |  |  | 
 | |  | Kommentar Fra :
  Duno | 
 Dato :  22-02-05 15:43
 | 
 |  | 
 
                hmm .. jeg får følgende fejl
 Expected ';' 
 /rrseek.asp, line 7 
 Set database = Server.CreateObject ("ADODB.Connection")
 og der er en markering efter Set på D´et i database
 giver mi fejlmelding nogen mening??
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  smorch  | 
 Dato :  22-02-05 15:50
 | 
 |  | 
 
                Den skal hedde
 Set Conn = Server.CreateObject("ADODB.Connection")
 hvis du bruger det jeg har lavet herover - ellers skal du skifte Conn ud med database alle steder
 Men fejlen siger mig ikke ret meget.... 
 Du har <%     %> omkring al dit vbscript?
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  Duno | 
 Dato :  22-02-05 16:16
 | 
 |  | 
 
                Ja den kan køre alt.. asp php osv.. jeg har den fulde pakke.. med alle opdateringer osv (har lige skiftet server i weekenden.. og har 2 asp sites kørende allerede på den server.
 ok det hjalp.. men nu får jeg 
 Microsoft JET Database Engine error '80040e10' 
 No value given for one or more required parameters. 
 /rrseek.asp, line 38 
 linie 38 er 
 Set rs = Conn.Execute( SQL )
 men jeg lægger lige en samlet fil du kan se, meld lige tilbage når den er hentet...
http://www.linkzonen.dk/rrseek.txt |  |  | 
 | |  | Kommentar Fra :
  smorch  | 
 Dato :  22-02-05 16:30
 | 
 |  | 
 
                Det vil sige, at der er en parameter forkert i sql sætningen - sikkert et forkert kolonnenavn - ellers nok manglende værdi fra formularen.
 skriv
 response.write(sql)
 inden conn.execute(sql)
 og se om du finder fejlen
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  Duno | 
 Dato :  22-02-05 16:49
 | 
 |  | 
 
                hmm.. havde du tænkt på at alle felter eks funktion1 og funktion 2 skulle have hver sit felt i databasen?? eller hvad var din tanke???
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  Duno | 
 Dato :  22-02-05 17:05
 | 
 |  | 
 
                men hvis man nu skulle (nu har du jo set udkastet) .. hvis man nu markere 2 felter i samme kategori eks form.. så skal den jo også indeholder begge ting i databasen
 hvordan får jeg sat det op, jeg vil jo kun kunne vise en profil med 2 markeringer, hvis det er det der er søgt på..
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  smorch  | 
 Dato :  22-02-05 20:31
 | 
 |  | 
 
                Jeg er gået ud fra, at fx. form er et kolonnenavn. Det kan jo så indeholde een af 4-6 værdier fx. rund,firkantet,trekantet,oval eller tokantet.
 Formular:
 X  Rund ( <input type="checkbox" name="FormBoks1" value="rund"> )
 X  Firkantet
    Trekantet
    Oval
    Tokantet
 Hvis man så i formularen vælger rund og firkantet, vil sql sætningen finde alle med enten rund eller firkantet i feltet form
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  Duno | 
 Dato :  22-02-05 20:40
 | 
 |  | 
 
                ja klart nok
 men lad os sige at jeg har 3 poster.. 
 og nu bruger vi lige dit eksempel
 X  Rund 
 X  Firkantet
   Trekantet
   Oval
   Tokantet
 X  Rund 
 X  Firkantet
   Trekantet
 X  Oval
   Tokantet
 X  Rund 
   Firkantet
   Trekantet
 X  Oval
 X  Tokantet
 hvis man så vælger rund og oval.. så vil alle 3 blive vist ikke sandt??
 for det er det der er meningen..
 men når man skal tilføje oplysningerne til databasen, og man skal kunne tilføje 1 - 5 af mulighederne :
 Rund 
 Firkantet
 Trekantet
 Oval
 Tokantet
 er det så ikke smartest at lave en kolonne for hver.. og derfor ændre alle koloner i søgningen til at lede i sin egen kolonne er du med??
 så kan man jo bare sige lige som du gjorde med aktiv.. if 1 så skal den tages med ellers...
 når man så tilføjer dataen tilføjer den vel bare et 1 tal til alle dem man markere i registreringen.. kan du følge mig??
 jeg begynder på det nu.. har du en bedre løsning så råb endelig højt
 og tak for hjælpen indtil nu... syntes faktisk det er en rigtig stor hjælp
 Hilsen
 Duno
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  Duno | 
 Dato :  22-02-05 20:40
 | 
 |  | 
 
                hey .. hvis de alle 3 bliver vist.. så bliver de vel kun vist en gang allesammen ikke???
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  smorch  | 
 Dato :  22-02-05 20:46
 | 
 |  | 
 
                Hvis du vil have at en post skal kunne have alle 5 egenskaber, så skal du lave 5 kolonner 0g igen 5 gange så mange sql opbygnings sætninger.
 Husk at alle checkboksene skal have unikke navne - ellers bliver det uoverskueligt.
 God fornøjelse.    Smorch
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  Duno | 
 Dato :  16-03-05 12:45
 | 
 |  | 
 
                Hey jeg har da aldrig fået sendt dig dine points, det undskylder jeg meget
 Er blevet så optaget af dette projekt at jeg helt har glemt alt omkring mig
 Jeg sender points med det samme!
 Et bonus spørgsmål
 jeg får følgende fejl
 Datatyperne stemmer ikke overens i kriterieudtrykket.
 jeg har lokaliseret hvor problemet ligger, det er det område som behandler tal (felterne hedder nu 3,6,9, osv)
 Jeg har sat databasefelterne til Tal, og koden ser ud som følgende
 if request.form("3")="" then 
 SQL=SQL
 else
 SQL=SQL & " AND 3 <> '""'"
 End if
 men jeg får stadig denne fejl
 Datatyperne stemmer ikke overens i kriterieudtrykket.
 Har du nogen logisk forklaring på det?
 Jeg ved ikke om man kan svare efter et spørgsmål er blevet afregnet, men kan du ikke det, er du meget velkommen til at skrive til mig på bhn22@hotmail.com
 Hilsen
 duno
                
                
                 |  |  | 
 | |  | Godkendelse af svar Fra :
  Duno | 
 Dato :  16-03-05 12:48
 | 
 |  | 
 
                Tak for svaret smorch.
 Til trods for dine store evner som anders and har du været en glimragende hjælp, mange tak for det!
 Flere af din slags tak    Duno
                        
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  smorch  | 
 Dato :  16-03-05 13:21
 | 
 |  | 
 
                Det er en pling fejl vil jeg tro - med pling mener jeg enkelt og dobbelt citationstegn - da du så har valgt at 3 er et talfelt, skal der slet ikke bruges plinger.
 Hvis man har en if .. then sætning med kun ét alternativ, kan man nøjes med at skrive een sætning, som illustreret herunder:
     if request.form("3")="" then        'Denne sætning skal du egentlig ikke bruge til noget
     SQL=SQL   'Heller ikke denne, da det jo bare giver status quo
     else     'Ud med denne også
 if request.form("3")<>"" then  SQL=SQL & " AND 3 <> '' "     ' DENNE SKAL BRUGES ISTEDEET FOR ALT DET ANDET
      End if    'Og denne er netop blevet overflødigjort
 Med venlig hilsen
 Anders And    |  |  | 
 | |  | Kommentar Fra :
  smorch  | 
 Dato :  16-03-05 13:21
 | 
 |  | 
 
                Det er en pling fejl vil jeg tro - med pling mener jeg enkelt og dobbelt citationstegn - da du så har valgt at 3 er et talfelt, skal der slet ikke bruges plinger.
 Hvis man har en if .. then sætning med kun ét alternativ, kan man nøjes med at skrive een sætning, som illustreret herunder:
     if request.form("3")="" then        'Denne sætning skal du egentlig ikke bruge til noget
     SQL=SQL   'Heller ikke denne, da det jo bare giver status quo
     else     'Ud med denne også
 if request.form("3")<>"" then  SQL=SQL & " AND 3 <> '' "     ' DENNE SKAL BRUGES ISTEDEET FOR ALT DET ANDET
      End if    'Og denne er netop blevet overflødigjort
 Med venlig hilsen
 Anders And    |  |  | 
 | |  | Kommentar Fra :
  smorch  | 
 Dato :  16-03-05 13:29
 | 
 |  | 
 
                if request.form("3")<>"" then  SQL=SQL & " AND 3 <> '' "    
 de sidste tre tegn er :
 enekeltpling enkeltpling (uden mellemrum) mellemrum dobbeltpling
 RAAAAAAAp
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  Duno | 
 Dato :  16-03-05 13:57
 | 
 |  | 
 
                Nej jeg får sku stadig samme fejl
 Datatyperne stemmer ikke overens i kriterieudtrykket.
 POST Data:
 3=3&Submit=Opret 
 og felterne i databasen er tal.
 Når vi er færdig med dette problem, vil jeg gerne henvise dig til endnu en guldgrube af et spørgsmål (det er også oprettet af mig)
http://www.kandu.dk/dk/spg/62758 Hilsen
 duno
                
                
                 |  |  | 
 | |  | Kommentar Fra :
  Duno | 
 Dato :  11-06-05 15:31
 | 
 |  | 
 
                Hey sender du ikke lige et svar, så jeg kan betale dig.
 Du ydede jo en fantastisk hjælp, den skal da belønnes
 Duno
                
                
                 |  |  | 
 | |  | Du har følgende muligheder |  | 
 |  | 
            
               
                    Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.
 Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
 |  |  | 
 |  |