---
title: "Deleta ut varukorg, flera med checkbox."
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/5267-deleta-ut-varukorg-flera-med-checkbox"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Brimba"
published: "1999-12-15T11:10:00.000Z"
updated: "1999-12-21T09:24:00.000Z"
replies: 16
views: 601
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/5267-deleta-ut-varukorg-flera-med-checkbox"
---

# Deleta ut varukorg, flera med checkbox.

## #1 — Brimba, 1999-12-15T11:10Z

Hej!

Jag skall göra om min varukorg.

Man skall med hjälp av checkboxes kunna deleta flera produkter samtidigt.
jag ahr gjort så här

```
	If Request.Form("id") <> "" Then
	SQLStmt = "DELETE FROM tabInternetKorg Where ProdId = " & Request.Form("id") & " AND (tabInternetKorg.AnvId = " & Session.sessionId & ")"
	Connection.Execute(SQLStmt)
```

Detta gör den först i varukorg.asp
sen gör den följande

```
<INPUT type="checkbox" name="id" value="<%= RS("ProdId") %>">
```

Och det är ju genom dessa checkboxar man får fram värdet på den produkten man skall ta bort. Men problemet är ju att när man markerar flera checkboxar blir ju värdet på id tex

784, 823 och då blir ju felmeddelandet

Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

\[Microsoft\]\[ODBC Microsoft Access 97 Driver\] Syntax error (comma) in query expression 'ProdId = 784, 823 AND (tabInternetKorg.AnvId = 670086542)'. 

/varukorg/varukorg2.asp, line 11 

Någon som vet hur jag gör för att kunna markera flera checkboxar och sedan trycka på en submit knapp så att det jag valt raderas ut ur min databas/varukorg.

Mvh
Patrik
aka Brimba

Permalänk: https://www.webforum.nu/p/5267

## #2 — toha, 1999-12-17T15:15Z

Ett sätt är att du gör en loop och deletar de en och en, men det belastar ju servern
mer. Om jag inte tar helt fel så tror jag att följande sql-uttryck går bra att använda:

DELETE \* FROM tabInternetkorg WHERE AnvID = " & session.sessionid & " AND (ProdID = Prod1 OR ProdID = Prod2)

Där "Prod1" och "Prod2" är ProdID-numret från de ikryssade checkrutorna. (Kommer inte
ihåg riktigt hur man tog fram de just nu. Måste ha ASP-bibeln framför mig...)

Som sagt så har jag inte testat det....

Permalänk: https://www.webforum.nu/p/238332

## #3 — Brimba, 1999-12-17T15:24Z

Hej!

Jag fick en lösning, som jag löste det med. Den ser ut så här:

```
	If Request.Form("delete") <> "" Then
	Request.Form("delete").Count
	For I=1 to Request.Form("delete").Count
	Rad=Request.Form("delete")(I)
	SQLStmt = "delete * FROM tabInternetKorg Where ProdId=" & Rad & " AND (tabInternetKorg.AnvId = " & Session.sessionId & ")"
	Connection.Execute(SQLStmt)
	Next
	End If
```

Tack!

Mvh
Patrik
aka Brimba

Permalänk: https://www.webforum.nu/p/238333

## #4 — toha, 1999-12-17T15:50Z

Jo, det fungerar men, bara så att du vet så gör du lika många databasanrop som du vill ta bort artiklar vilket "belastar" servern lite extra mycket.

Permalänk: https://www.webforum.nu/p/238334

## #5 — Brimba, 1999-12-17T15:54Z

Hej!

Jovisst gör jag det.
Som det är nu är det relativt lugnt endå. Det är en relativt liten sida jag kör just nu, skall ju naturligtvis växa när det kommer reklam om den, men det lär inte bli så stor. Plus att servern är relativt stor. 512mb ram 500Mhz PIII. Men självklart tar det server kapacitet, men jag tror nog att det klarar sig.

