Cuestión : Preguntas de SQLCommandBuilder - de GetUpdateCommand, de GetInsertCommand y de GetDeleteCommand

Pues me fijé en mi pregunta anterior tener un VB app 2005 que exhiba 3 campos de una tabla del SQL-Servidor en un DataGridView.  2 columnas son allí pero no visibles, incluyendo la llave primaria.  Mientras que el código below “trabaja” hasta confiar los cambios en el control de DataGridView a la base de datos cuando chasco el botón de ahorro, no entiendo por qué.  Miraba el CommandText para el objeto de UpdateCommand generado por el método de GetUpdateCommand y mientras que era legible, no podría decir cómo conseguía los parámetros poblados.  También no podría decir cómo insertaría o suprimiría expedientes pero parecía class= " lineNumbers " >
1 del >

    

'Declarado en un módulo de “Globals”:
gdaMyDataAdapter público como nuevo SqlDataAdapter
gdtMyDataTable público como nuevo DataTable

'Poblar la rejilla…
PopulateGrid secundario público ()

sSQL dévil como secuencia
NC dévil como nuevo SqlConnection (MyConnectionString)
NC. Abrirse ()

sSQL = “MyKey SELECTO, col1, col2, col3, OtherKey de MyTable DONDE OtherKey = 1234”

cmdSelect dévil como nuevo SqlCommand (sSQL, NC)
gdaMyDataAdapter.SelectCommand = cmdSelect

'Necesito no sure hacer éstos aquí o si están en conflicto con los que está en “excepto”
MyCommandBuilder dévil como nuevo SqlCommandBuilder (gdaMyDataAdapter)
gdaMyDataAdapter.UpdateCommand = MyCommandBuilder.GetUpdateCommand (verdades)

gdaMyDataAdapter.Fill (gdtMyDataTable)
MyDataGridView.DataSource = gdtMyDataTable

Submarino del extremo

'Excepto.  Llamado por un procedimiento del acontecimiento del tecleo del botón….

GridSave secundario público ()

MyCommandBuilder dévil como nuevo SqlCommandBuilder (gdaMyDataAdapter)

MyCommandBuilder.GetUpdateCommand ()

'Debajo de dos llamadas parecen no hacer NADA.
MyCommandBuilder.GetDeleteCommand ()
MyCommandBuilder.GetInsertCommand ()

'Como prueba, podía eliminar el CommandText para el objeto de UpdateCommand del DataAdapter como esto:
gdaMyDataAdapter.UpdateCommand.CommandText = los “pellizcos ”

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

El class= >

I del extremo Sub

Where que voy es que estoy teniendo apuro el conseguir de la actualización para insertar cualquier cosa con excepción de la FALTA DE INFORMACIÓN para “OtherKey”.  MyKey está en la tabla subyacente pues una columna y él de la identidad es invisibles en la rejilla.  Tengo el usuario agregar filas directo a la rejilla por valores que mecanografían en col1, col2 y col3.  Tengo “OtherKey” almacenado en un TextBox en Form1.  Quisiera hacer que “OtherKey” sea invisible en la rejilla y consiga el valor de una variable que fue fijada del TextBox.  No importa cómo pellizco la ACTUALIZACIÓN toda lo que parezco poder enviar mi tabla soy un NULL.

If soy confuso o usted necesita más Info, déjame por favor know.

Regards,
Eric
class= del

Respuesta : Preguntas de SQLCommandBuilder - de GetUpdateCommand, de GetInsertCommand y de GetDeleteCommand

En primer lugar, esta línea no es necesaria:

gdaMyDataAdapter.UpdateCommand = MyCommandBuilder.GetUpdateCommand (verdad)

… que es porque el SqlCommandBuilder toma el SelectCommand actual del DataAdapter que se pasa él para generar el InsertCommand, el DeleteCommand, y el UpdateCommand required.  Puesto que el DataAdapter fue pasado por la referencia, los cambios hicieron dentro del CommandBuilder son visibles ahora al resto del programa.

Asimismo los siguientes no son necesarios:

MyCommandBuilder.GetUpdateCommand ()

'Debajo de dos llamadas parecer no hacer NADA.
MyCommandBuilder.GetDeleteCommand ()
MyCommandBuilder.GetInsertCommand ()

… por la misma razón.  Usted pasa el DataAdpater al constructor del CommandBuilder, y todos los comandos required automagically se fijan dentro del CommandBuilder.

Otras soluciones  
 
programming4us programming4us