webForumDet fria alternativet

uppdatera antalet

ASP

14 svar · 444 visningar · startad av cyeclone

Medlem sedan dec. 2004143 inlägg
Frågan#1

Hejsan jag skulle nu behöva ha lite hjälp igen!
Skulle vara jätte snällt om någon kunnde hjälpa mig!

Jag vill ha det så att om man redan har en produkt med produktidet "22" i sin kundvagn och sedan lägger till en 5 stycken till produket med produktidet "22" så ska bara antalet uppdateras. Har försökt lite med denna kod.

KID = KundID
PID = ProduktID

Hoppas ni fattar nått av mig kod :)

<% Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(" "&databas&" ") 

	Set RecSet = Server.CreateObject("ADODB.Recordset")
   Visa = "SELECT * FROM Kundvagn WHERE KID = " & Trim(Session("KID")) & " "
   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic %>
<%
If Request.Form("PID") = RecSet("PID") Then
Set Connect = Server.CreateObject("ADODB.Connection")
  	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath(" "&databas&" ")
  	Set RecSet = Server.CreateObject("ADODB.Recordset")
	lol = "Select * FROM Kundvagn WHERE KID = " & Trim(Session("KID")) & " AND WHERE PID = " & Request.Form("PID") & " "
	RecSet.Open lol, Connect, 1, 3
	
Dim antalnu, antal, antal2
	antalnu = RecSet("Antal")
	antal2 = Request.Form("Antal")
	Antal = antalnu + antal2
	
	RecSet.update
	RecSet("antal") = Antal
	RecSet.Update
	RecSet.Close

Else
%>
Medlem sedan dec. 2004143 inlägg
#2

Re: uppdatera antalet

EDIT:
If Request.Form("PID") = RecSet("PID") Then

Den kan ju inte fungera komm jag på, eftersom det finns ett X antal PID för just det användar ID:et...

Nån som fattar hur jag menar och har något förslag ?

Medlem sedan juni 200032 967 inlägg
#3

Något sånt här kanske kan funka efter det att du skrivit klart INSERT, och sånt:

<% 
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(" "&databas&" ") 
Visa = "SELECT * FROM Kundvagn WHERE KID = " & Trim(Session("KID")) & " AND PID = " & Request.Form("PID")
set RecSet = Connect.Execute(Visa)

If not RecSet.EOF then
 	' produkten finns, gör update!
	strSQL = "UPDATE Kundvagn SET antal = antal + " & Request.Form("antal") & " WHERE KID = " & Trim(Session("KID")) & " AND PID = " & Request.Form("PID") & " "
	Connect.execute strSQL,,128
Else
	'produkten finns inte, gör insert!
	strSQL = "INSERT INTO Kundvagn ..............."
	Connect.execute strSQL,,128
End if

RecSet.Close
Set RecSet = nothing
Connect.Close
set Connect = nothing
%>
Medlem sedan juni 200032 967 inlägg
#4

Eller ännu hellre:

<% 
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(" "&databas&" ") 

strSQL = "UPDATE Kundvagn SET antal = antal + " & Request.Form("antal") & " WHERE KID = " & Trim(Session("KID")) & " AND PID = " & Request.Form("PID") 
Connect.execute strSQL,lngRa,128

if lngRa = 0 then
	'produkten finns inte, gör insert!
	strSQL = "INSERT INTO Kundvagn ..............."
	objConn.execute strSQL,,128
End if

Connect.Close
set Connect = nothing
%>
Medlem sedan dec. 2004143 inlägg
#5

kollade på ditt första exempel lite,
fick felmedelandet
"Object required: 'objConn' " på denna rad:

objConn.execute strSQL,,128
Medlem sedan juni 200032 967 inlägg
#6

Sorry.

Se till att det används samma namn på connectionobjektet på alla ställen.

Medlem sedan dec. 2004143 inlägg
#7

aha, jag ändra till
set RecSet = Connect.Execute(strSQL)
Och fick det att fungera ;)

Medlem sedan juni 200032 967 inlägg
#8

Var ändrade du till det?

Medlem sedan dec. 2004143 inlägg
#9

Min slutgiltiga kod:

<% 
	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(" "&databas&" ") 
	Visa = "SELECT * FROM Kundvagn WHERE KID = " & Trim(Session("KID")) & " AND PID = " & Request.Form("PID")
	set RecSet = Connect.Execute(Visa)