Vet du hur man får det att gå på ett databas anrop? Skulle vara käckt om du kunde ge mig något exempel på det, om du utgår från min kod som jag pastade.

Tack!

Mvh
Patrik
aka Brimba

Permalänk: https://www.webforum.nu/p/238335

## #6 — toha, 1999-12-17T19:29Z

Hej Brimba!

Jag tror att följande kod skall hjälpa dig att ta bort alla artiklar med ett
databasanrop. Det är operatorn "IN" som anger vilka som skall tas bort. Först
genererar jag en sträng som blir: "'prod1','prod2','prod3," ...   osv
och sätter in det i sql-frågan.

\==========================================================================

dim InTXT

If Request.Form("id") \<\> "" Then

  for I = 1 to request.form("checkform").count
    InTXT = InTXT & "'" & request.form("checkform") & "',"
  next
' Ta bort de sista kommatecknet...
  InTXT = left(InTXT, len(InTXT)-1)

  SQLStmt = "DELETE \* FROM tabInternetKorg WHERE AnvId = " & Session.sessionId & " AND ProdId IN(" & InTXT & ");"
Connection.Execute(SQLStmt)
end if

\==========================================================================

Kanske nåt litet fel nånstans... ;-)

Permalänk: https://www.webforum.nu/p/238336

## #7 — Brimba, 1999-12-18T10:35Z

Hej!

Tack för koden, skall testa den så fort jag får möjlighet att komma till datorn på jobbet. 

Tack!

Mvh
Patrik
aka Brimba

Permalänk: https://www.webforum.nu/p/238337

## #8 — Brimba, 1999-12-20T10:05Z

Hej!

Denna koden vägrar att fungera, skulle bli glad om du kunde titta på det.

```
dim InTXT 
If Request.Form("delete") <> "" Then 
for I = 1 to request.form("delete").count
InTXT = InTXT & "'" & request.form("delete") & "',"
next
' Ta bort de sista kommatecknet...
InTXT = left(InTXT, len(InTXT)-1) 
SQL = "DELETE * FROM tabInternetKorg WHERE AnvId = " & Session.sessionId & " AND ProdId IN(" & InTXT & ");"
Connection.Execute(SQL)
end if
```

Mvh
Patrik
aka Brimba

Permalänk: https://www.webforum.nu/p/238338

## #9 — toha, 1999-12-20T11:36Z

Sorry, mitt fel. Jag glömde en relevant detalj.

\===========================================

If Request.Form("delete") \<\> "" Then

dim InTXT, I
for I = 1 to request.form("delete").count
	InTXT = InTXT & "'" & request.form("delete")**(I)** & "',"
next

' Ta bort de sista kommatecknet...
InTXT = Left(InTXT, len(InTXT)-1)
SQL = "DELETE \* FROM tabInternetKorg WHERE AnvId = " & Session.sessionId & " AND ProdId IN(" & InTXT & ");"
Connection.Execute(SQL)
end if

\=========================================

Det bör fungera....

Permalänk: https://www.webforum.nu/p/238339

## #10 — Brimba, 1999-12-20T11:52Z

Han klagar bara.

Den säger

Microsoft OLE DB Provider for ODBC Drivers error '80040e07' 

\[Microsoft\]\[ODBC Microsoft Access 97 Driver\] Data type mismatch in criteria expression. 

/varukorg/varukorg.asp, line 14 

Vad kan vara fel?

mvh
Patrik
aka Brimba

Permalänk: https://www.webforum.nu/p/238340

## #11 — toha, 1999-12-20T14:29Z

Det blir lättare att hjälpa dig om du skriver in hela din kod. Jag vet inte vad som står på rad 14...

Vad har du för datatyper för de olika kolumnerna? Du kanske skall lägga till/ta bort apostrofer i uttrycket.

Permalänk: https://www.webforum.nu/p/238341

