Ciao a tutti!
Da qualche settimana mi sono messo in testa di iniziare a programmare in ASP.net...

Stavo provando a realizzare uno script per la gestione delle news, ma mi sono bloccato nella realizzazione della pagina "modifica_news.aspx", che dovrebbe modificare le news. Ecco il suo codice:

<%@ Page Language="VB" validaterequest="false" %>
<%@ assembly name="ADODB" %>
<%@ import Namespace="ADODB" %>
<%@ import Namespace="System.Data" %>
<script runat="server">

' Creo la connessione ed il recordset

Private Connect As New ADODB.Connection
Private Connectb As New ADODB.Connection
Private recset As New ADODB.Recordset

' Page_Load, l'evento che si verificher al caricamento della pagina
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)

' Verifica se si e' amministratori

IF Session("amministratore") = False Then
Response.Redirect("default.aspx")
End IF

' Dichiara la variabile "ID" che conterrà l'ID della news passata
dim ID = Request("ID")

' Se come ID non è stato passato un valore valido
' Imposta l'ID ad 1

IF NOT ISNumeric(ID) or Len(ID) = 0 Then
ID = 1
End IF

' Se l'ID e' uguale a 0
' Imposta l'ID a 1

IF ID = 0 Then
ID = 1
End IF

ID = Int(ID)

' Apro la connessione ed il recordset
Connect.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" &

Server.MapPath("/mdb-database/database.mdb"))
' Eseguo la query al database per estrarre la news
RecSet.Open("SELECT TOP 1 * FROM news Where ID = " & ID &"", Connect)

' Verifica se la news realmente esiste

If RecSet.EOF Then

' La news non esiste (porta l'amministratore nella pagina "Gestione_news.asp")
Response.Redirect ("Gestione_news.aspx")

Else

' La news esiste: imposta nei vari campi del modulo i vari valori
Autore.Text = RecSet("Autore").Value
Contenuto.Text = Replace(RecSet("Contenuto").Value, "<br>", chr(13))
Titolo.Text = RecSet("Titolo").Value

End If


RecSet.Close
Connect.Close


End Sub

' Evento che si verifica al click sul tasto "Modifica News"
' (modifica la news nel db)
Sub Modifica_news_Click(sender As Object, e As EventArgs)

' Verifica che tutti i campi del modulo siano stati compilati
IF Page.Isvalid Then

' Apro la connessione
Connectb.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" &

Server.MapPath("/mdb-database/database.mdb"))
' Eseguo la query per modifica la news nel database
Connectb.Execute("Update news set Titolo = '" & Titolo.Text &"', Contenuto = '" &

Replace(Contenuto.Text, chr(13), "<br>") &"', Autore = '" & Autore.Text &"' where id = 21", 2)
Connectb.Close

' Porta l'amministratore in "Gestione_news.aspx"
Response.Redirect("Gestione_news.aspx")
End IF
End Sub

</script>
<html>
<head>
<title>Gestione news - Aggiungi news - Amministrazione</title>
</head>
<body>
<form runat="server">
<p align="center">
<font face="Verdana" size="4"><strong>Gestione News -&nbsp;Modifica

news</strong></font>
</p>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tbody>
<tr>
<td width="19%">
<font face="Verdana" size="2">Titolo news:</font></td>
<td width="81%">
<font face="Verdana" size="2">
<asp:TextBox id="Titolo" runat="server"></asp:TextBox>
&nbsp;<asp:RequiredFieldValidator id="Validatore1" runat="server"

ControlToValidate="Titolo" ErrorMessage="*"></asp:RequiredFieldValidator>
</font></td>
</tr>
<tr>
<td width="19%">
<font face="Verdana" size="2">Contenuto news:</font></td>
<td width="81%">
<asp:TextBox id="Contenuto" runat="server" TextMode="MultiLine"

Height="133px" Width="372px"></asp:TextBox>
<asp:RequiredFieldValidator id="Validatore2" runat="server"

ControlToValidate="Contenuto" ErrorMessage="*"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td width="19%">
<font face="Verdana" size="2">Autore news:</font></td>
<td width="81%">
<font face="Verdana" size="2">
<asp:TextBox id="Autore" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator id="Validatore3" runat="server"

ControlToValidate="Autore" ErrorMessage="*"></asp:RequiredFieldValidator>
</font></td>
</tr>
<tr>
<td width="100%" colspan="2">
<font face="Verdana" size="2">
<asp:Button id="Modifica_news" onclick="Modifica_news_Click"

runat="server" Text="Modifica news"></asp:Button>
</font></td>
</tr>
</tbody>
</table>
<p>
<a href="Gestione_news.aspx"><font face="Verdana" size="2"><b>Torna alla Gestione
delle news</b></font></a>
</p>
<p>
</p>
</form>
</body>
</html>

Alla pagina viene passato l'id della news (modifica_news.aspx?id=ID NEWS) e sembra tutto funzionare. Però quando tento di modificare la news nel db, non la modifica! Mi dite dove ho sbagliato?

Salvatore

Salvatore Aranzulla
3.168 messaggi dal 06 settembre 2002
Contributi | Blog
Ciao,

il fatto che nell'istruzione i update si a cablato l'id 21 può essere il problema. Comunque ci sono delle cose che non sono corrette stai usando gli oggetti adodb che usano la modalità connessa. Usa gli oggetti nuovi che .NET ti mette a disposizione per l'accesso ai dati.

HTH,
Stefano Mostarda MCP
Rome Italy

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
Raga ho risolto!!!!!!!!!!!

Vi spiego (la mi cretinagine che è unica): in poche parole lo script all'avvio della pagina impostava nei vari cami i dati della news (Autore.Text = RecSet("autore").value, ec...). Quando facevo click sul tasto "Modifica news" ovviamente la pagina si ricaricava e quindi riportava sui vari campi i dati originali della news, poi si avviava la sub x modificare i dati nel db che andava a prendere i valori dei vari campi (" & autore.text &", ecc..). Quindi la news restava inviariata, xchè appunto mi sostituiva i dati che avevo inserito io con quelli della news originaria...

Ho risolto mettendo:

IF Not Page.ISPostBack Then
' se la pagina non è stata inviata da un modulo
' metti i vari valori

End IF

A presto e grazie ancora di tutto! ;)

Salvatore

Salvatore Aranzulla

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.