67 messaggi dal 17 luglio 2002
Ok, Quello era per vedere i dati scritti precedentemente in una tabella, ma se volessi anche scriverli? sempre da una pagina asp?
Io ho provato a scrivere quanto segue:

1) - Nella pagina con il form di immissione ho scritto questo:

<html>
<head>
<title>INSERIMENTO DI DATI IN UN DATABASE</title>
</head>
<body>
<p>Compila i campi:</p>
<form method="POST" action="fatture.asp">
<p>Data fattura: <input type="text" name="datafattura" size="20"></p>
<p>Num fattura: <input type="text" name="numfattura" size="20"></p>
<p>Importo fatt: <input type="text" name="importodocumento" size="20"></p>
<p><input type="submit" value="Invia"></p>
</form>

2) - Nella pagina grid dove vengono mostrati i records della tabella ("fatture.asp"), prima dell'elenco dei records ho scritto questo:

<%
data fattura: = Request.form("datafattura")
num. fattura: = Request.form("numfattura")
imp.documento: = Request.form("importodocumento")
dim connessione
dim recordset
Set connessione = Server.CreateObject("ADODB.Connection")
connessione.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\mdb-database\fatture.mdb"
Set recordset = Server.CreateObject("ADODB.Recordset")
SQL = "INSER INTO fatture (datafattura, numfattura, importodocumento) "
SQL = SQL & "VALUES ('" & datafattura & "','" & numfattura & "','" & importodocumento & "')"
recordset.open SQL, connessione
connessione.Close
set connessione = nothing
%>
Grazie
2.190 messaggi dal 04 marzo 2004
Contributi | Blog
Quando devi inserire dei dati è sufficiente utilizzare connessione.Execute(SQL) anzichè aprire un recordset.

Attento a SQL e code injection http://www.aspitalia.com/script/595/Proteggersi-Attacchi-SQL-Code-Injection-ASP.aspx.

Alessio Leoncini (WinRTItalia.com)
.NET Developer, Interactive Designer, UX Specialist, Trainer
67 messaggi dal 17 luglio 2002
novecento ha scritto:
Quando devi inserire dei dati è sufficiente utilizzare connessione.Execute(SQL) anzichè aprire un recordset.


Grazie novecento, ho provato a fare come dici. Sono riuscito ad inserire un record, ma poi ogni volta che riprovo mi restituisce il seguente messaggio:

Tipo di errore:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Driver ODBC Microsoft Access] L'apporto modifiche non è riuscito perché si è cercato di duplicare i valori nell'indice, nella chiave primaria o nella relazione. Modificare i dati nel campo o nei campi che contengono dati duplicati, rimuovere l'indice o ridefinire l'indice per consentire l'inserimento di voci duplicate, quindi ritentare l'operazione.
/fatture.asp, line 13

Questa è la pagina di inserimento dati:

<html>
<head>
<title>Inserimento fatture</title>
</head>
<body>
<p>Compila i campi:</p>
<form method="POST" action="fatture.asp">
<p>Data fattura: <input type="text" name="datafattura" size="20"></p>
<p>Num fattura: <input type="text" name="numfattura" size="20"></p>
<p>Importo fatt: <input type="text" name="importodocumento" size="20"></p>
<p><input type="submit" value="Invia"></p>
</form>