## #12 — Brimba, 1999-12-20T14:40Z

Ok, då postar jag den koden.

Detta är varukorg.asp

```
<%

Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=d:\dmab\internet.mdb"

If Request.Form("delete") <> "" Then 
dim InTXT, I
for I = 1 to request.form("delete").count
InTXT = InTXT & "'" & request.form("delete")(I) & "',"
next 
' Ta bort de sista kommatecknet...
InTXT = Left(InTXT, len(InTXT)-1)
SQL = "DELETE * FROM tabInternetKorg WHERE AnvId = " & Session.sessionId & " AND ProdId IN(" & InTXT & ");"
Connection.Execute(SQL)
end if

'	If Request.Form("delete") <> "" Then
'	Request.Form("delete").Count
'	For I=1 to Request.Form("delete").Count
'	Rad=Request.Form("delete")(I)
'	SQL = "delete * FROM tabInternetKorg Where ProdId=" & Rad & " AND (tabInternetKorg.AnvId = " & Session.sessionId & ")"
'	Connection.Execute(SQL)
'	Next
'	End If

SQLStmt = "SELECT Sum(tabInternetKorg.Antal) AS [Antal], tabArt.ArtID, tabInternetKorg.ProdId, tabArt.Artikel, tabArt.ArtExkl, tabInternetKorg.AnvId FROM tabInternetKorg, tabArt WHERE tabInternetKorg.ProdId = tabArt.ArtID AND (tabInternetKorg.AnvId = " & Session.sessionId & ") GROUP BY tabInternetKorg.AnvId, tabArt.Artikel, tabArt.TypId, tabInternetKorg.ProdId, tabArt.ArtExkl, tabArt.ArtID ORDER BY tabArt.Artikel"
SET RS = Connection.Execute(SQLStmt)

Function GetPriceinkl()

TotalPris = RS("ArtExkl") * 1.25
GetPriceinkl = FormatNumber(TotalPris,0)
End Function

Function GetPrice()

TotalPris = RS("ArtExkl")
GetPrice = FormatNumber(TotalPris,0)
End Function

Function GetPAPriceinkl()

TotalPAPris = PA("KundPris")
GetPAPriceinkl = FormatNumber(TotalPAPris,0)
End Function

Function GetPAPrice()

TotalPAPris = PA("KundPris") * 0.8
GetPAPrice = FormatNumber(TotalPAPris,0)
End Function

%>

<%titlebar = "Varukorg"%>
<!--#include virtual="/top.inc" -->
<form method="POST" name="myform" action="varukorg.asp">
<%
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=d:\dmab\internet.mdb"
Paket = "SELECT tabPaket.PaketID, tabPaket.PaketNamn, tabPaket.KundPris, tabInternetKorg.ProdId, tabInternetKorg.AnvId, Sum(tabInternetKorg.Antal) AS [Antal] FROM tabPaket, tabInternetKorg WHERE tabInternetKorg.ProdId = tabPaket.PaketID AND (tabInternetKorg.AnvId = " & Session.sessionId & ") GROUP BY tabInternetKorg.AnvId, tabPaket.PaketID, tabPaket.PaketNamn, tabPaket.KundPris, tabInternetKorg.ProdId Order by tabPaket.PaketID"
SET PA = Connection.Execute(Paket)
%>
    <% If RS.EOF AND PA.EOF Then %>
<font face="Verdana" size="2" color="#000000"><B>Det finns inga produkter i din varukorg ännu!</B></font>
    <% ELSE %>
    <table border="0" width="100%" cellspacing="1" cellpadding="2">
<tr>
        <td width="232" bgcolor="#F40000"><strong><small><font face="Arial" color="FFFFFF">Produkt</font></small></strong></td>
        <td width="40" bgcolor="#F40000" align="center"><strong><small><font face="Arial" color="FFFFFF">Antal</font></small></strong></td>
	  <td width="75" bgcolor="#F40000"><strong><small><font face="Arial" color="FFFFFF">á-pris exkl.</font></small></strong></td>
        <td width="75" bgcolor="#F40000"><strong><small><font face="Arial" color="FFFFFF">á-pris inkl.</font></small></strong></td>
        <td width="75" bgcolor="#F40000" align="center"><strong><small><font face="Arial" color="FFFFFF">Radera</font></small></strong></td>
      </tr>      
<%

Dim SubTotal
DO UNTIL RS.EOF
%>
<%
strArtikel= Rs("Artikel")
if Len(strArtikel) > 30 then
strArtikel = Left(strArtikel,30) & "..."
end if
%>

      <tr>
        <td width="232" bgcolor="#F2F2F2"><small><font face="Arial"><%= strArtikel %></font></small></td>
        <td width="40" bgcolor="#F2F2F2" align="center"><small><font face="Arial"><%= RS("Antal") %></font></small></td>
		<td width="75" bgcolor="#F2F2F2" align="right"><small><font face="Arial"><%= GetPrice() %> :-</font></small></td>
        <td width="75" bgcolor="#F2F2F2" align="right"><small><font face="Arial"><%= GetPriceinkl() %> :-</font></small></td>
		<td width="75" align="center" bgcolor="#F2F2F2"><INPUT type="checkbox" name="delete" value="<%= RS("ProdId") %>"></td>
      </tr>
<%
SubTotal = SubTotal + (RS("Antal") * RS("ArtExkl"))
RS.MoveNext
Loop
%>

<%
DO UNTIL PA.EOF
%>
      <tr>
        <td width="232" bgcolor="#F2F2F2"><small><font face="Arial"><%= PA("PaketNamn") %></font></small></td>
        <td width="40" bgcolor="#F2F2F2" align="center"><small><font face="Arial"><%= PA("Antal") %></font></small></td>
		<td width="75" bgcolor="#F2F2F2" align="right"><small><font face="Arial"><%= GetPAPrice() %> :-</font></small></td>
        <td width="75" bgcolor="#F2F2F2" align="right"><small><font face="Arial"><%= GetPAPriceinkl() %> :-</font></small></td>
		<td width="75" align="center" bgcolor="#F2F2F2"><INPUT type="checkbox" name="delete" value="<%= PA("ProdId") %>"></td>      
      </tr>
<%
SubTotal = SubTotal + (PA("Antal") * PA("KundPris")* 0.80)
PA.MoveNext
Loop
%>
<% SubTotalinkl = SubTotal * 1.25 %>
    </table>
    <table border="0" width="100%" cellspacing="1" cellpadding="2">
      <tr>
        <td width="232"><strong><small><font face="Arial">Frakt:</font></small></strong></td>
        <td width="40"> </td>
        <td width="75" bgcolor="#F40000" align="right"><font face="Arial" color="FFFFFF"><small>80 :-</small></font></td>
        <td width="75" bgcolor="#F40000" align="right"><B><font face="Arial" color="FFFFFF"><small>100 :-</small></font></B></td>
        <td width="75" align="center"><input id="submit" name="B1" src="../images/radera.gif" type="image" onfocus="blur()"></td>
      </tr>
      <tr>
        <td width="232"><strong><small><font face="Arial">Totalt:</font></small></strong></td>
        <td width="40"> </td>
        <td width="75" bgcolor="#F40000" align="right"><font face="Arial" color="FFFFFF"><small><%= FormatNumber(SubTotal+80,0) %> :-</small></font></td>
        <td width="75" bgcolor="#F40000" align="right"><B><font face="Arial" color="FFFFFF"><small><%= FormatNumber(SubTotalinkl+100,0) %> :-</small></font></B></td>
        <td width="75"> </td>
      </tr>
      <tr>
        <td width="232"><strong><small><font face="Arial"><A HREF="javascript:void(0)" onClick="alert('WASA Kredit / Lån\n\nI prisexemplet ingår avi avgift á 25kr.\nExemplet är upplagt på 36 månader men kan betalas av snabbare om så önskas.\n\nEn uppläggningsavgift på 300kr läggs automatiskt på utav WASA Kredit på den första fakturan.\n\nKredit kostnad: <% =FormatNumber((((((SubTotalinkl*3.178)/100)+25)*36)+300)-SubTotalinkl,0) %>:-\n\n OBS: Lån kan endast fås om totalsumman överstiger 6000 kr')"><font color="000000">Månads kostnad:</A></font></small></strong></td>
        <td width="40"> </td>
        <td width="150" colspan="2" bgcolor="#F40000" align="right"><strong><font face="Arial" color="FFFFFF"><small><%= FormatNumber(((SubTotalinkl*3.178)/100)+25,0) %> :-</small></font></strong></td>
        <td width="75"> </td>
      </tr>
    </table>
    <p><% End If %>
    
</form>
<%
' Stäng databasen och RS.

RS.Close
PA.Close
Connection.Close
%>

<!--#include virtual="/bot.inc" -->
```

