webForumDet fria alternativet

Mysskofel

ASP

10 svar · 211 visningar · startad av Tobbster

Medlem sedan mars 2001309 inlägg
Frågan#1
<!-- #include file="./gaaah.inc" -->
<html>
<head>
        <title>Uppdatering av uppgifter</title>

</head>
<body bgcolor="white">
<%
Response.Expires = -1000
Response.Addheader "Pragma", "no-cache"
%>

<%
Dim mobil
mobil=request.form("mob")

Dim Info
info=request.form("info")

Dim id
id=request.querystring("id")

Dim faxnr
faxnr=request.form("fax")

Dim epostpriv
epostpriv=request.form("Epostpriv")

Dim tfnhem
tfnhem=request.form("tfnhem")

 Set Conn = Server.CreateObject("ADODB.Connection")
        Conn.Open connString
        Strsql="select * from Vytelpersoninfo where PersonID = '"&id&"' "
         Set rs = Conn.execute (Strsql)

SQL1="update Vytelpersoninfo set info='"&info&"' where PersonID = '"&id&"'"

Do while not rs("typk")="TfnMobil"
rs.movenext
loop

if rs("typk")="TfnMobil" then
   SQL= "update Vytelpersoninfo set Kontakt='"&mobil&"' where PersonID = '"&id&"' and typk='TfnMobil'"
 else
   SQL="insert into tbltelpersonkontakt(personid,kontakttyp,kontakt) values('"&id&"','2','"&mobil&"')"
end if

rs.movefirst

[b]Do while not rs("typk")="Fax"[/b]
rs.movenext
loop

if rs("typk")="Fax" then
   SQL2= "update Vytelpersoninfo set Kontakt='"&faxnr&"' where PersonID = '"&id&"' and typk='Fax'"
else
  SQL2="insert into tbltelpersonkontakt(personid,kontakttyp,kontakt) values('"&id&"','7','"&faxnr&"')"
end if

rs.movefirst

do while not rs("typk")="EpostPrivat"
rs.movenext
loop

if rs("typk")="EpostPrivat" then
   SQL3="update Vytelpersoninfo set Kontakt='"&epostpriv&"' where PersonID = '"&id&"' and typk='EpostPrivat'"
else
  SQL3="insert into tbltelpersonkontakt(personid,kontakttyp,kontakt) values('"&id&"','5','"&epostpriv&"')"
end if

rs.movefirst

do while not rs("typk")="TfnHem"
rs.movenext
loop

if rs("typk")="TfnHem" then
   SQL4="update Vytelpersoninfo set Kontakt='"&tfnhem&"' where PersonID = '"&id&"' and typk='TfnHem'"
else
  SQL4="insert into tbltelpersonkontakt(personid,kontakttyp,kontakt) values('"&id&"','6','"&tfnhem&"')"
end if
%>

<%
conn.execute(SQL)
conn.execute(SQL1)
conn.execute(SQL2)
conn.execute(SQL3)
conn.execute(SQL4)
%>

<%
response.redirect "info_person.asp?id="&id&""
%>
</body>
</html>

Får felmedelandet......
Error Type:
(0x80020009)
Exception occurred.
/adress/nytele/update.asp, line 61

Det feta är rad 61.....

------------------
Är man medlem på WF så behöver man inga vänner !

Medlem sedan dec. 200012 464 inlägg
#2

Varför du får fel vet jag inte, men det är några problem med din kod.

Set rs = Conn.execute (Strsql)

innebär att recordsetet blir forwardonly, dvs du kan inte använda movefirst. I så fall måste du använda open med en dynamisk eller keyset cursor.

Do while not rs("typk")="TfnMobil"
rs.movenext
loop

if rs("typk")="TfnMobil" then

Här kontrollerar du aldrig om du EOF blir sant.

Do while not rs.eof
if ("typk")="TfnMobil" then exit do
rs.movenext
loop

if rs.eof then
sql = "insert"
else
sql = "update"
end if

I och för sig så borde det gå att skriva om koden så att du bara behöver traversera recordsetet en gång

sql1 = ""
sql2 = ""
'osv
sql5 = ""
while not rs.eof
if rs("typk") = "tfnMobil" then
sql1 = "update ..."
elseif rs("typk") = "fax" then
sql2 = "update ..."
'osv
end if
rs.movenext
wend
if sql1 = "" then
sql1 = "insert ..."
end if
if sql2 = "" then
sql2 = "insert ..."
end if
'osv

------------------
essentitia preter non sans multiplicandum

Medlem sedan mars 2001309 inlägg
#3

Nu har jag ändrat lite efter att Lars G en engång givit meg en Lektion i ASP-konsten,Men jag får det inte att funka... ändå

<!-- #include file="./gaaah.inc" -->
<html>
<head>
        <title>Uppdatering av uppgifter</title>

</head>
<body bgcolor="white">
<%
Response.Expires = -1000
Response.Addheader "Pragma", "no-cache"
%>

<%
Dim mobil
mobil=request.form("mob")

Dim Info
info=request.form("info")

Dim id
id=request.querystring("id")