E questa è la pagina ricevente (quella che dovrebbe scrivere il record e mostrare l'elenco dei records inseriti:

<HTML>
<TITLE>Elenco fatture</TITLE
<center>
<%
datafattura=Request.form("datafattura")
numfattura=Request.form("numfattura")
importodocumento=Request.form("importodocumento")
dim connessione
Set connessione = Server.CreateObject("ADODB.Connection")
connessione.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\mdb-database\fatture.mdb"
SQL = "INSERT INTO fatture (datafattura, numfattura, importodocumento) "
SQL = SQL & "VALUES ('" & datafattura & "','" & numfattura & "','" & importodocumento & "')"
connessione.Execute(SQL)
connessione.Close
set connessione = nothing
response.redirect("fatture.asp")
%>
<%
Set connessione = Server.CreateObject("ADODB.Connection")
connessione.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\mdb-database\fatture.mdb"
Set recordset = Server.CreateObject("ADODB.Recordset")
recordset.open "select datafattura from fatture", connessione
Set recordset1 = Server.CreateObject("ADODB.Recordset")
recordset1.open "select numfattura from fatture", connessione
Set recordset2 = Server.CreateObject("ADODB.Recordset")
recordset2.open "select importodocumento from fatture", connessione
Set recordset3 = Server.CreateObject("ADODB.Recordset")
recordset3.open "select incassato from fatture", connessione
Set recordset4 = Server.CreateObject("ADODB.Recordset")
recordset4.open "select fatture.importodocumento-fatture.incassato AS residuo FROM fatture", connessione
%>
<CENTER>
<% response.write "<img src=/calc.png>" %>
<TABLE>
<TR BGCOLOR="#FF0000">
<TD COLSPAN="5"><FONT FACE="ARIAL" COLOR="#FFFFFF"><DIV ALIGN="CENTER"><SPAN CLASS="STYLE1"><STRONG>Elenco fatture</STRONG></SPAN></FONT></TD></TR>
<TR BGCOLOR="#00CCFF">
<TD WIDTH="150"><DIV ALIGN="CENTER"><FONT FACE="ARIAL">Data fattura</FONT></TD>
<TD WIDTH="150"><DIV ALIGN="CENTER"><FONT FACE="ARIAL">Numero fattura</FONT></TD>
<TD WIDTH="150"><DIV ALIGN="CENTER"><FONT FACE="ARIAL">Importo documento</FONT></TD>
<TD WIDTH="150"><DIV ALIGN="CENTER"><FONT FACE="ARIAL">Incassato</FONT></TD>
<TD WIDTH="150"><DIV ALIGN="CENTER"><FONT FACE="ARIAL">Residuo</FONT></TD>
<%
Do While not recordset.EOF
Do While not recordset1.EOF
Do While not recordset2.EOF
Do While not recordset3.EOF
Do While not recordset4.EOF
%>
<TR>
<TD align="center" bgcolor="#eeeeee"><% response.write recordset.Fields("datafattura").Value %></TD>
<TD align="center" bgcolor="#eeeeee"><% response.write recordset1.Fields("numfattura").Value %></TD>
<TD align="center" bgcolor="#eeeeee"><% response.write recordset2.Fields("importodocumento").Value %></TD>
<TD align="center" bgcolor="#eeeeee"><% response.write recordset3.Fields("incassato").Value %></TD>
<TD align="center" bgcolor="#eeeeee"><% response.write recordset4.Fields("residuo").Value %></TD>
</TR>
<%
recordset.MoveNext
recordset1.MoveNext
recordset2.MoveNext
recordset3.MoveNext
recordset4.MoveNext
Loop
Loop
Loop
Loop
Loop
recordset.Close
recordset1.Close
recordset2.Close
recordset3.Close
recordset4.Close
set recordset = Nothing
set recordset1 = Nothing
set recordset2 = Nothing
set recordset3 = Nothing
set recordset4 = Nothing
Connessione.Close
Set Connessione = Nothing
%>
</TABLE>
</HTML>
<FORM method="POST" action="inseriscifattura.asp">
<input type="Submit" value="Inserisci fattura">

e questa è la famigerata linea 13:

connessione.Execute(SQL)

Dove sta l'inghippo?
Grazie
67 messaggi dal 17 luglio 2002
Salve Stamani, senza apportare modifiche ho provato a rilanciare la pagina.
Stavolta l'errore è cambiato, ma la linea è sempre la stessa (Linea 13):

Tipo di errore:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][Driver ODBC Microsoft Access] Tipi di dati non corrispondenti nell'espressione criterio.
/fatture.asp, line 13

La pagina come si può vedere è sempre la stessa:

