Avatar billede clausn Nybegynder
06. april 2002 - 15:57 Der er 8 kommentarer og
1 løsning

Dynamisk SQL sætning

Hej,

Jeg er ved at lave et projekt registerings system, og skal til dette lave et statistik modul.

Når jeg vil lave statistikken, skal man vælge nogle ting:

Bestemt måned / alle måneder
Bestemt projekt / alle projekter
Bestemt afdeling i firmaet / alle afdelinger i firmaet (jeg har i en anden tabel puttet nogle folk i nogle grupper)
Om der skal kommentarer med  eller ej

Mit spørgsmål er nu:
Hvordan skal jeg lave min sql sætning så den bliver dynamisk? Nogle kan vælge bestemt dato, andre kan lade være, men derimod vælge en bestemt gruppe, og en trejde kan vælge alt sammen...

Så vidt jeg kan se skal der tages højde for omkring 10+ forskellige sql sætninger, og dette ville jeg godt lave bare lidt smart :)

Hilsen
Claus
Avatar billede a1a1 Novice
06. april 2002 - 16:03 #1
du kan evt gøre det på denne måde
vistype = Request.QueryString("vistype")

strsql = "select * from tabel"
select case vistype
case 1
meresql = " where projektid = " & dinandenvariabel
case 2
meresql = " where afdelingid = " & dinandenvariable
case 3
meresql = " where dato = " & diandenvariable
case else
meresql = ""
end select

strsql = strsql & meresql

og så selvfølgelig nogle forskellige links
side.asp?visttype=1
side.asp?visttype=2
side.asp?visttype=3

:)
Avatar billede a1a1 Novice
06. april 2002 - 16:04 #2
side.asp?visttype=1&dinandenvariabel=tal
side.asp?visttype=2&dinandenvariabel=andettal
side.asp?visttype=3&dinandenvariabel=2002-02-02
Avatar billede clausn Nybegynder
06. april 2002 - 16:08 #3
Hej a1:
så kan jeg godt regne ud at jeg får MANGE cases...
1: ligegyldig dato
2: ligegyldig dato + bestemt projekt
3: ligegyldig dato + bestemt gruppe
4: ligegyldig dato + bestemt gruppe + bestemt projekt
5: ligegyldig dato + bestemt gruppe + bestemt projekt + kommetarer
6: ligegyldig dato + bestemt projekt + kommetarer

Dette er bare 6 forskellige cases... Der vil komme mange flere, og jeg ville godt finde en måde hvor man kunne bygge det hele lidt mere smart op. Hvis jeg nu fx fandt på at tilføje en ekstra ting til at den skulle udskrive i statikkerne, ville jeg med det sammme få 15+ flere cases...
Avatar billede online-help.dk Nybegynder
06. april 2002 - 16:16 #4
og.. hvad er problemet i det??? den samrteste måde den a1 kommer med...
Avatar billede a1a1 Novice
06. april 2002 - 16:20 #5
du kan også op bygge en array af "where" kriterier..
noget lig:
Dim arrwhere, arrcount
arrcount = 0

if etellerandet then
redim preserve arrwhere(arrcount)
arrwhere(arrcount) = " datofelt = '" & datovariabel & "' "
arrcount = arrcount + 1
end if

if etellerandet2 then
redim preserve arrwhere(arrcount)
arrwhere(arrcount) = " datofelt = '" & datovariabel & "' "
arrcount = arrcount + 1
end if

if etellerandet2 then
redim preserve arrwhere(arrcount)
arrwhere(arrcount) = " datofelt = '" & datovariabel & "' "
arrcount = arrcount + 1
end if

if arrcount > 0 then
for i = 0 To ubound(arrwhere)
meresql = meresql & arrwhere(i) & " AND "
next
meresql = " WHERE " & Left(meresql, (len(meresql)-4) ' for at fjerne sidste AND
end If
strsql = " select * from tabelnavn & meresql

somethings like that...:)
Avatar billede a1a1 Novice
06. april 2002 - 16:21 #6
f etellerandet2 then
redim preserve arrwhere(arrcount)
arrwhere(arrcount) = " datofelt = '" & datovariabel & "' "
arrcount = arrcount + 1
end if

arrwhere(arrcount) = " datofelt = '" & datovariabel & "' "
(kan (skal) jo selvfølgelig være forskellige)
Avatar billede a1a1 Novice
06. april 2002 - 16:22 #7
-->  online-help.dk
min sidste er smartest men er måske ikke så simpel som den første.....
Avatar billede clausn Nybegynder
06. april 2002 - 16:24 #8
Det var lidt det sidste jeg var ude efter... Jeg kan godt se at jeg bliver nødt til at lave nogle cases alligevel...

Tak og god weekend!
Avatar billede a1a1 Novice
06. april 2002 - 16:26 #9
selv tak, og i ligemåde...:)
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