Avatar billede chrisrj Forsker
03. oktober 2002 - 12:10 Der er 10 kommentarer og
1 løsning

Sql select problem!! HASTER

Jeg skal lave en select der vælger de modeller der hører til mærkerne.

Det lyder lidt kryptiskt, det ved jeg godt. :)

Men her er min kode:

<%
    sqltal1 = "select count(maerkeid) as antal from maerke"
    Set rstal = Conn.Execute(SQLtal1)
    antal = rstal("antal")
    for i=0 to antal
   
        sqltal2 = "select count(modelid) as antal from maerke"
        Set rstal2 = Conn.Execute(SQLtal2)
        antal2 = rstal2("antal")
       
        sql = "select * from maerke,model where model.maerkeid=" & i & " order by model.modelid"
        Set rs = Conn.Execute(SQL)
        for t=0 to antal2
            do while not rs.eof
            response.write "afdelinger["& i &"]["& t &"] = '" & rs("model") &"';" & vbCrLf
            rs.movenext
            t = t + 1
            loop
        next
        i = i + 1
    next
%>

Problemet er "sqltal2".

Hvordan skal den ud??
Avatar billede mnoer Nybegynder
03. oktober 2002 - 12:41 #1
ved ikke om det hjælper, men har du prøvet at kalde "antal" noget forskelligt? f.eks. antal1 og antal2!
Avatar billede chrisrj Forsker
03. oktober 2002 - 12:49 #2
Det hjælper desværre ikke....

Har du andre ideer???
Avatar billede chrisrj Forsker
03. oktober 2002 - 12:57 #3
Jeg er villig til at sætte 200 points på højkant for en løsning inden kl. 17!!
Avatar billede chrisrj Forsker
03. oktober 2002 - 13:02 #4
Jeg er dog kommet lidt videre.

Jeg har rettet
sqltal2 = "select count(modelid) as antal from maerke"

til
sqltal2 = "select count(modelid) as antal2 from model where maerkeid=" & i

der kommer ingen fejl, men den udskriver det forkert.

Sådan skulle det se ud:

afdelinger[0][0] = "Vælg Modeller";
afdelinger[1][0] = 'Alle modeller';
afdelinger[1][1] = '145';
afdelinger[1][2] = '146';
afdelinger[1][3] = '147';
afdelinger[2][0] = 'Alle modeller';
afdelinger[2][1] = '100';
afdelinger[2][2] = '80';
afdelinger[2][3] = 'A2';
afdelinger[2][4] = 'A3';
afdelinger[2][5] = 'A4';
afdelinger[3][0] = 'Alle modeller';
... ovs ovs...


men istedet kommer det ud sådan:

afdelinger[0][0] = "Vælg Modeller";
afdelinger[2][0] = 'Alle modeller';
afdelinger[2][1] = 'Alle modeller';
afdelinger[2][2] = 'Alle modeller';
afdelinger[2][3] = 'Alle modeller';
afdelinger[2][4] = 'Alle modeller';
afdelinger[2][5] = '145';
.... ovs ovs...

Hvad er der galt??
Avatar billede fessor Nybegynder
03. oktober 2002 - 13:17 #5
Hej!

prøv det her

