webForumDet fria alternativet
Logga in / Bli medlem

Insert into

ASP

10 svar · 214 visningar · startad av kristoffer

Medlem sedan juni 20001 257 inlägg
Trådstart#1

Jag listar ett antal poster från tabell1 på sida 1. Användaren kan markera en kryssruta bredvid posten med value lika med id för posten för att ange att denna på sida 2 skall INSERT:as i tabell2 när han klickar på submit.

Vad är bäst:

  • Att på sida 1 inkludera input-taggar av typ hidden med alla nödvändig information till varje post för att inserten på sida 2 skall kunna se ut så här:

    For Each intID in Request.Form("check")
    strSQL = "INSERT INTO tabell2 (fld1, fld2) VALUES (" & Request.Form("hidden1") & ", " & Request.Form("hidden2") & ")"
    objConn.Execute strSQL
    Next
    
  • Att på sida 2 öppna ett RecordSet enligt:

    strSQL = "SELECT value1, value2 FROM tabell1 WHERE id IN (" & Request.Form("check") & ")"
    

    och sedan göra INSERT:s i tabell2 för varje RecSet enligt:

    strSQL = "INSERT INTO tabell2 (fld1, fld2) VALUES (" & RecSet("value1") & ", " & RecSet("value2") & ")"
    objConn.Execute strSQL
    
Medlem sedan dec. 200012 464 inlägg
#2

Döp alla checkboxar till samma namn och sätt value-fältet till ditt ID-värde.

Sen kan du göra

strSQL = "INSERT INTO tabell2 (fld1, fld2) select value1,value2 from tabell1 where id IN (" & Request.Form("check") & ")" 
objConn.Execute strSQL
Medlem sedan juni 20001 257 inlägg
#3

Heh, det var ju finurligt. Och hur gör man om säg, value1 är statiskt och således inte skall hämtas från tabell1?

Medlem sedan dec. 200012 464 inlägg
#4

Du kan lägga in statiska värden direkt i select-satsen

strSQL = "INSERT INTO tabell2 (fld1, fld2) select 'Aleb',value2 from tabell1 where id IN (" & Request.Form("check") & ")" 
objConn.Execute strSQL

eller

strSQL = "INSERT INTO tabell2 (fld1, fld2) select 4711,value2 from tabell1 where id IN (" & Request.Form("check") & ")" 
objConn.Execute strSQL

beroende på datatyp.

Medlem sedan juni 20001 257 inlägg
#5

Ett av fälten, value2, är av datatyp smalldatetime men posten i det fältet ser ut så här:

2001-05-15

När jag försöker sätta in value2 i fld2, som också är av datatyp smalldatetime får jag felmeddelandet:

Syntax error converting character string to smalldatetime data type.

Medlem sedan juni 20001 257 inlägg
#6

Har löst det. Det var inget fel egentligen.

Medlem sedan juni 20001 257 inlägg
#7

Hur gör jag om jag vill hämta värden från två tabeller?

INSERT INTO tabell1 (kolumn1, kolumn2) SELECT myValue1 FROM tabell2 WHERE id = 40, SELECT myValue2 FROM tabell3 WHERE id = 1

Ovanstående fungerar inte.

Medlem sedan dec. 200012 464 inlägg
#8

Det beror liksom på. Finns det någon koppling mellan tabell2 och tabell3 eller vill du bara ta alla (som uppfyller villkoren) från båda tabellerna?

Om det senare så kan du ju skriva det med en union

insert into tabell1 (c1,c2)
select c1,c2 from tabell2 where id = 1
union select c1,c2 from tabell3 where id = 40
Medlem sedan juni 20001 257 inlägg
#9

Hm. Det var jag som hade fått hjärnsläpp. Så här enkelt var det:

INSERT INTO tabell1 (kolumn1, kolumn2) SELECT tabell2.myValue1, tabell3.myValue2 FROM tabell2, tabell3 WHERE tabell2.id = 40 AND tabell3.id = 1
Medlem sedan mars 20014 214 inlägg
#10

ehe, kanske inte har nåt med ämnet att göra men jag tycker det är lite roligt att du på din hemsida har en räknare från thecounter.com fast du bygger i ASP. ;)

Medlem sedan juni 20001 257 inlägg
#11

Heh, ja, det är inte helt bra. :) Den finns med sedan begynnelsen då jag inte kunde ASP. Nu har thecounter.com helt plötsligt bestämt att man skall betala för att få visa den osynliga varianten. (Frågan är iofs om man kan visa något som är osynligt :)) Den kommer alltså att avlägsnas alldeles snart.

264 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)