06. april 2002 - 15:57Der 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 :)
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
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...
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
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.