If not RecSet.EOF then
 	' produkten finns, gör update!
	strSQL = "UPDATE Kundvagn SET antal = antal + " & Request.Form("antal") & " WHERE KID = " & Trim(Session("KID")) & " AND PID = " & Request.Form("PID") & " "
	set RecSet = Connect.Execute(strSQL)
	
		session("kundmess") = "Du har uppdaterat din kundvagn med "& Request.Form("antal") &" st "& Request.Form("ProduktNamn") &"."
		response.Redirect "index.asp?page=kundvagn"
Else
	Set Connect = Server.CreateObject("ADODB.Connection")
  		Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath(" "&databas&" ")
  		Set RecSet = Server.CreateObject("ADODB.Recordset")
		lol = "Select * FROM Kundvagn"
		RecSet.Open lol, Connect, 1, 3
	
		RecSet.addnew
		Recset("PID") = Request.Form("PID")
		Recset("ProduktNamn") = Request.Form("ProduktNamn")
		Recset("KID") = Request.Form("KID")
		Recset("Pris") = Request.Form("Pris")
		Recset("antal") = Request.Form("antal")
		RecSet("Datum") = Date()
		RecSet.Update
		RecSet.Close

	session("kundmess") = "Du har lagt till "& Request.Form("antal") &" st "& Request.Form("ProduktNamn") &" i din kundvagn."
	response.Redirect "index.asp?page=kundvagn"
	
End if
%>

Ser du var jag ändrade det ?
Tack för hjälpen!

Mvh,
Rickard Bjerkenius

Medlem sedan juni 200032 967 inlägg
#10

Ja, jag ser, men jag förstår inte varför!

Du ska inte skapa ett recordset när du inte vill ha data tillbaka. Byt tillbaks, se bara till att du har "rätt" namn på connectionobjektet!

Sedan:

*) Skapa inte ett nytt connection-objekt när du ska lägga in data. Du har ju redan ett!

*) Dags att lära sig UPDATE och INSERT kanske?

Mvh

Medlem sedan dec. 2004143 inlägg
#11

så ska ändra denna rad:
set RecSet = Connect.Execute(strSQL)
Till:
Connect.execute strSQL,,128
?

Medlem sedan juni 200032 967 inlägg
#12

Ja

Medlem sedan dec. 2004143 inlägg
#13

okej!
Det fungerade fin fint! Tack så mycket för hjälpen @nders!

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(" "&databas&" ")
Visa = "SELECT * FROM Kundvagn WHERE KID = " & Trim(Session("KID")) & " AND PID = " & Request.Form("PID")
set RecSet = Connect.Execute(Visa)

If not RecSet.EOF then
' produkten finns, gör update!
strSQL = "UPDATE Kundvagn SET antal = antal + " & Request.Form("antal") & " WHERE KID = " & Trim(Session("KID")) & " AND PID = " & Request.Form("PID") & " "
Connect.execute strSQL,,128

	session("kundmess") = "Du har uppdaterat din kundvagn med "& Request.Form("antal") &" st "& Request.Form("ProduktNamn") &"."
	response.Redirect "index.asp?page=kundvagn"

Else
' produkten finns inte, skapa en ny

Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (\*.mdb)};dbq=" & Server.MapPath(" "&databas&" ")
	Set RecSet = Server.CreateObject("ADODB.Recordset")
	lol = "Select \* FROM Kundvagn"
	RecSet.Open lol, Connect, 1, 3

	RecSet.addnew
	Recset("PID") = Request.Form("PID")
	Recset("ProduktNamn") = Request.Form("ProduktNamn")
	Recset("KID") = Request.Form("KID")
	Recset("Pris") = Request.Form("Pris")
	Recset("antal") = Request.Form("antal")
	RecSet("Datum") = Date()
	RecSet.Update
	RecSet.Close

session("kundmess") = "Du har lagt till "& Request.Form("antal") &" st "& Request.Form("ProduktNamn") &" i din kundvagn."
response.Redirect "index.asp?page=kundvagn"

End if
%>

Medlem sedan juni 200032 967 inlägg
#14

Du noterade mina tillägg i detta inlägg?

Medlem sedan dec. 2004143 inlägg
#15

ja, förlåt... :(
får väll ta och ändra lite då.... :P

Är ganska ny inom asp, kanske bara kodat 6 månader :(

Men tack för tipset, jag fattar iaf vad du menar! tro jag :P

Ha det bra!