Vb.net - datagrid e update

venerdì 12 dicembre 2008 - 15.10

andreay2 Profilo | Newbie

ciao a tutti
sto sistemando un programma fatto con vb.net

e ho questo dubbio che non riesco a risolvere:

io ho questo codice con cui scrivo i dati di un access nella mia datagrid

------------------------------------

With dbAdaptr
'Populate(table)
SQLStr = "select * from tab_for"
.TableMappings.Add("Table", "listino")
cmd = New System.Data.OleDb.OleDbCommand(SQLStr, cn)
cmd.CommandType = CommandType.Text
.SelectCommand = cmd
.Fill(dsListini)
.Dispose()
End With

-----------------------------------

e fin qui tutto bene poi fatto questo devo salvare i dati modificati nella datagrid
quindi ho fatto questo codice:

---------------------------------------

With dbAdaptr
SQLStr = "UPDATE tab_for_art SET NOME_FORNITORE = @NOME_FORNITORE "
cmd = New System.Data.OleDb.OleDbCommand(SQLStr, cn)
cmd.CommandType = CommandType.Text
.UpdateCommand = cmd
.Update(dsListini.Tables("listino"))
dsListini.Clear()
End With

--------------------------------------

ora l'errore è nella query perchè se faccio la prova di assegnare al campo NOME_FORNITORE un valore fisso lo fa
es.
"UPDATE tab_for_art SET NOME_FORNITORE = '1'"

quindi cosa c'è di sbagliato
la @ prima del nome campo ho visto su internet che veniva usata per passare il valore del campo della tabella
o sbaglio??

alx_81 Profilo | Guru

>ciao a tutti
ciao e benvenuto su DotNetell.it!

>ora l'errore è nella query perchè se faccio la prova di assegnare
>al campo NOME_FORNITORE un valore fisso lo fa
>es.
>"UPDATE tab_for_art SET NOME_FORNITORE = '1'"
>
>quindi cosa c'è di sbagliato
>la @ prima del nome campo ho visto su internet che veniva usata
>per passare il valore del campo della tabella o sbaglio??
quel @parametro è un segnaposto. Devi andare a creare il parametro nel comando. Quindi devi creare un parametro nella tua collezione dei parametri dell'oggetto cmd:

OledbCommand.Parameters
http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.parameters.aspx
--

Alessandro Alpi | SQL Server MVP

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

andreay2 Profilo | Newbie

ciao alex, grazie x il benvenuto intanto
allora scusa se ti rompo un po

nel mio codice ho aggiunto
Imports System.Data.OleDb

poi ho dichiarato
Dim parameters() As OleDbParameterCollection

pi cosa intendi con
creare il parametro nel comando. Quindi devi creare un parametro nella tua collezione dei parametri dell'oggetto cmd:

se io inserisco questa istruzione
cmd.Parameters.Add(parameters) --> mi segnala che parameters è nulla, non ho capito in che modo assegno la @ o il ?
in parametres


alx_81 Profilo | Guru

>se io inserisco questa istruzione
>cmd.Parameters.Add(parameters) --> mi segnala che parameters
>è nulla, non ho capito in che modo assegno la @ o il ? in parametres
Ti faccio un esempio:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

--

Alessandro Alpi | SQL Server MVP

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

andreay2 Profilo | Newbie

no spetta un momento,
forse non mi sono spiegato bene e forse sto proprio sbagliando la logica del problema

quello che dovrei fare è, una volta modificato il campo della tabella col nuovo valore inserito da me nella datagrid

lanciare l'update dei dati sul db access


alx_81 Profilo | Guru

ok, ma il metodo è sempre quello. Solo che la griglia ti fornisce degli aiuti.
DataGrid o DataGridView? Windows Forms o Web Application?
--

Alessandro Alpi | SQL Server MVP

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

andreay2 Profilo | Newbie

ok
sto usando una datagrid su Windows Forms
quindi è corretta la mia logica,

solo che se io uso questa istruzione:


Cmd.Parameters.Add("p2", OleDbType.Integer).Value = Param2

lui a tutta la colonna nome_fornitore della griglia e dell'access mette il valore di param2
mentre io devo mettere quello che scrivo nella datagrid nella cella corrispondente

alx_81 Profilo | Guru

>lui a tutta la colonna nome_fornitore della griglia e dell'access
>mette il valore di param2
>mentre io devo mettere quello che scrivo nella datagrid nella
>cella corrispondente
Stai cercando di fare un normale editing in place con un datagrid su windows forms. Segui queste procedure e vedrai che non avrai alcun tipo di problema.

Qui c'è un esempio che fa un po' tutte le operazioni di modifica:
http://www.daniweb.com/forums/thread73529.html

Qui vedi anche come usare un binding diverso dal tuo
http://www.java2s.com/Code/CSharp/Database-ADO.net/DataGridUpdateeditatablebybindingcomponent.htm

Qui ti viene spiegato come si comporta il binding con la datagrid
http://msdn.microsoft.com/en-us/library/aa984099(VS.71).aspx



--

Alessandro Alpi | SQL Server MVP

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

andreay2 Profilo | Newbie

wee alex, guardando gli ultimi esempi che mi avevi postato sono riuscito a risolvere
il problema,
ho usato cmq il metodo con la query update set where...

mentre quello aggiornando il dataset non mi ha mai funzionato
es da.Update(dataSet1, "employee") perchè mi chiedeva un updatecommand valido ...

cmq io stavo modificando un programma col vb.net e non vb.2005 a cui te credo facessi riferimento
infatti le datagridview non ci sono neanche li ..
vabbe grazie x il tuo aiuto cmq!

alx_81 Profilo | Guru

>vabbe grazie x il tuo aiuto cmq!
se ritieni che ti abbia aiutato, accetta la risposta così chiudiamo il thread

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5