tmpmaerke=0
    tmpmodel=0
    SQL ="select DISTINCT maerkeid from maerke order by maerke"
    Set RS=Conn.execute ( SQL )
   
    do while not RS.eof
        tmpmaerke=tmpmaerke+1
       
        SQL2="select * from model where maerkeid=" & Clng(RS("maerkeid)) & " order by modelid"
        Set RS2=Conn.execute ( SQL2 )
       
        do while not RS2.eof
            tmpmodel=tmpmodel+1
            response.write "afdelinger["& tmpmaerke &"]["& tmpmodelid &"] = '" & RS2("model") &"';" & vbCrLf
            RS2.movenext
        loop
        tmpmodel=0
   
   
    RS.movenext
    loop


..fessor..
Avatar billede chrisrj Forsker
03. oktober 2002 - 13:21 #6
Så får jeg denne fejl :

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC Microsoft Access-driver] ORDER BY-delsætningen (maerke) er i konflikt med DISTINCT.
/bilside/www/sog_test.asp, line 6

linie 6:
Set RS=Conn.execute ( SQL )
Avatar billede chrisrj Forsker
03. oktober 2002 - 13:23 #7
hvilket nok snarer er denne :
SQL ="select DISTINCT maerkeid from maerke order by maerke"
Avatar billede fessor Nybegynder
03. oktober 2002 - 13:27 #8
Hej!

ved ikke om access har problemmer med DISTINCT og ORDER BY sætning .. fungere fint på min sql server

DOG lavede jeg en lille fejl deroppe

Så her er lige en ny version

tmpmaerke=0
    tmpmodel=0
    SQL ="select DISTINCT maerkeid from maerke order by maerke"
    Set RS=Conn.execute ( SQL )
   
    do while not RS.eof
        tmpmaerke=tmpmaerke+1
       
        SQL2="select * from model where maerkeid=" & Clng(RS("maerkeid")) & " order by modelid"
        Set RS2=Conn.execute ( SQL2 )
       
        do while not RS2.eof
            tmpmodel=tmpmodel+1
            response.write "afdelinger["& tmpmaerke &"]["& tmpmodel &"] = '" & RS2("model") &"';" & vbCrLf
            RS2.movenext
        loop
        tmpmodel=0
   
   
    RS.movenext
    loop
Avatar billede chrisrj Forsker
03. oktober 2002 - 13:29 #9
du mener en " eller mangel på samme? Ja, det har jeg rettet...
Avatar billede chrisrj Forsker
03. oktober 2002 - 13:42 #10
Nu ser min kode sådan ud:

sqltal1 = "select count(maerkeid) as antal from maerke"
    Set rstal = Conn.Execute(SQLtal1)
    antal = rstal("antal")
    for i=1 to antal
   
        sqltal2 = "select count(modelid) as antal2 from model where maerkeid=" & i
        Set rstal2 = Conn.Execute(SQLtal2)
        antal2 = rstal2("antal2")
       
        sql = "select * from maerke,model where model.maerkeid=" & i
        Set rs = Conn.Execute(SQL)
       
        for t=0 to antal2
            if not rs.eof then
                response.write "afdelinger["& i &"]["& t &"] = '" & rs("model") &"';" & vbCrLf
                rs.movenext
            end if
            'rs.movefirst
        next
        t = 0
    next


Det kommer dog stadig ikke helt rigtigt ud:

afdelinger[0][0] = "Vælg Modeller";
afdelinger[1][0] = 'Alle modeller';
afdelinger[1][1] = 'Alle modeller';
afdelinger[2][0] = 'Alle modeller';
afdelinger[2][1] = 'Alle modeller';
afdelinger[2][2] = 'Alle modeller';
afdelinger[2][3] = 'Alle modeller';
afdelinger[2][4] = 'Alle modeller';
afdelinger[2][5] = '145';
afdelinger[2][6] = '145';
afdelinger[2][7] = '145';
afdelinger[2][8] = '145';
Avatar billede chrisrj Forsker
03. oktober 2002 - 13:53 #11
Nu virker det!!!!!!!!!!!!!!!

her er vidunderet!!!! :D


<%
    sqltal1 = "select count(maerkeid) as antal from maerke"
    Set rstal = Conn.Execute(SQLtal1)
    antal = rstal("antal")
    for i=1 to antal
   
        sqltal2 = "select count(modelid) as antal2 from model where maerkeid=" & i
        Set rstal2 = Conn.Execute(SQLtal2)
        antal2 = rstal2("antal2")
       
        sql = "select model from model where maerkeid=" & i
        Set rs = Conn.Execute(SQL)
       
        for t=0 to antal2
            if not rs.eof then
                response.write "afdelinger["& i &"]["& t &"] = '" & rs("model") &"';" & vbCrLf
                rs.movenext
            end if
            'rs.movefirst
        next
        rs.close
        't = 0
    next
%>
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