Her er to SQL statements til henholdsvis Update og Insert. De to scripts fungerer således at hver gang en bruger skal sende en form der skal lægges ind, eller opdateres, i en tabel så henvises der fra formen til et script. Således kan du have flere forskellige formularer på dit site, der henviser til et script.
Bemærk at de to scriptets kun kan indsætte data i en tabel.
Koden er kommenteret.
GLOBAL
'Database Connect
sub openDatabaseConnection()
set Connection=server.createobject("adodb.connection")
path="DBQ=" & server.mappath("database/database.mdb")
Connection.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & path, 1, 3
end sub
'Database Close
sub closeDatabaseConnection()
Connection.close
Set Connection = Nothing
end sub
Insert Statement -------------------------------------------------------
HTML Form:
<table>
<form action="_include_insert.asp" method="post">
<!--Denne Hidden skal altid indsættes med name="tableName"
Værdien angiver den tabel hvor formdataene skal indsættes-->
<input type="hidden" name="tableName" value="Tabel2">
<tr>
<td>Feltnavn1:</td>
<td><input type="text" name="feltnavn1"></td>
</tr>
<tr>
<td>Feltnavn2:</td>
<td><input type="text" name="feltnavn2"></td>
</tr>
<tr>
<td>Feltnavn3:</td>
<td><input type="text" name="feltnavn3"></td>
</tr>
<tr>
<td>Feltnavn4:</td>
<td><input type="text" name="feltnavn4"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Send"></td>
</tr>
</form>
</table
ASP Script:
<%
'Insert Method Version 1.0
'Insætter alle formfelter i en tabel, der har det tilsvarende antal kolonner
'Bemærk at tabellen skal indeholde et unikt ID og denne skal være den første kolonne
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
Call openDatabaseConnection
SqlQ = "Select * From " & request("tableName")
Set retur_SqlQ = Connection.execute(SqlQ)
Set addRec = Server.CreateObject("ADODB.Recordset")
addRec.CursorLocation = 3
addRec.Open "" & request("tableName") & "", Connection, 1, 3
addRec.AddNew
'Tæller hvor mange kolonner der er i tabellen
for each x in retur_SqlQ.fields
count_x = count_x+1
next
'Tæller antal requests
for each i in Request.Form
count_i = count_i+1
if count_i = 1 then
seperation = ""
else
seperation = "~"
end if
if Request.Form(i) = "" then
value_i = " "
else
value_i = Request.Form(i)
end if
formField = formField & replace(value_i, "" & request("tableName") & "", "") & seperation
Next
'Verificer at count_x og count_i er lig med hinanden.
if count_x-1 = count_i-1 then
'Indlæser lortet ind i tabellen
for each z in retur_SqlQ.fields
count_z = count_z+1
if count_z <> 1 then
if temp_formField <> "" then
if Len(temp_formField) = 2 then
formField = right(formField, len(formField)-2)
else
formField = replace(formField, "" & temp_formField & "", "")
end if
end if
n = 0
n = n + 1
varlength = InStr(n, formField, "~", 0)
tempvarlengt = varlength
found = True
temp_formField = left(formField, tempvarlengt)
addRec(z.name) = replace(temp_formField, "~", "")
end if
next
end if
addRec.Update
addRec.Close
Set addRec = Nothing
Call closeDatabaseConnection
end if
%>
UPDATE Statement -------------------------------------------------------
HTML Form:
<%
Call openDatabaseConnection
SqlQ = "Select * From Tabel1"
Set retur_SqlQ = Connection.execute(SqlQ)
ID = retur_SqlQ("ID")
feltNavn1 = retur_SqlQ("feltNavn1")
feltNavn2 = retur_SqlQ("feltNavn2")
feltNavn3 = retur_SqlQ("feltNavn3")
feltNavn4 = retur_SqlQ("feltNavn4")
Call closeDatabaseConnection
%>
<table>
<form action="_include_update.asp" method="post">
<!--Denne Hidden skal altid indsættes med name="tableName"
Værdien angiver den tabel hvor formdataene skal indsættes-->
<input type="hidden" name="tableName" value="Tabel1">
<!--Denne Hidden skal altid indsættes med name="ID"
Værdien angiver udtrækkets ID som anvendes ved opdatering-->
<input type="hidden" name="ID" value="<%= ID %>">
<tr>
<td>Feltnavn1:</td>
<td><input type="text" name="feltnavn1" value="<%= feltNavn1 %>"></td>
</tr>
<tr>
<td>Feltnavn2:</td>
<td><input type="text" name="feltnavn2" value="<%= feltNavn2 %>"></td>
</tr>
<tr>
<td>Feltnavn3:</td>
<td><input type="text" name="feltnavn3" value="<%= feltNavn3 %>"></td>
</tr>
<tr>
<td>Feltnavn4:</td>
<td><input type="text" name="feltnavn4" value="<%= feltNavn4 %>"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Send"></td>
</tr>
</form>
</table>
ASP Script:
<%
'Update Method Version 1.0
'Erstatter alle formfelter i en tabel, der har det tilsvarende antal kolonner
'Bemærk at tabellen skal indeholde et unikt ID og denne skal være den første kolonne
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
Call openDatabaseConnection
SqlQ = "Select * From " & request("tableName")
Set retur_SqlQ = Connection.execute(SqlQ)
'Tæller hvor mange kolonner der er i tabellen og læser ID feltet
for each x in retur_SqlQ.fields
count_x = count_x+1
if count_x = 1 then
fieldID = (x.name)
end if
next
Set updateRec = Server.CreateObject("ADODB.Recordset")
updateRec.CursorLocation = 3
updateRec.Filter = "" & fieldID & " = " & request("ID") & ""
updateRec.Open "" & request("tableName") & "", Connection, 1, 3
updateRec.Update
'Tæller antal requests
for each i in Request.Form
count_i = count_i+1
if count_i = 1 then
seperation = ""
else
seperation = "~"
end if
if Request.Form(i) = "" then
value_i = " "
else
value_i = Request.Form(i)
end if
formField = formField & replace(value_i, "" & request("tableName") & "", "") & seperation
'response.write formField & "<br><br>"
Next
'Her fjerner vi ID'et - det er lidt tricky he he
n = 0
n = n + 1
varIDLenght = InStr(n, formField, "~", 0)
tempVarIDLenght = varIDLenght
found = True
formFieldID = left(formField, tempVarIDLenght)
formField = mid(formField, len(formFieldID)+1, len(formField)-len(formFieldID))
'Verificer at count_x og count_i er lig med hinanden.
if count_x-1 = count_i-2 then
'Indlæser lortet ind i tabellen
for each z in retur_SqlQ.fields
count_z = count_z+1
if count_z <> 1 then
if temp_formField <> "" then
if Len(temp_formField) = 2 then
formField = right(formField, len(formField)-2)
else
formField = replace(formField, "" & temp_formField & "", "")
end if
end if
n = 0
n = n + 1
varlength = InStr(n, formField, "~", 0)
tempvarlengt = varlength
found = True
temp_formField = left(formField, tempvarlengt)
updateRec(z.name) = replace(temp_formField, "~", "")
end if
next
end if
updateRec.Update
updateRec.Close
Set updateRec = Nothing
Call closeDatabaseConnection
end if
%>
|