Avatar billede knaldperlen Nybegynder
19. september 2001 - 17:36 Der er 21 kommentarer og
1 løsning

Dumme tabler og if-sætninger! Hvordan skal dette laves?

Jeg har følgende kode:

  Dim Conn
  Set Conn = CreateObject(\"ADODB.Connection\")
  Conn.Provider = \"Microsoft.Jet.OLEDB.4.0; ; Data Source=\" & Server.MapPath(\"db/users.mdb\")
  Conn.Open



Dim Record,strSQL

Set Record = Server.CreateObject(\"ADODB.RecordSet\")
              strSQL = \"Select * From users\"
            Record.Open strSQL, Conn

SQL = \"Select * From wars\"

If Record(\"rank\")=\"Member/Wararranger\" then Set Record = Conn.Execute(SQL)
   
if Record(\"set\")=\"1\" then Response.Write \"hej\"
       
elseif Record(\"set\")=\"0\" then Response.Write \"nej\"
   
end if
   
end if

Record.Close
Conn.close
Set Conn = Nothing   


Jeg forsøge først at opfylde den betingelse at rækken \"rank\" i tablen \"users\" skal være lig med Mamber/wararranger. For dem som opfylder denne betingelse, skal den så se på værdien i rækken \"set\" i tablen \"wars\". Eftersom den er enten 1 eller 0 skal den skrive hej eller nej

Hvad gør jeg forkert? for det virker ikke?
Avatar billede tmceu Praktikant
19. september 2001 - 19:33 #1
Hej igen :-)

Først og fremmest tror jeg ikke at jeg helt har forstået dit spørgsmål. Men jeg kan godt forklare dig hvad det er du gør lige nu...

1. Du vælger alle felter (kolonner), i alle poster (rækker) fra Users
2. Du laver en if på feltet \"rank\", men kun på den første post (række)
3. Du kører kun dit 2. SQL statement hvis \"rank\" på første post (række) er lig \"Member/Wararranger\".
4. Du kører derefter en if/elseif på feltet (kolonnen) \"set\", som altså kun har indhold fra tabellen \"Wars\", hvis \"rank\" på første post (række) var \"Member/Wararranger\"

Hvis du læser ovenstående, kan du måske selv se fejlen, for jeg tror ikke det er den måde du ønsker det skal køre. Hvis ikke, prøv at uddybe dit spørgsmål
Avatar billede knaldperlen Nybegynder
19. september 2001 - 19:41 #2
hehe hej igen =) Så er der probs igen!

okay....Efter hva du har skrevet kan jeg godt se der er en fejl....

2. Du laver en if på feltet \"rank\", men kun på den første post (række)

Den her blir kørt lige nåh man logger ind...Den skal så finde den post i feltet \"rank\" og hvis det er ham der har Member/Wararranger i \"rank\" skal den gå videre.....

Så det gik vidst lige op for mig at der mangler noget i dokumentet, som søger i ham som logger ind\'s post i rank
Avatar billede knaldperlen Nybegynder
19. september 2001 - 19:45 #3
Hmmm......jeg tænkte på om du har icq eller noget....ville d ik være nemmere at snakke over det? =)
Avatar billede knaldperlen Nybegynder
19. september 2001 - 19:52 #4
Har gjort sådan her nu...Hvordan ser det ud?

  Dim Conn
  Set Conn = CreateObject(\"ADODB.Connection\")
  Conn.Provider = \"Microsoft.Jet.OLEDB.4.0; ; Data Source=\" & Server.MapPath(\"db/users.mdb\")
  Conn.Open



Dim Record,strSQL

Set Record = Server.CreateObject(\"ADODB.RecordSet\")
              strSQL = \"Select * From users Where username = Session(\"username-session\")\"
            Record.Open strSQL, Conn

SQL = \"Select * From wars\"

If Record(\"rank\") = \"Member/Wararranger\" then Set Record = Conn.Execute(SQL)
   
if Record(\"[set]\") = \"1\" then Response.Write \"hej\"
       
else Response.Write \"nej\"
   
end if
   


Record.Close
Conn.close
Avatar billede knaldperlen Nybegynder
19. september 2001 - 19:54 #5
Efter jeg har ændret de 2 \" i Session(\"username-session\") til 2 \' så kommer den med følgende fejl?

Microsoft VBScript compilation error \'800a03ea\'

Syntax error

/bruger.asp, line 54

else Response.Write \"nej\"
^
Avatar billede eagleeye Praktikant
19. september 2001 - 20:04 #6
din første SQL skal ændre til:

strSQL = \"Select * From users Where username =\'\"& Session(\"username-session\") & \"\';\"
Avatar billede tmceu Praktikant
19. september 2001 - 20:05 #7
I første omgang skal du ændre til strSQL = \"Select * From users Where username = \'\" & Session(\"username-session\") & \"\'\"

så tænker jeg lige over resten.

Jeg har desværre ikke ICQ, jeg bruger i stedet AOL Instant Messenger, da alle mine venner/bekendte bruger den.
Avatar billede knaldperlen Nybegynder
19. september 2001 - 20:06 #8
Hmm...hvad med mIRC tmceu?
Avatar billede tmceu Praktikant
19. september 2001 - 20:08 #9
Du skal også rette dette:

if Record(\"[set]\") = \"1\" then Response.Write \"hej\"
       
else Response.Write \"nej\"
   
end if

til:

if Record(\"set\") = \"1\" then
Response.Write \"hej\"     
else
Response.Write \"nej\"
end if

Når du skriver if og then på samme linie, kan du ikke lave en else nedenunder

P.S. Efter i går er du blevet lidt overforsigtig med reserverede ord; set skal kun bære [set] når den bruges i SQL statements. I ovenstående eksempel refererer du til feltet set i et recirdset inde i ASP og feltet har faktisk navnet set, ikke [set] :-)
Avatar billede knaldperlen Nybegynder
19. september 2001 - 20:08 #10
Den ser således ud nu:

Dim Conn
  Set Conn = CreateObject(\"ADODB.Connection\")
  Conn.Provider = \"Microsoft.Jet.OLEDB.4.0; ; Data Source=\" & Server.MapPath(\"db/users.mdb\")
  Conn.Open



Dim Record,strSQL

Set Record = Server.CreateObject(\"ADODB.RecordSet\")
              strSQL = \"Select * From users Where username = \'\" & Session(\"username-session\") & \"\'\"
            Record.Open strSQL, Conn

SQL = \"Select * From wars\"

If Record(\"rank\") = \"Member/Wararranger\" then Set Record = Conn.Execute(SQL)
   
if Record(\"[set]\") = \"1\" then Response.Write \"hej\"
       
end if
end if
   


Record.Close
Conn.close
Set Conn = Nothing

og kommer stadig med den dumme fejl:

Microsoft VBScript compilation error \'800a0400\'

Expected statement

/bruger.asp, line 54

end if
^
Avatar billede tmceu Praktikant
19. september 2001 - 20:10 #11
mIRC på min hjemme maskine ja, men lige nu sidder jeg på et hotelværelse i Kbh med min bærbare og der må jeg ikke installere den slags \"snavs\". Hvad med Yahoo chat, vi kunne oprette en privat chat ?
Avatar billede tmceu Praktikant
19. september 2001 - 20:11 #12
De 2 end if i nedenstående er ulovlige, fordi som jeg skrev lige før, du har if og then på samme linie

If Record(\"rank\") = \"Member/Wararranger\" then Set Record = Conn.Execute(SQL)
   
if Record(\"[set]\") = \"1\" then Response.Write \"hej\"
       
end if
end if
Avatar billede knaldperlen Nybegynder
19. september 2001 - 20:14 #13
ok...har oprettet mig på yahoo.dk nu...hedder knaldperlendk
Avatar billede tmceu Praktikant
19. september 2001 - 20:19 #14
øjeblik...
Avatar billede knaldperlen Nybegynder
19. september 2001 - 20:20 #15
tmceu har lavet et privrum på yahoo som hedder eksperten
Avatar billede knaldperlen Nybegynder
19. september 2001 - 20:22 #16
Har lavet den nu så den ser således ud:

  Dim Conn
  Set Conn = CreateObject(\"ADODB.Connection\")
  Conn.Provider = \"Microsoft.Jet.OLEDB.4.0; ; Data Source=\" & Server.MapPath(\"db/users.mdb\")
  Conn.Open



Dim Record,strSQL,SQL

Set Record = Server.CreateObject(\"ADODB.RecordSet\")
              strSQL = \"Select * From users Where username = \'\" & Session(\"username-session\") & \"\'\"
            Record.Open strSQL, Conn

SQL = \"Select * From wars\"

If Record(\"rank\") = \"Member/Wararranger\" then
Set Record = Conn.Execute(SQL)
   
if Record(\"[set]\") = \"1\" then
Response.Write \"hej\"
       
end if
end if

   


Record.Close
Conn.close
Set Conn = Nothing   

og fejlen er:
ADODB.Recordset error \'800a0cc1\'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/bruger.asp, line 53
Avatar billede knaldperlen Nybegynder
19. september 2001 - 20:24 #17
eller også hedder d eksperten:1
Avatar billede tmceu Praktikant
19. september 2001 - 20:25 #18
Prøv at indsætte flg. lige under Record.Open strSQL, Conn

if Record.EOF then
response.write \"Ingen data i Record\"
response.end
end if

Du bør altid kontrollere for om der faktisk er data i dit recordset, ellers vil du få den fejl. Et tomt recordset har både .BOF og .EOF = True, men det er normalt nok at kontrollere for .EOF (End Of File)
Avatar billede knaldperlen Nybegynder
19. september 2001 - 20:28 #19
Jeg har fået det til at virke =) Den skal se sådan her ud!

  Dim Conn
  Set Conn = CreateObject(\"ADODB.Connection\")
  Conn.Provider = \"Microsoft.Jet.OLEDB.4.0; ; Data Source=\" & Server.MapPath(\"db/users.mdb\")
  Conn.Open



Dim Record,strSQL,SQL

Set Record = Server.CreateObject(\"ADODB.RecordSet\")
              strSQL = \"Select * From users Where username = \'\" & Session(\"username-session\") & \"\'\"
            Record.Open strSQL, Conn

SQL = \"Select * From wars\"

If Record(\"rank\") = \"Member/Wararranger\" then
Set Record = Conn.Execute(SQL)
   
if Record(\"set\") = \"1\" then
Response.Write \"hej\"
       
end if
end if

   


Record.Close
Conn.close
Set Conn = Nothing   

%>
Avatar billede knaldperlen Nybegynder
19. september 2001 - 20:30 #20
Men jeg r stadig frisk på en chatter tmceu =)
Avatar billede tmceu Praktikant
19. september 2001 - 20:44 #21
Tillykke med det og tak for point.

Jeg har lidt problemer med min Yahoo chat (applet\'en), kigger efter dig hvis jeg får det til at virke.
Avatar billede knaldperlen Nybegynder
19. september 2001 - 20:49 #22
Bare gå på den her chat...her kommer aldrig nogen..jeg r allerede derinde: http://www.cht.dk/ctchat/
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