Det är ganska mycket, men du ville ha allt   :) iofs hade det nog räckt om jag postar SQL staserna. Men Hoppas du blir glad   :)

Mvh
Patrik
aka Brimba

\[Redigerat av Brimba den 20 dec 1999\]

Permalänk: https://www.webforum.nu/p/238342

## #13 — toha, 1999-12-20T14:56Z

Men vilken rad är rad nummer 14?

Vad har du för datatyper för de olika kolumnerna i  databasen?

Ett tips (om det är sql-uttrycket det är fel på) är att skriva "response.write sql" på raden innan "connection.execute()" så ser man vad som skickas till odbc:n.

Permalänk: https://www.webforum.nu/p/238343

## #14 — Brimba, 1999-12-20T15:07Z

Jo det har jag provat, den skickar följande till databasen:

Om jag tar bort en artikel ser den ut så här:

DELETE \* FROM tabInternetKorg WHERE AnvId = 814290698 AND ProdId IN('706'); 

Tar jag bort flera ser den ut så här:

DELETE \* FROM tabInternetKorg WHERE AnvId = 814290698 AND ProdId IN('706','736'); 

Jag tycker det ser rätt ut nämnligen, därför är jag lite fundersam. Men vad IN gör vet jag inte, men det sa ju du att det var bra jag skulle ha skrivit AND ProdId = ('706','736'); 

