Avatar billede freedom Nybegynder
04. juni 2002 - 22:19 Der 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...
Avatar billede freedom Nybegynder
04. juni 2002 - 22:20 #1
hvis strDette er "asp_6" eller 7,8,9 osvskal den tilføje det til strFelt og hvis ikke gøre ingenting...
undskyld stave fejl
Avatar billede tmceu Praktikant
04. juni 2002 - 22:32 #2
Er strStem og strStemt det samme eller to forskellige ? Hvis det ikke er en stavefejl, hvor kommer strStem så fra og hvad er den aktuelle værdi ?
Avatar billede curriculum Nybegynder
04. juni 2002 - 22:34 #3
sql = "Update data set " &_
      "stem='" & strFelt & "' " &_
      "Where id=" & strBid & ""

Prøv den her ...
Avatar billede freedom Nybegynder
04. juni 2002 - 22:35 #4
det var en stave fejl,men det virker stadig ikke... samme fejl... vil du se det hele??? strFelt er tom??
Avatar billede freedom Nybegynder
04. juni 2002 - 22:36 #5
curriculum --> det samme...
Avatar billede curriculum Nybegynder
04. juni 2002 - 22:40 #6
ja undskyld ..
men hvorfor bruger du ikke cookies ?
Avatar billede tmceu Praktikant
04. juni 2002 - 22:43 #7
Det er en smule svært at finde fejlen i dette brudstykke af koden, når der anvendes variabler der er initialiseret tidligere i koden.

Hvor kommer eks. værdien af strDette fra ?

Som jeg læser koden, er det i dette afsnit at strFelt skal have sin værdi:

if rs("stem") = "" Then
    strHar = "nej"
    strFelt = strDette
end if

Men det forudsætter at strDette har fået en værdi tidligere ?
Avatar billede freedom Nybegynder
04. juni 2002 - 22:43 #8
fordi... det gør jeg bare ikke... det er en lang histroie.. det har noget med points at gøre.. bruger må ikke kunne stemme to gange..
Avatar billede curriculum Nybegynder
04. juni 2002 - 22:43 #9
Skriver i cookie'en:

Response.Cookies("Stemt")("Status") = NOW()

og henter den så med:

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
Avatar billede freedom Nybegynder
04. juni 2002 - 22:44 #10
tmceu --> det er jo det??den har ikke fået noget værdi tidliger... efter om det står noget vælger den en anden værdi for strFelt...
Avatar billede curriculum Nybegynder
04. juni 2002 - 22:48 #11
strDette er ikke identificeret i denne linje (linje 3 efter sql'en)!
strFelt = strDette
Avatar billede freedom Nybegynder
04. juni 2002 - 22:50 #12
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")

sql = "Update " & strKat & " set "
sql = sql & "hits='" & strHits & "' "
sql = sql & "Where id=" & strid & ""
Set rs = Conn.Execute(sql)

response.write "takker fo stemmesedlen..."
end if
end if
%>
Avatar billede tmceu Praktikant
04. juni 2002 - 22:55 #13
Er du sikker på, at der er nogen værdi i querystring'en ?

Prøv at indsætte disse linier i toppen af koden:

Response.Write "data: " & request.Querystring("data")
Response.End

Dette udskriver værdien af data fra querystring og stopper scriptet.

Du har ikke evt. ændret metode fra GET til POST, der hvor du stemmer fra ?
Avatar billede freedom Nybegynder
04. juni 2002 - 22:58 #14
ja det er der...... indholder
asp_5

kat og id
Avatar billede tmceu Praktikant
04. juni 2002 - 23:07 #15
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)

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")

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")

sql = "Update " & strKat & " set "
sql = sql & "hits='" & strHits & "' "
sql = sql & "Where id=" & strid & ""
Set rs = Conn.Execute(sql)

response.write "takker fo stemmesedlen..."
end if
end if
%>
Avatar billede freedom Nybegynder
04. juni 2002 - 23:13 #16
giver:
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 48
Avatar billede tmceu Praktikant
04. juni 2002 - 23:15 #17
Hvad ? Du skulle gerne have en masse response.write ned gennem siden ?
Avatar billede freedom Nybegynder
04. juni 2002 - 23:17 #18
nej..det er outputet..
Avatar billede freedom Nybegynder
04. juni 2002 - 23:18 #19
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.

/on/t_forum/stem.asp, line 66
Avatar billede freedom Nybegynder
04. juni 2002 - 23:28 #20
strFelt indholder ingentibg mærkeligt ikk? godnat.. kommer igen imorgen og håber du kan hjælpe..
Avatar billede tmceu Praktikant
05. juni 2002 - 01:31 #21
Det går galt omkring denne blok:

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
Avatar billede freedom Nybegynder
05. juni 2002 - 11:49 #22
det samme... du for 50 points . og jeg opretter spm. igen...
Avatar billede freedom Nybegynder
05. juni 2002 - 11:50 #23
okay
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