/ Forside/ Teknologi / Udvikling / ASP / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Søg ud fra checkbokse
Fra : Duno
Vist : 491 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 : smorch


Dato : 22-02-05 13:49

Og AA er altså ANDERS AND & Co !!!

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 : smorch


Dato : 22-02-05 15:50

Og du er sikker på, at din server kan køre ASP ?

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???

Accepteret svar
Fra : smorch

Modtaget 100 point
Dato : 22-02-05 16:52

Nej kun de felter du selv beskrev øverst i spørgsmålet og AKTIV

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.
Søg
Reklame
Statistik
Spørgsmål : 177414
Tips : 31962
Nyheder : 719565
Indlæg : 6407823
Brugere : 218875

Månedens bedste
Årets bedste
Sidste års bedste