04. juni 2002 - 22:19Der er
21 kommentarer og 2 løsninger
mærkeligt......
hej eksperter... jeg er i gang med et stemme script, men har et problem. her er noget af koden: Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)};" DSN = DSN & "DBQ=" & Server.MapPath ("..\databaser\bruger.mdb") Conn.Open DSN strSQL = "Select * from data where brugernavn = '" & session("brugernavn") & "'" set rs = Conn.ExeCute(strSQL)
if rs("stem") = "" Then strHar = "nej" strFelt = strDette end if if instr (strStem,",") > 0 Then strStemt = rs("stem") strEt = Split(strStemt,",") For t = LBound(strEt) to UBound(strEt) if strEt(t) = strDette Then strHar = "ja" strFelt = rs("stem") & "," & strDette else end if next end if if instr (strStem,",") = 0 Then strStem2 = rs("stem") if strStem2 = strDette Then strHar = "ja" strFelt = rs("stem") & "," & strDette else end if end if strBid = rs("id") if strHar = "ja" Then response.write "du har stemt..." else response.write "her " & strFelt sql = "Update data set " sql = sql & "stem='" & strFelt & "' " sql = sql & "Where id=" & strBid & "" response.write sql Set rs = Conn.Execute(sql)
når jeg udskriver sql kommer dette plus denne fejl: Update data set stem='' Where id=36 Microsoft OLE DB Provider for ODBC Drivers fejl '80004005'
[Microsoft][ODBC Microsoft Access-driver] Feltet "data.stem" kan ikke indeholde en streng af længden nul.
/on/t_forum/stem.asp, line 49
altså der er ikke noget i variblen strFelt... hvorfor..?? i databasen tror der nu "asp_5" iden er så: hvis strDette er "asp_5" skal den tilføje det til strFelt og hvis ikke gøre ingenting... forstår i?? 100 points...
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Dim Voted Voted = Request.Cookies("Stemt")("Status") If Voted < NOW()+1 then Response.Write "Du har stemt" Else Response.Write "Du har ikke stemt" .... End If
her er hele scriptet: <% ' check om bruger har stemt.. strDette = request.Querystring("data") strTor = Split(strDette,"_") strKat = strTor(0) strid = strTor(1) Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)};" DSN = DSN & "DBQ=" & Server.MapPath ("..\databaser\bruger.mdb") Conn.Open DSN strSQL = "Select * from data where brugernavn = '" & session("brugernavn") & "'" set rs = Conn.ExeCute(strSQL) strStemt = rs("stem") if rs("stem") = "" Then strHar = "nej" strFelt = strDette end if if instr (strStemt,",") > 0 Then strEt = Split(strStemt,",") For t = LBound(strEt) to UBound(strEt) if strEt(t) = strDette Then strHar = "ja" strFelt = rs("stem") & "," & strDette else end if next end if if instr (strStemt,",") = 0 Then strStem2 = rs("stem") if strStem2 = strDette Then strHar = "ja" strFelt = rs("stem") & "," & strDette else end if end if 'hvis strHar = nej fortæsset dette
strBid = rs("id") if strHar = "ja" Then response.write "du har stemt..." else response.write strFelt sql = "Update data set " sql = sql & "stem='" & strFelt & "' " sql = sql & "Where id=" & strBid & "" response.write sql Set rs = Conn.Execute(sql) Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)};" DSN = DSN & "DBQ=" & Server.MapPath ("db.mdb") Conn.Open DSN strSQL = "Select * from " & strKat & " where id=" & strId set rs = Conn.ExeCute(strSQL) if rs.EOF Then resonse.write "kunne ikke finde, det toruails du stemte på.... kontakt venligt admin.. under send en email til admin" else strHits = rs("hits") + request.form("points")
Prøv at køre denne kode midlertidig. Gem en kopi af din nuværende kode og indsæt denne i filen. Kopier så alt hvad der skrives til skærmen herind, eller smid et link til filen.
Jeg har smidt nogle response.write ind, for at se værdierne ned gennem scriptet.
<% ' check om bruger har stemt.. strDette = request.Querystring("data") strTor = Split(strDette,"_") strKat = strTor(0) strid = strTor(1)
strSQL = "Select * from data where brugernavn = '" & session("brugernavn") & "'" set rs = Conn.ExeCute(strSQL)
strStemt = rs("stem")
response.write "strStemt: " & strStemt & "<BR>"
if rs("stem") = "" Then strHar = "nej" strFelt = strDette end if
response.write "strFelt: " & strFelt & "<BR>"
if instr (strStemt,",") > 0 Then strEt = Split(strStemt,",") For t = LBound(strEt) to UBound(strEt) if strEt(t) = strDette Then strHar = "ja" strFelt = rs("stem") & "," & strDette else end if
response.write "strFelt(2): " & strFelt & "<BR>"
next end if
if instr (strStemt,",") = 0 Then strStem2 = rs("stem") if strStem2 = strDette Then strHar = "ja" strFelt = rs("stem") & "," & strDette else end if
response.write "strFelt(3): " & strFelt & "<BR>"
end if 'hvis strHar = nej fortæsset dette
strBid = rs("id") if strHar = "ja" Then response.write "du har stemt..." else
response.write "strFelt(4): " & strFelt & "<BR>"
sql = "Update data set " sql = sql & "stem='" & strFelt & "' " sql = sql & "Where id=" & strBid & "" response.write sql Set rs = Conn.Execute(sql) Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)};" DSN = DSN & "DBQ=" & Server.MapPath ("db.mdb") Conn.Open DSN strSQL = "Select * from " & strKat & " where id=" & strId set rs = Conn.ExeCute(strSQL) if rs.EOF Then resonse.write "kunne ikke finde, det toruails du stemte på.... kontakt venligt admin.. under send en email til admin" else strHits = rs("hits") + request.form("points")
undskyld min fejl: strStemt: asp_5 strFelt: strFelt(3): strFelt(4): Update data set stem='' Where id=36 Microsoft OLE DB Provider for ODBC Drivers fejl '80004005'
[Microsoft][ODBC Microsoft Access-driver] Feltet "data.stem" kan ikke indeholde en streng af længden nul.
if instr (strStemt,",") = 0 Then strStem2 = rs("stem") if strStem2 = strDette Then strHar = "ja" strFelt = rs("stem") & "," & strDette else end if end if
Prøv at erstatte den med denne:
if instr (strStemt,",") = 0 Then if LCase(strStemt) = LCase(strDette) Then strHar = "ja" strFelt = rs("stem") & "," & strDette end if end if
Alternativt prøv med denne:
if not instr (strStemt,",") Then if LCase(strStemt) = LCase(strDette) Then strHar = "ja" strFelt = rs("stem") & "," & strDette end if end if
Der bør principielt ikke være forskel på de 2 alternativer, men ift. dit oprindelige er der flg. ændringer:
1. strStem2 er fjernet. Du har allerede værdien fra rs("stem") i strStemt 2. Jeg har konverteret til lowercase, for at eks. ASP_5 er lig asp_5 3. Jeg har fjernet en "tom" else
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.