Avatar billede mekaniker Nybegynder
26. august 2003 - 17:28 Der er 3 kommentarer og
2 løsninger

opbygning af array med SQL - do while

Jeg har en række produkter som har en, beskrivelse et id-nr og en databladstype, databladstypen er er heltal.

Jeg skal have opbygget et x antal array's alt efter hvormange databladstyper der forfindes.

Jeg har prøvet med følgende, men den laver bare formange array's

SQLr = "SELECT id, varebeskrivelse, databladstype FROM produkter WHERE varegruppe_id IN (SELECT id FROM varegrupper WHERE vis_user='yes') AND visuser='yes' AND databladstype <> NULL"
set rsg = myConn.execute(SQLr)
arrVareGr3 = rsg.GetRows()
rsg.Close
Set rsg = Nothing

SQL = "SELECT id, varebeskrivelse, databladstype FROM produkter WHERE varegruppe_id IN (SELECT id FROM varegrupper WHERE vis_user='yes') AND visuser='yes' AND frigivelsesdato <= Date() AND tilbudsdato <= Date() AND databladstype <> NULL"
set rs = myConn.execute(SQL)
arrUnderGr3 = rs.GetRows()
rs.Close
Set rs = Nothing


        For i = 0 to Ubound(arrVareGr3,2)
        print_VareGr3 = print_VareGr3 & "<option value=""" & arrVareGr3(0,i)  &""">" & arrVareGr3(1,i) & "</option>" & VbCrLf
        print_js3 = print_js3 & "VareGr3[" & arrVareGr3(2,i) & "] = new Array ("
        count = 0
        For j = 0 to Ubound(arrUnderGr3,2)
            If arrUnderGr3(2,j) = arrVareGr3(2,i) Then
                If count = 0 Then
                    print_js3 = print_js3 & "'0#Vælg undergruppe','" & arrUnderGr3(0,j) & "#" & arrUnderGr3(1,j) & "'"
                Else
                    print_js3 = print_js3 & ",'" & arrUnderGr3(0,j) & "#" & arrUnderGr3(1,j) & "'"
                End If
                count = count + 1
            End If
        Next
        print_js3 = print_js3 & ")" & VbCrLf
    Next

----------------------------------------------
array'et skulle gerne se sådan ud:(da jeg senere skal bruge det i et javascript)

VareGr3[databladstype] = new Array ('ID#VAREBESKRIVELSE')

eller med værdier

(databladstype = 1)

VareGr3[1] = new Array ('0#Vælg undergruppe','1#skruer','2#møtrikker')


(databladstype = 2)

VareGr3[2] = new Array ('0#Vælg undergruppe','23#Hammer','45#File')

Problemet er at der bliver lavet et array for hver produkt, men det er kun den længde som det skal være.

eks.
Her hvor vi har 2 produkter kommer det til at se sådan ud:
VareGr3[2] = new Array ('0#Vælg undergruppe','23#Hammer','45#File')VareGr3[2] = new Array ('0#Vælg undergruppe','23#Hammer','45#File')
--------------------------------------------
og det kan mit javascript ikke fatte.

Håber i måske kan hjælpe, skiv endelig hvis der skal mere forklaring til.
Avatar billede eagleeye Praktikant
26. august 2003 - 19:37 #1
Prøv at tilføje en DISTINCT på din første SQL, så skulle den kun vælge en vare en gang.


SQLr = "SELECT DISTINCT id, varebeskrivelse, databladstype FROM produkter WHERE varegruppe_id IN (SELECT id FROM varegrupper WHERE vis_user='yes') AND visuser='yes' AND databladstype <> NULL"
set rsg = myConn.execute(SQLr)


Hvordan kan det være du har to SQL sætninger?? Kan en ikke gøre det..
Kan du give et eks på din database hvordan eksvis dette ligger i databasen:
VareGr3[1] = new Array ('0#Vælg undergruppe','1#skruer','2#møtrikker')
Avatar billede mekaniker Nybegynder
27. august 2003 - 00:22 #2
>> eagleeye

Jeg fik sgu' klaret den sådan her:

SQLr = "SELECT distinct databladstype FROM produkter WHERE varegruppe_id IN (SELECT id FROM varegrupper WHERE vis_user='yes') AND visuser='yes' AND frigivelsesdato <= Date() AND tilbudsdato <= Date() AND databladstype <> NULL"
set rsg = myConn.execute(SQLr)
if not rsg.eof then

SQL = "SELECT id, varebeskrivelse, databladstype, billedfil FROM produkter WHERE varegruppe_id IN (SELECT id FROM varegrupper WHERE vis_user='yes') AND visuser='yes' AND frigivelsesdato <= Date() AND tilbudsdato <= Date() AND databladstype <> NULL"
set rs = myConn.execute(SQL)
arrUnderGr3 = rs.GetRows()
rs.Close
Set rs = Nothing


        do while not rsg.eof
        data = rsg("databladstype")
       
        print_js3 = print_js3 & "VareGr3[" & rsg("databladstype") & "] = new Array ("
        count = 0
        For j = 0 to Ubound(arrUnderGr3,2)
           
            if len("" & arrUnderGr3(3,j)) = 0 then
                billede = "blank1.gif"
            else
                billede = arrUnderGr3(3,j)
            end if
           
            If arrUnderGr3(2,j) = data Then
           
            print_VareGr3 = print_VareGr3 & "<option value="""&rsg("databladstype")&""" id="""&billede&""" label="""&arrUnderGr3(0,j)&""">" & arrUnderGr3(1,j) & "</option>" & VbCrLf
                If count = 0 Then
                    print_js3 = print_js3 & "'0#Vælg undergruppe#blank1.gif','" & arrUnderGr3(0,j) & "#" & arrUnderGr3(1,j) & "#" & billede &"'"
                Else
                    print_js3 = print_js3 & ",'" & arrUnderGr3(0,j) & "#" & arrUnderGr3(1,j) & "#" & billede &"'"
                End If
                count = count + 1
            End If
        Next
        print_js3 = print_js3 & ")" & VbCrLf
       
        rsg.movenext
        loop
end if

Tak for hjælpen, det hjælper altid lige at få et pa ekstra øjne på. Det var det med distinct der gjorde det hele.

//Mekaniker
Avatar billede mekaniker Nybegynder
27. august 2003 - 00:23 #3
Smid et svar hvis du vil have lidt point, du får nok ikke dem alle da jeg selv klarede den, med et lille hint fra dig...!!
Avatar billede eagleeye Praktikant
27. august 2003 - 00:23 #4
Ok ;) 
Det gør da gerne.
Avatar billede eagleeye Praktikant
27. august 2003 - 00:24 #5
Det er også helt i orden :)
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