webForumDet fria alternativet

Hämta värde från databas innan textfil läses in

ASP

3 svar · 348 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

Tja!

Har följande fil som läser in en textfil till en databas:

<%@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>addSolar</title>

</head>
<body>

<%
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, intCounter, strArticleSupplierId

strArticleSupplierId = 4

intCounter = 0
set objFSO = Server.CreateObject("Scripting.Filesystemobject")
set objFile = objFSO.OpenTextFile (Server.MapPath("\prislistor\ahlsellpris.txt"))

Set objConn = Server.CreateObject("ADODB.Connection")
ObjConn.Open = "DSN=IntranetSydostel"

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

    iEnumber = Replace(Trim(Mid(strLine, 1, 8)), "'", "''")
	strCategory = Replace(Trim(Mid(strLine, 17, 4)), "'", "''")
	curPrice = Replace(Trim(Mid(strLine, 9, 8)), "'", "''")
    
	'Först kör vi en UPDATE om artikeln redan finns
	strSQL = "UPDATE tblPrice SET eNumber = '" & iEnumber & "', articleSupplierId = '" & strArticleSupplierId & "', articlePrice = " & curPrice & ", articleCategory = '" & strCategory & "' " &_ 
			 "WHERE eNumber = '" & iEnumber & "' AND articleSupplierId = '" & strArticleSupplierId & "'" 
	         objConn.Execute strSQL, lngRA, 128

	if lngRA = 0 then
		'Ny artikel, gör INSERT
		strSQL = "INSERT INTO tblPrice (eNumber, articleSupplierId, articlePrice, articleCategory) " &_
				 "VALUES ('" & iEnumber & "', '" & strArticleSupplierId & "', " & curPrice & ", '" & strCategory & "')"
		         objConn.Execute strSQL
	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>")
%>

</body>
</html>

Hur modifierar jag den så att innan inläsningen påbörjas så hämtas ett värde från en tabell som heter tblNextId, fält: tblArticle.Värdet ska lagras i en variabel och ökas med 1 för varje loop. när alla poster är inlästa ska det sista värdet på variablen skrivas in i tblNextId igen (uppdateras)

Har någon lite bra ideer på hur detta skulle kunna göras???

Mvh

Henrik

Medlem sedan juni 200032 967 inlägg
#2

byt intCounter mot lngID eller nått:

Set objConn = Server.CreateObject("ADODB.Connection")
ObjConn.Open = "DSN=IntranetSydostel"

lngID = 0
set objRS = objConn.Execute("SELECT tblArticle FROM tblNextID")
if not objRS.EOF then
	lngID = clng(objRS(0))
end if
objRS.Close : set objRS = nothing

, eller byt lngID i min kod mot intCounter om du inte orkar ändra i din andra kod.

Sedan är det bara att göra en update med lngID+1, men det fixar du.

mvh

Medlem sedan jan. 20013 582 inlägg
#3

:)
ok, tack för det...

Ska testa!

Mvh
Henrik

Medlem sedan jan. 20013 582 inlägg
#4

verkar funka finfint....

tackar!

Mvh
Henrik

261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)