Men det kunde ju du!

Mvh
Patrik
aka Brimba

Permalänk: https://www.webforum.nu/p/238344

## #15 — emission, 1999-12-20T16:14Z

Det ser rätt ut, men det verkar vara nåt klassiskt mystiskt med det hela. Men, varför inte "smeta ihop " alla DELETE-satser till en enda, innan du kör Execute. Då blir det bara ett anrop, men det kan inte hjälpas.

Fast å andra sidan verkar det som om prodid är ett heltal, och då ska du ju inte ha några fnuttar med i SQL-satsen.

Permalänk: https://www.webforum.nu/p/238345

## #16 — toha, 1999-12-20T21:41Z

Precis som emission säger så skall du ta bort apostroferna om kolumen "ProdID" är av tal-typ.

Permalänk: https://www.webforum.nu/p/238346

## #17 — Brimba, 1999-12-21T09:24Z

Hej!

När jag tog bort fnuttarna, såg min rad ut så här:

DELETE \* FROM tabInternetKorg WHERE AnvId = 860526382 AND ProdId IN(735,952); 

Och då fungerade det perfekt!

Tack så mycket för hjälpen!

Mvh
Patrik
aka Brimba

Permalänk: https://www.webforum.nu/p/238347

---

Tråden på webben: https://www.webforum.nu/amne/asp/5267-deleta-ut-varukorg-flera-med-checkbox
