webForumDet fria alternativet

Lägga in flera rader samtidigt ?

ASP

1 svar · 258 visningar · startad av henrik2001

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

hej!
jag håller på med ett script som ska lägga in nya poster i en databas, så här ser sidan där man skriver in uppgifterna ut:

<form method="post" action="laggtill2.asp">
<%
i = 1
Do While i <= 5
%>
<table>

<tr>
<td><b>Nr:</b></td>
<td><b>Förnamn:</b></td>
<td><b>Efternamn:</b></td>
<td><b>Adress:</b></td>
<td><b>PostNr:</b></td>
<td><b>Ort:</b></td>
<td><b>TeleNr:</b></td>
</tr>

<tr>

<td>
<select name="knr">
<% iCount = 1
Do While iCount <= 32
Response.Write "<option value="""
Response.Write iCount
Response.Write """>"
Response.Write iCount
Response.Write "</option>" & vbcrlf
iCount = iCount + 1
Loop %>
</select>
</td>

<td><input type="text" name="fornamn"></td>
<td><input type="text" name="efternamn"></td>
<td><input type="text" name="adress"></td>
<td><input type="text" name="postnr"></td>
<td><input type="text" name="ort"></td>
<td><input type="text" name="telenr"></td>
</tr>

</table>
<br><br>
<%
i = i + 1
Loop
%>
<input type="submit" value="Lägg till!">
</form>

den sidan visar ju 5 st. likadana tabeller, alltså den koden innanför loopen.
nu vill jag att man ska kunna lägga till flera rader samtidigt i databasen!

scriptet som tar emot uppgifterna:

<%
strForNamn = Request.Form("fornamn")
strEfterNamn = Request.Form("efternamn")
strAdress = Request.Form("adress")
strPostNr = Request.Form("postnr")
strOrt = Request.Form("ort")
strTeleNr = Request.Form("telenr")
strKlassNr = Request.Form("knr")

Set eConn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
MdbFilePath = Server.MapPath("klasse.mdb")
eConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"

SQL = "SELECT * From Elever WHERE 1=2" 
rs.Open SQL, eConn, 1, 2
rs.AddNew

rs("FörNamn") = strForNamn
rs("EfterNamn") = strEfterNamn
rs("Adress") = strAdress
rs("PostNr") = strPostNr
rs("Ort") = strOrt
rs("TeleNr") = strTeleNr
rs("KlassNr") = strKlassNr

rs.Update
rs.Close
%>
Posterna är registrerade!

man kanske kan använda en loop på nåt sätt i koden ovan, men hur ??

tacksam för svar!

/henrik

Medlem sedan dec. 200012 464 inlägg
#2

I och med att fälten i ditt formulär har samma namn så läggs värdena som en kommaseparerad lista som man kan dela upp med funktionen split.


<%
arrForNamn = split(Request.Form("fornamn"),",")
arrEfterNamn = split(Request.Form("efternamn"),",")
arrAdress = split(Request.Form("adress"),",")
arrPostNr = split(Request.Form("postnr"),",")
arrOrt = split(Request.Form("ort"),",")
arrTeleNr = split(Request.Form("telenr"),",")
arrKlassNr = split(Request.Form("knr"),",")
Set eConn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
MdbFilePath = Server.MapPath("klasse.mdb")
eConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"

SQL = "SELECT * From Elever WHERE 1=2" 
rs.Open SQL, eConn, 1, 2
for i = 0 to ubound(arrForNamn)
    rs.AddNew

    rs("FörNamn") = arrForNamn(i)
    rs("EfterNamn") = arrEfterNamn(i)
    rs("Adress") = arrAdress(i)
    rs("PostNr") = arrPostNr(i)
    rs("Ort") = arrOrt(i)
    rs("TeleNr") = arrTeleNr(i)
    rs("KlassNr") = arrKlassNr(i)
    rs.Update

next
rs.Close
%>
Posterna är registrerade!

------------------
essentitia preter non sans multiplicandum

291 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
161 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)