Questione : Domande di SQLCommandBuilder - di GetUpdateCommand, di GetInsertCommand e di GetDeleteCommand

Poichè lo ho inviato in mia domanda precedente avere un VB il app 2005 che visualizza 3 campi da una tabella dell'SQL-Assistente in un DataGridView.  2 colonne sono là ma visibili, compreso la chiave primaria.  Mentre il codice sotto “funziona„ fino a commettere i cambiamenti nel controllo di DataGridView alla base di dati quando scatto il tasto di risparmio, non capisco perché.  Ho esaminato il CommandText per l'oggetto di UpdateCommand generato con il metodo di GetUpdateCommand e mentre era leggibile, non potrei dire come stava ottenendo i parametri popolati.  Anche non potrei dire come avrebbe inserito o cancellato le annotazioni ma è sembrato class= " i lineNumbers " >
1 del >

    

'Dichiarato in un modulo “di Globals„:
gdaMyDataAdapter pubblico come nuovo SqlDataAdapter
gdtMyDataTable pubblico come nuovo DataTable

'Popolare la griglia…
PopulateGrid secondario pubblico ()

sSQL fioco come stringa
Cn fioco come nuovo SqlConnection (MyConnectionString)
cn. Aprir ()

sSQL = “MyKey PRESCELTO, col1, col2, col3, OtherKey da MyTable DOVE OtherKey = 1234„

cmdSelect fioco come nuovo SqlCommand (sSQL, cn)
gdaMyDataAdapter.SelectCommand = cmdSelect

'Non sure devo fare questi qui o se sono in conflitto con quei in “salvo„
MyCommandBuilder fioco come nuovo SqlCommandBuilder (gdaMyDataAdapter)
gdaMyDataAdapter.UpdateCommand = MyCommandBuilder.GetUpdateCommand (allineare)

gdaMyDataAdapter.Fill (gdtMyDataTable)
MyDataGridView.DataSource = gdtMyDataTable

Sommergibile dell'estremità

'Salvo.  Denominato da una procedura di evento di scatto del tasto….

GridSave secondario pubblico ()

MyCommandBuilder fioco come nuovo SqlCommandBuilder (gdaMyDataAdapter)

MyCommandBuilder.GetUpdateCommand ()

'Inferiore a due chiamate sembrano non fare NIENTE.
MyCommandBuilder.GetDeleteCommand ()
MyCommandBuilder.GetInsertCommand ()

'Come prova, potevo ignorare il CommandText per l'oggetto di UpdateCommand del DataAdapter come questo:
gdaMyDataAdapter.UpdateCommand.CommandText = “ritocchi „

iRows = gdaMyDataAdapter.Update (gdtMyDataTable)
gdtMyDataTable.AcceptChanges ()

Il class= >

I dell'estremità Sub

Where che sto andando è che sto avendo difficoltà convincere l'aggiornamento per inserire qualche cosa tranne la POSIZIONE DI SEGNALE MINIMO per “OtherKey„.  MyKey è nella tabella di fondo poichè una colonna ed esso di identità è invisibili nella griglia.  Faccio aggiungere all'utente le file direttamente alla griglia dai valori di battitura a macchina in col1, in col2 e in col3.  Ho “OtherKey„ immagazzinato in una casella di testo su Form1.  Vorrei fare “ottenere OtherKey„ essere invisibile nella griglia ed il valore da una variabile che è stata fissata dalla casella di testo.  Non importa come tweak l'AGGIORNAMENTO tutto che sembri potere trasmettere la mia tabella sia un NULL.

If sono poco chiaro o avete bisogno di altra Info, prego lasciatelo know.

Regards, il
Eric
class= del

Risposta : Domande di SQLCommandBuilder - di GetUpdateCommand, di GetInsertCommand e di GetDeleteCommand

In primo luogo, questa linea non è necessaria:

gdaMyDataAdapter.UpdateCommand = MyCommandBuilder.GetUpdateCommand (allineare)

… che è perché lo SqlCommandBuilder prende il SelectCommand corrente dal DataAdapter che è passato esso per generare il InsertCommand, il DeleteCommand e il UpdateCommand required.  Poiché il DataAdapter è stato passato da riferimento, i cambiamenti hanno fatto all'interno del CommandBuilder sono ora visibili al resto del programma.

Inoltre il seguenti non sono necessari:

MyCommandBuilder.GetUpdateCommand ()

'Inferiore a due chiamate sembrare non fare NIENTE.
MyCommandBuilder.GetDeleteCommand ()
MyCommandBuilder.GetInsertCommand ()

… per lo stesso motivo.  Passate il DataAdpater al costruttore del CommandBuilder e tutti ordini required automagically sono fissati all'interno del CommandBuilder.

Altre soluzioni  
 
programming4us programming4us