Avatar billede hundevennen Nybegynder
18. januar 2006 - 09:09 Der er 12 kommentarer og
1 løsning

dynamisk sqlsætning

Jeg har en database med ca. 500 poster.
Et af felterne hedder obj og indeholder talene 1 - 13 fordelt ned i rækker i forskellig rækkefølge.Derudover er der 10 andre felter med forskelligt indhold(tekst).
Jeg vil gerne have at brugerne af databasen via en hjemmeside, kan spørge ind til databasen og selv opbygge sqlsætningen ved at taste tal ind i nogle formfelter evt vælge fra nogle lister og så trykke på en søgknap.

altså f.eks kunne sætningen komme til at se ud som: select *
fra databasen hvor obj indeholder 1 og 4 og 7 og 12.
umiddelbart víl det så betyde, at der skal være 4 lister at vælge fra - eller kan man gøre det smartere?
Avatar billede fennec Nybegynder
18. januar 2006 - 09:17 #1
Kan du give et par eksempler på en datarække i din tabel, for jeg er ikke helt med på hvad du mener med at "obj" indeholder tallene 1-13. Står der kun ET tal, eller er det en komma sepereret liste??

Og hvad mener du med at at "obj skal indeholde 1 og 4 og 7 og 12"? For mig lyder det så som om at obj indeholder en komma sepereret liste.
Avatar billede cpufan Juniormester
18. januar 2006 - 10:49 #2
du kan lave det med et tekstinput felt og en submitknap


og så siden der henter fra db:

sekvens = Cint(split(request.form("ditsøgefelt"))
maxsekvens = Ubound(sekvens)
sqltal = "where obj = "
for i = 0 to Ubound(sekvens)-1
sqltal = sqltal & sekvens(i) & "or obj = "
next
sqltal = sqltal & sekvens(maxsekvens)

sql = " Select * from database" & sqltal

hvis det er meningen at alle tal SKAL være der, skal OR ændres til AND
Avatar billede hundevennen Nybegynder
18. januar 2006 - 12:06 #3
jeg vender lige tilbage med et taleksempel
Avatar billede hundevennen Nybegynder
18. januar 2006 - 17:17 #4
dataeksempel:
id  obj      felt3        felt4      felt5  felt6
1    3    nansensgade    skole      Kbh    2200
2    5    østerbrogade    ambassade  kbh    2100
3    4    strøget        illum      kbh    1010
4    7    valby langgade  DR        valby  2500
5    12    nørregade      foto      kbh    2200


så vil jeg altså gerne kunne indtaste f.eks 5 7 og 12 i nogle tekstbokse eller vælge fra en liste og dermed skabe sqlsætningen som noget lignende

select * from tabel where obj = 5 7 og 12
Avatar billede fennec Nybegynder
19. januar 2006 - 08:35 #5
Så kan du gøre brug af en dropdown box og sql IN metoden:
<select name="objTal" multiple size="6">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  <option value="5">5</option>
  <option value="6">6</option>
</select>

sql = "select * from dinTabel where 1=1 "
if request.form("objTal") <> "" then
  sql = sql & " and obj IN ("& request.form("objTal") &")"
end if
set rs = conn.execute(sql)
Avatar billede fennec Nybegynder
19. januar 2006 - 08:37 #6
Ps. Du kunne også bare bruge en textbox hvor du skriver tallene komma sepereret:
<input type="text" name="objTal" value="1, 5, 3">
Avatar billede hundevennen Nybegynder
16. februar 2006 - 14:40 #7
fennec - vil det sige hvis jeg kan lave en sqlsætning der ligner noget a la
select * from tabel hvor objtal=1,3,5 and objtal2= 2,6,9 and osv osv?
Avatar billede fennec Nybegynder
16. februar 2006 - 14:43 #8
Ja næsten, men det skal se sådan ud:
select * from tabel hvor objtal in(1,3,5) and objtal2 in(2,6,9)
Avatar billede hundevennen Nybegynder
18. februar 2006 - 11:17 #9
fennec - det lyder jo godt - jeg skal have ihvertfald 3 textboxe hvor man så kan skrive noget kommaseparreret og det skal så sættes ind i en sqlsætning -
kunne man tænke sig at textboxene blev lavet som funktioner, så man kunne lave en sqlsætning med select * fra tabel where funk1 and and funk2 and funk3 <> ""
Avatar billede fennec Nybegynder
20. februar 2006 - 08:28 #10
Ikke helt med på, hvad du mener der, men i første omgang lyder det som et nej. Som du har skrevet det, er funkX funktioner i databasen, og de har ikke adgang til HTML information. Det er dog muligt at lave noget ala:
set rs = conn.execute("select * from enTabel where "& funk() &"")
Avatar billede hundevennen Nybegynder
21. februar 2006 - 14:47 #11
fennec - jeg prøver med noget kode for at vise hvad jeg mener - kommer senere
Avatar billede hundevennen Nybegynder
12. marts 2006 - 09:32 #12
jeg har kigget lidt på den måde man laver søgning på i bilbasen - http://www.bilbasen.dk/ og det er noget lignende jeg gerne vil kunne lave, altså hvor man markere i en kanp(radiobutton) og vælger noget fra nogle dropdownlister og så udfører søgningen???
Avatar billede fennec Nybegynder
13. marts 2006 - 08:23 #13
Så skal du have opbygget din sql sætningen ved hjælp af if-sætninger. På samme måde som i min post 19/01-2006 08:37:18:

sql = "select * from dinTabel where 1=1 "
if request.form("searchIN") = "1" then
  sql = sql & " and newOld = 1 "
else
  sql = sql & " and newOld = 2 "
end if
if request.form("kategori") <> "" then
  sql = sql & " and kategori = "& request.form("kategori") &" "
end if
if request.form("carBrand") <> "" then
  sql = sql & " and carBrand = "& request.form("carBrand") &" "
end if
if request.form("EnMultiSelect") <> "" then
  sql = sql & " and etEllerAndet in("& request.form("EnMultiSelect") &") "
end if
if request.form("etSøgeTekstFelt") <> "" then
  sql = sql & " and etEllerAndet like '%"& request.form("etSøgeTekstFelt") &"%' "
end if
...
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