Dim faxnr
faxnr=request.form("fax")

Dim epostpriv
epostpriv=request.form("Epostpriv")

Dim tfnhem
tfnhem=request.form("tfnhem")

 Set Conn = Server.CreateObject("ADODB.Connection")
        Conn.Open connString
        Strsql="select * from Vytelpersoninfo where PersonID = '"&id&"'"
        [b] rs.Open Strsql,Conn,1,2[/b]

SQL1="update Vytelpersoninfo set info='"&info&"' where PersonID = '"&id&"'"

rs.movefirst

Do while not rs.eof
 if  rs("typk")="TfnMobil" then
  exit do
 end if
rs.movenext
loop

if rs.eof then
   SQL="insert into tbltelpersonkontakt(personid,kontakttyp,kontakt) values('"&id&"','2','"&mobil&"')"
 else
   SQL= "update Vytelpersoninfo set Kontakt='"&mobil&"' where PersonID = '"&id&"' and typk='TfnMobil'"
end if

rs.movefirst

Do while not rs.eof
 if  rs("typk")="Fax" then
   exit do
 end if
 rs.movenext
loop

if rs.eof then
   SQL2="insert into tbltelpersonkontakt(personid,kontakttyp,kontakt) values('"&id&"','7','"&faxnr&"')"
else
   SQL2= "update Vytelpersoninfo set Kontakt='"&faxnr&"' where PersonID = '"&id&"' and typk='Fax'"
end if

rs.movefirst

Do while not rs.eof
 if  rs("typk")="EpostPrivat" then
    exit do
 end if
 rs.movenext
loop

if rs.eof then
   SQL3="insert into tbltelpersonkontakt(personid,kontakttyp,kontakt) values('"&id&"','5','"&epostpriv&"')"
else
    SQL3="update Vytelpersoninfo set Kontakt='"&epostpriv&"' where PersonID = '"&id&"' and typk='EpostPrivat'"
end if

rs.movefirst

Do while not rs.eof
 if  rs("typk")="TfnHem" then
     exit do
 end if
 rs.movenext
loop

if rs.eof then
  SQL4="insert into tbltelpersonkontakt(personid,kontakttyp,kontakt) values('"&id&"','6','"&tfnhem&"')"
else
  SQL4="update Vytelpersoninfo set Kontakt='"&tfnhem&"' where PersonID = '"&id&"' and typk='TfnHem'"
end if
%>

<%
conn.execute(SQL)
conn.execute(SQL1)
conn.execute(SQL2)
conn.execute(SQL3)
conn.execute(SQL4)
%>

<%
response.redirect "info_person.asp?id="&id&""
%>
</body>
</html>

Felmedelandet lyder...
Error Type:
Microsoft VBScript runtime (0x800A01A8)
Object required: ''
/adress/nytele/update.asp, line 35

Det har väl med cursor och lock type att göra förmodar jag.....

------------------
Är man medlem på WF så behöver man inga vänner !

Medlem sedan juni 200032 967 inlägg
#4

Du har ju inte skapat ditt Recordset-objekt Rs.

Set Rs = server.createobject("adodb.recordset")

Mvh,

------------------
All your base are belong to me.

Medlem sedan mars 2001309 inlägg
#5

Hmmmm..... :r

------------------
Är man medlem på WF så behöver man inga vänner !

Medlem sedan juni 2001206 inlägg
#6

Varför skriver du:

<!-- #include file="./gaaah.inc" -->

och inte

<!-- #include file="../gaaah.inc" -->

?

------------------
MVH
Harback

Medlem sedan mars 2001309 inlägg
#7

Läs här http://www.webeye.nu/default2.asp?que=asp/default.asp&exec=asp/artiklar/asp_14.asp

Så ger Vide en utmärkt förklaring

------------------
Är man medlem på WF så behöver man inga vänner !

Medlem sedan dec. 19998 577 inlägg
#8

Sätter du en punkt så säger du att filen finns i den mappen filen som anropar finn i. Samma mapp alltså.

------------------
Doesn't 'expecting the unexpected' make the unexpected expected?
webeye.nu

Medlem sedan juni 20019 024 inlägg
#9

Men varför inte bara ha <!-- #include file="gaaah.inc" --> i så fall? :q

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan juli 20003 825 inlägg
#10

Lars G

Set rs = Conn.execute (Strsql)

innebär att recordsetet blir forwardonly, dvs du kan inte använda movefirst. I så fall måste du använda open med en dynamisk eller keyset cursor.

Nej! :-) Detta fungerar.

SQL = "SELECT * FROM [job]"
set mySQL = Conn.Execute(SQL)

DO UNTIL mySQL.EOF
response.write mySQL("x_ID") & " "
mySQL.MoveNext
LOOP

mySQL.MoveFirst

DO UNTIL mySQL.EOF
response.write mySQL("x_ID") & " "
mySQL.MoveNext
LOOP
Medlem sedan dec. 200012 464 inlägg
#11

Ojdå. Fort men fel.

------------------
essentitia preter non sans multiplicandum

267 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)