<HTML>
<TITLE>Elenco fatture</TITLE
<center>
<%
datafattura=Request.form("datafattura")
numfattura=Request.form("numfattura")
importodocumento=Request.form("importodocumento")
dim connessione
Set connessione = Server.CreateObject("ADODB.Connection")
connessione.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\mdb-database\fatture.mdb"
SQL = "INSERT INTO fatture (datafattura, numfattura, importodocumento) "
SQL = SQL & "VALUES ('" & datafattura & "','" & numfattura & "','" & importodocumento & "')"
connessione.Execute(SQL)
connessione.Close
set connessione = nothing
response.redirect("fatture.asp")
%>
<%
Set connessione = Server.CreateObject("ADODB.Connection")
connessione.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\mdb-database\fatture.mdb"
Set recordset = Server.CreateObject("ADODB.Recordset")
recordset.open "select datafattura from fatture", connessione
Set recordset1 = Server.CreateObject("ADODB.Recordset")
recordset1.open "select numfattura from fatture", connessione
Set recordset2 = Server.CreateObject("ADODB.Recordset")
recordset2.open "select importodocumento from fatture", connessione
Set recordset3 = Server.CreateObject("ADODB.Recordset")
recordset3.open "select incassato from fatture", connessione
Set recordset4 = Server.CreateObject("ADODB.Recordset")
recordset4.open "select fatture.importodocumento-fatture.incassato AS residuo FROM fatture", connessione
%>
<CENTER>
<% response.write "<img src=/calc.png>" %>
<TABLE>
<TR BGCOLOR="#FF0000">
<TD COLSPAN="5"><FONT FACE="ARIAL" COLOR="#FFFFFF"><DIV ALIGN="CENTER"><SPAN CLASS="STYLE1"><STRONG>Elenco fatture</STRONG></SPAN></FONT></TD></TR>
<TR BGCOLOR="#00CCFF">
<TD WIDTH="150"><DIV ALIGN="CENTER"><FONT FACE="ARIAL">Data fattura</FONT></TD>
<TD WIDTH="150"><DIV ALIGN="CENTER"><FONT FACE="ARIAL">Numero fattura</FONT></TD>
<TD WIDTH="150"><DIV ALIGN="CENTER"><FONT FACE="ARIAL">Importo documento</FONT></TD>
<TD WIDTH="150"><DIV ALIGN="CENTER"><FONT FACE="ARIAL">Incassato</FONT></TD>
<TD WIDTH="150"><DIV ALIGN="CENTER"><FONT FACE="ARIAL">Residuo</FONT></TD>
<%
Do While not recordset.EOF
Do While not recordset1.EOF
Do While not recordset2.EOF
Do While not recordset3.EOF
Do While not recordset4.EOF
%>
<TR>
<TD align="center" bgcolor="#eeeeee"><% response.write recordset.Fields("datafattura").Value %></TD>
<TD align="center" bgcolor="#eeeeee"><% response.write recordset1.Fields("numfattura").Value %></TD>
<TD align="center" bgcolor="#eeeeee"><% response.write recordset2.Fields("importodocumento").Value %></TD>
<TD align="center" bgcolor="#eeeeee"><% response.write recordset3.Fields("incassato").Value %></TD>
<TD align="center" bgcolor="#eeeeee"><% response.write recordset4.Fields("residuo").Value %></TD>
</TR>
<%
recordset.MoveNext
recordset1.MoveNext
recordset2.MoveNext
recordset3.MoveNext
recordset4.MoveNext
Loop
Loop
Loop
Loop
Loop
recordset.Close
recordset1.Close
recordset2.Close
recordset3.Close
recordset4.Close
set recordset = Nothing
set recordset1 = Nothing
set recordset2 = Nothing
set recordset3 = Nothing
set recordset4 = Nothing
Connessione.Close
Set Connessione = Nothing
%>
</TABLE>
</HTML>
<FORM method="POST" action="inseriscifattura.asp">
<input type="Submit" value="Inserisci fattura">

Mistero della fede.
67 messaggi dal 17 luglio 2002
Scusate, Funziona. Avevo cambiato il campo chiave di fatture da contatore a numerico. L'ho rimesso a contatore ed ora funge.
Grazie

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.