Impossibile aggiungere la quantità di dati desiderata. Inserire o inco...

martedì 06 settembre 2011 - 19.16

osgb Profilo | Newbie

Il titolo è il messaggio di errorre che mi esce.

Devo aggiungere un record in un database access da un form asp.net.
Nel file separato ho inserito:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
...
Dim conDb As OleDbConnection
Dim strSql As String
Dim cmdSql As OleDbCommand

conDb = New OleDbConnection("PROVIDER=Microsoft.JET.OleDb.4.0; Data source=" & Server.MapPath("~/app_data/DatiSito.mdb"))
strSql = "INSERT INTO Avvisi (DataScad,VisuaData,TitoloNews,IMGNews,TestoNews,AutoreNews,DataIns) VALUES (?,?,?,?,?,?,?)"
cmdSql = New OleDbCommand(strSql, conDb)
cmdSql.Parameters.Add("@DataScad", NewsScade.Text) 'è una data in formato breve (es. 22/12/2010)
cmdSql.Parameters.Add("@VisuaData", VistaData) 'è un testo
cmdSql.Parameters.Add("@TitoloNews", NTitolo) 'è un testo
cmdSql.Parameters.Add("@IMGNews", ImmagineN) 'è un testo
cmdSql.Parameters.Add("@TestoNews", NTesto) 'è un memo
cmdSql.Parameters.Add("@AutoreNews", Autore) 'è un testo
cmdSql.Parameters.Add("@DataIns", dtmDate) 'è una data estesa con orario (es. 22/12/2010 15.45.58)
conDb.Open()
cmdSql.ExecuteNonQuery()
conDb.Close()

Response.Redirect("~/Default.aspx", True)

Else

Response.Redirect("~/ModuloNonCompilato.aspx", True)

End If
...
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Qualcuno saprebbe dirmi dove sbaglio, grazie mille.

Gho5t Profilo | Junior Member

Ciao,
non sono un grande esperto ma da quando mi risulta il codice va bene, ora l'unico potrebbe dipendere dalla lunghezza delle stringhe che vuoi inserire nel Db.
Se nel Db hai dichiarato un campo testo come varchar(255) e provi ad inserire una stringa con più di 255 caratteri allora va in errore.
Oppure è la data che non è stata correntemente controllata.
Se un uomo non è disposto a correre qualche rischio per le sue idee, o le sue idee non valgono nulla o non vale nulla lui

osgb Profilo | Newbie

Grazie. Deve essere un problema di date perchè escludendole funziona. Non è che vanno messe tra # ?
Altra cosa perchè Visual Web Developer 2010 mi dice che Parameters.Add è obsoleto?

alx_81 Profilo | Guru

>Grazie. Deve essere un problema di date perchè escludendole funziona.
>Non è che vanno messe tra # ?
>Altra cosa perchè Visual Web Developer 2010 mi dice che Parameters.Add
>è obsoleto?
Ciao,
sì, usa la AddWithValue invece della normale Add.
detto questo, prova a stampare a video il comando SQL che generi.. così puoi capire l'effettivo comando che viene passato al db.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

osgb Profilo | Newbie

Ho cambiato con AddWithValue e va meglio, ma l'errore della pagina è uguale.
Per stampare a video intendi response.write? Ma cosa esattamente?

Una cosa mi chiedo, siccome arrivo da asp normale e lì dovevo usare caratteri diversi in base al tipo di record (es. per una data dovevo mettere #...# e per una stringa "..."), come fa asp.net a sapere che tipo è se metto in tutti i record
Parameters.Add("@nome",nome)
Non è la stessa cosa? Non so se mi sono spiegato...

osgb Profilo | Newbie

Ho capito come stampare a video. Vedevo i dati corretti, poi mi sono accorto che inserivo una data quando nel database avevo già impostato come default il valore now(). Tolto quello funziona.

Grazie a tutti comunque.

alx_81 Profilo | Guru

>Per stampare a video intendi response.write? Ma cosa esattamente?
sì, intendevo quello scusami ma ero in viaggio e non riuscivo a risponderti..

>Una cosa mi chiedo, siccome arrivo da asp normale e lì dovevo
>usare caratteri diversi in base al tipo di record (es. per una
>data dovevo mettere #...# e per una stringa "..."), come fa asp.net
>a sapere che tipo è se metto in tutti i record Parameters.Add("@nome",nome)
>Non è la stessa cosa? Non so se mi sono spiegato...
la addwithvalue capisce il tipo che passi dal tipo della variabile. Se passi un datetime, lui usa un datetime.. ecc.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5