Konstigt. Jag undrar om det kan vara webbläsaren som når någon sorts timeout. Du kan ju prova att flusha ut något till webbläsaren varje 100 poster du har behandlat, för att se om du kan hålla den vid liv.
Mvh
4 svar · 405 visningar · startad av devotion
Hej!
Denna fråga vänder sig mest till @nders eftersom det är han som hjälpt mig från början....
Har följande kod som läser in data från en textfil och lägger den i en accessdatabas.
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<%
Response.write("<div id=""myMess"">Vänta, skriver till databasen...</div>")
Response.Flush()
dim objConn, objRS, strLine, iEnumber, strCategory, strUnit, curPrice, strSQL, strCheckEnumber
set objFSO = Server.CreateObject("Scripting.Filesystemobject")
set objFile = objFSO.OpenTextFile (Server.MapPath("\prislistor\storelpris.txt"))
Set objConn = Server.CreateObject("ADODB.Connection")
ObjConn.Open "DSN=Prislista"
while not objFile.atendofstream
strLine = objFile.ReadLine
strCheckEnumber = Replace(Trim(Mid(strLine, 1, 1)), "'", "''")
if strCheckEnumber = "0" then
iEnumber = Replace(Trim(Mid(strLine, 2, 7)), "'", "''")
Else
iEnumber = Replace(Trim(Mid(strLine, 1, 8)), "'", "''")
End if
strArticlename = Replace(Trim(Mid(strLine, 9, 30)), "'", "''")
strCategoryStorel = Replace(Trim(Mid(strLine, 42, 4)), "'", "''")
strUnit = Trim(Mid(strLine, 39, 3))
curPriceStorel = Trim(Mid(strLine, 46, 7))
' Först kör vi en update om artikeln redan finns.
strSQL = "UPDATE tblPriceList SET articleCategoryStorel = '" & strCategoryStorel & "', articlePriceStorel = " & curPriceStorel & " WHERE eNumber = '" & iEnumber & "'"
objConn.Execute strSQL, lngRA, 128
if lngRA = 0 then
' Ny artikel, gör insert.
strSQL = "INSERT INTO tblPriceList (eNumber, articleName, articleCategoryStorel, articleUnit, articlePriceStorel) VALUES ('" & iEnumber & "', '" & strArticleName & "', '" & strCategoryStorel & "', '" & strUnit & "', " & curPriceStorel & ")"
objConn.Execute strSQL, , 128
end if
wend
objFile.close
set objFile = nothing
set objFSO = nothing
objConn.Close
Set objConn = Nothing
Response.write("<script>document.getElementById(""myMess"").innerHTML=""Prislistan har lagrats i databasen! "";</script>")
%>
</head>
<body>
</body>
</html>
Det är många artiklar så det tar ca 2 timmar att läsa in allt! Innan inläsningen finns det ca 60 000 artiklar i databasen. Efter ca 100 000. Då har befintliga artiklar uppdaterats och nya lagts till.
Har ändrat timeouten på webservern så det är inga problem. Har också lagt in en funktion som ska visa meddelandet "vänta, skriver till databasen..."
Problemet är att efter en stund kommer följande meddelande:
Det går inte att hitta server eller ett DNS-fel har uppstått
Internet Explorer
Alltså samma felmeddelande som när man skriver fel webadress!
Inläsningen pågår dock fortfarande och avslutas när alla artiklar är inlästa!!!
Varför blir det så här??
Mvh
Konstigt. Jag undrar om det kan vara webbläsaren som når någon sorts timeout. Du kan ju prova att flusha ut något till webbläsaren varje 100 poster du har behandlat, för att se om du kan hålla den vid liv.
Mvh
Hej!
Som vanligt låter ju allt självklart när du säger det "flusha ut" Hmmm...
Ok, det vore ju smidigt att se ett räkneverk som visar antalet skrivna poster till databasen så man vet att det händer något. Hur gör man det?
Sen, vore det bra att kunna avsluta operationen med en knapp "avbryt" eller liknande...
Hur gör man det?
Mvh
devotion skrev:
Ok, det vore ju smidigt att se ett räkneverk som visar antalet skrivna poster till databasen så man vet att det händer något. Hur gör man det?
Något sånt här kanske:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<%
Response.write("<div id=""myMess"">Vänta, skriver till databasen...</div>")
Response.write("<div id=""progress""></div>")
Response.Flush()
dim objConn, objRS, strLine, iEnumber, strCategory, strUnit, curPrice, strSQL, strCheckEnumber, intCounter
intCounter = 0
set objFSO = Server.CreateObject("Scripting.Filesystemobject")
set objFile = objFSO.OpenTextFile (Server.MapPath("\prislistor\storelpris.txt"))
Set objConn = Server.CreateObject("ADODB.Connection")
ObjConn.Open "DSN=Prislista"
while not objFile.atendofstream
intCounter = intCounter +1
if intCounter mod 100 = 0 then
Response.write ("<script>document.getElementById(""progress"").innerHTML=""" & intCounter & """;</script>")
Response.flush
end if
strLine = objFile.ReadLine
strCheckEnumber = Replace(Trim(Mid(strLine, 1, 1)), "'", "''")
if strCheckEnumber = "0" then
iEnumber = Replace(Trim(Mid(strLine, 2, 7)), "'", "''")
Else
iEnumber = Replace(Trim(Mid(strLine, 1, 8)), "'", "''")
End if
strArticlename = Replace(Trim(Mid(strLine, 9, 30)), "'", "''")
strCategoryStorel = Replace(Trim(Mid(strLine, 42, 4)), "'", "''")
strUnit = Trim(Mid(strLine, 39, 3))
curPriceStorel = Trim(Mid(strLine, 46, 7))
' Först kör vi en update om artikeln redan finns.
strSQL = "UPDATE tblPriceList SET articleCategoryStorel = '" & strCategoryStorel & "', articlePriceStorel = " & curPriceStorel & " WHERE eNumber = '" & iEnumber & "'"
objConn.Execute strSQL, lngRA, 128
if lngRA = 0 then
' Ny artikel, gör insert.
strSQL = "INSERT INTO tblPriceList (eNumber, articleName, articleCategoryStorel, articleUnit, articlePriceStorel) VALUES ('" & iEnumber & "', '" & strArticleName & "', '" & strCategoryStorel & "', '" & strUnit & "', " & curPriceStorel & ")"
objConn.Execute strSQL, , 128
end if
wend
objFile.close
set objFile = nothing
set objFSO = nothing
objConn.Close
Set objConn = Nothing
Response.write("<script>document.getElementById(""myMess"").innerHTML=""Prislistan har lagrats i databasen! "";</script>")
%>
</head>
<body>
</body>
</html>
Din andra fråga kan jag inte besvara, dessvärre. Du får nog vänta på att koden körs klart, eller stoppa webbtjänsten på servern.
mvh