webForumDet fria alternativet

Uppdatera och lägga till poster i tabell

ASP

14 svar · 349 visningar · startad av devotion

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

:e
Hej!

Har följande kod som läser av data från en textfil och lägger in den i en databastabell (access)

<%@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, strArticleCategory, strArticleCategoryName, strDiscount, strSQL, intCounter, strPath

strPath = Trim(Replace(Request.Form("textFile"), "'", "''"))

Response.Write(strPath)

intCounter = 0
set objFSO = Server.CreateObject("Scripting.Filesystemobject")
set objFile = objFSO.OpenTextFile (strPath)

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

    strArticleCategory = Replace(Trim(Mid(strLine, 1, 4)), "'", "''")
	strArticleCategoryName = Replace(Trim(Mid(strLine, 24, 30)), "'", "''")
	strDiscount = Replace(Trim(Mid(strLine, 101, 5)), "'", "''")
     if strDiscount = "" then 
        strDiscount = 0 
     End if

   strSQL = "INSERT INTO tblDiscount (articleCategory, articleCategoryName, articleDiscount) VALUES ('" & strArticleCategory & "', '" & strArticleCategoryName & "', " & strDiscount & ")"
    
objConn.Execute strSQL,,128

 
wend

objFile.close
set objFile = nothing
set objFSO = nothing
objConn.Close
Set objConn = Nothing

Response.write("<script>document.getElementById(""myMess"").innerHTML=""Rabattavtalet har lagrats i databasen! "";</script>")
%>

</body>
</html>

Funkar perfekt! Men jag vill utvecla det lite och göra så man kan uppdatera tabellen istället.
Det scriptet gör är att läsa av ett rabattavtal i txt-format och lägga in i en databastabell.

Med jämna mellanrum kommer nya avtal som skall läsas in. Jag har löst det genom att radera hela tabellen och gjort en ny inläsning med ovanstående kod. Men det känns inte helt optimalt. Det hade varit bättre att bara läsa in en ny fil som lägger till nya poster och uppdaterar poster som förändrats samt låter oförändarde poster vara..

Puhhh.....

Hoppas ni förstår.

Hur ska jag göra; börja med någon SELECT och sedan UPDATE??

MVH :e

Medlem sedan dec. 200012 464 inlägg
#2
strSQL = "update tblDiscount set ... "
objConn.Execute strSQL,rows,128
if  rows = 0 then
    strSQL = "INSERT INTO tblDiscount (articleCategory, articleCategoryName, articleDiscount) " & _
             " VALUES ('" & strArticleCategory & "', '" & strArticleCategoryName & "', " & strDiscount & ")"
    objConn.Execute strSQL,,128
end if

Du får själv fylla i resten av update då jag inte vet vad som är primärnyckel i tabellen.

Medlem sedan jan. 20013 582 inlägg
#3

:e
Snabba svar!

Tack!

Jag har ingen primärnyckel, måste jag ha det?

Mvh

Medlem sedan dec. 200012 464 inlägg
#4

Ja.

Medlem sedan jan. 20013 582 inlägg
#5

Jo, men hur menar du (svara inte att du måste ha en primär nyckel nu ;) )

Jag har ju följande kolumner i tblDiscount:

articleCategory, articleCategoryName, articleDiscount

Mvh

Medlem sedan jan. 20013 582 inlägg
#6

Ahh............
fast articleCategory är det som är unikt (artikelkategori) det finns ju bara en av den....

Kan jag använda mig av den??

MVH

Medlem sedan dec. 200012 464 inlägg
#7

Vad är det som är oklart?

vad en primärnyckel är?

vilka kolumner är lämpliga som primärnyckel?

något annat?

Medlem sedan nov. 20017 144 inlägg
#8

Det är väl säkert articleCategory du har som primärnyckel då.
Access accepterar väl inte en tabell utan primärnyckel har jag för mig.

Medlem sedan jan. 20013 582 inlägg
#9

:)

Vad är det som är oklart?

det som jag inte förstår

vad en primärnyckel är?

Nix detta är inte oklart

vilka kolumner är lämpliga som primärnyckel?

Nix detta är inte oklart...

något annat?

Ja, eftersom jag inte har en primärnyckel i nuläget och jag har access och det fungerar undrar jag om jag kan använda "articleCategory" som primärnyckel.

Medlem sedan dec. 200012 464 inlägg
#10

Ja, eftersom jag inte har en primärnyckel i nuläget och jag har access och det fungerar undrar jag om jag kan använda "articleCategory" som primärnyckel.

Jo, om den innehåller unika värden så passar den bra som primärnyckel.

Medlem sedan jan. 20013 582 inlägg
#11

:)
Jag tror jag fattar...
Ska jag använda

strSQL = "update tblDiscount set ... WHERE '" & strArticleCategory & "' = strArticleCategory"

Är det så du menar?

Medlem sedan dec. 200012 464 inlägg
#12

Jo, nästan

strSQL = "update tblDiscount set ... WHERE '" & strArticleCategory & "' = ArticleCategory"
Medlem sedan jan. 20013 582 inlägg
#13

:e
Ja, ja, det var faktiskt bara en felskrivning... ;)

Tack för hjälpen!

By the way....

Hur skulle man kunna gör en felhantering till scriptet. Dvs om något går galet för att textfilen inte stämmer (felaktiga tecken mm)så får man meddelande om det istället för serverfel???

Mvh

Medlem sedan jan. 20013 582 inlägg
#14

:)
Tack!
Efter lite om och men funkar det prima...

Mvh

Medlem sedan juni 200032 967 inlägg
#15

devotion skrev:

Hur skulle man kunna gör en felhantering till scriptet. Dvs om något går galet för att textfilen inte stämmer (felaktiga tecken mm)så får man meddelande om det istället för serverfel???

on error resume next

...

' kod som kan generera felmeddelande

...

If Err.Number <> 0 then
       Response.write "nått gick fel!"
       Err.Clear
End if

on error goto 0

mvh

416 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
284 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
281 ms — ändringar (db)