Fråga : SQLCommandBuilder - GetUpdateCommand, GetInsertCommand och GetDeleteCommand ifrågasätter

Ifrågasätta mig har en VB app 2005 som jag postade i mitt föregående, som skärmar 3 sätter in från enServer bordlägger i en DataGridView.  2 kolonner är där, men inte synligt, däribland det primärt stämm.  Fördriva det nedanfört kodifierar ”arbeten” så långt, som begå ändringarna i DataGridViewen kontrollera till databasen, när jag klickar räddningen knäppas, mig inte förstår why.  Jag såg CommandTexten för UpdateCommanden anmärker frambragt av den GetUpdateCommand metoden, och tag den var läslig, jag kunde inte berätta hur den fick parametrarna befolkade.  Jag också kunde inte berätta hur den skulle mellanläggs- eller borttagningsrekord men den verkade för class=" codeSnippet " för to.

1 för >
    

'Förklarat i ”en Globals” enhet:
Offentlig gdaMyDataAdapter som nya SqlDataAdapter
Offentligt gdtMyDataTable som nya DataTable

'Befolka rastret…,
Offentliga underPopulateGrid ()

Dunkel sSQL som stränger
Dunkel cn som nya SqlConnection (MyConnectionString)
cn. Öppna ()

sSQL = ”VALDA MyKey, col1, col2, col3, OtherKey FRÅN MyTable VAR OtherKey = 1234”,

Dunkel cmdSelect som nya SqlCommand (sSQL, cn)
gdaMyDataAdapter.SelectCommand = cmdSelect

'Inte sure jag behöver att göra dessa här eller, om de kämpar med de i ”räddning”,
Dunkla MyCommandBuilder som nya SqlCommandBuilder (gdaMyDataAdapter)
gdaMyDataAdapter.UpdateCommand = (riktiga) MyCommandBuilder.GetUpdateCommand,

(gdtMyDataTable) gdaMyDataAdapter.Fill,
MyDataGridView.DataSource = gdtMyDataTable

Avsluta suben

'Räddning.  Kallat av en knäppas klicka händelsetillvägagångssättet….,

Offentliga underGridSave ()

Dunkla MyCommandBuilder som nya SqlCommandBuilder (gdaMyDataAdapter)

MyCommandBuilder.GetUpdateCommand ()

'Nedanföra två appeller verkar för att göra INGENTING.
MyCommandBuilder.GetDeleteCommand ()
MyCommandBuilder.GetInsertCommand ()

'Som en testa, jag var kompetent till åsidosättande som CommandTexten för DataAdapter'sens UpdateCommand anmärker något liknande detta:
gdaMyDataAdapter.UpdateCommand.CommandText = ””,

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

Avsluta något liknande för >

I för att veta varför GetInsertCommanden och GetDeleteCommanden uppsättningen den motsvarande DataAdapteren inte befaller anmärker men GetUpdaten verkar för att täcka all den (mellanlägget/borttagnings/uppdateringen) när jag gör många ändringar via rastret med en singelappell (da. Uppdatering (avskiljare)). att gå för förmiddag för

Where I är att I-förmiddagen som den har besvärar att få uppdateringen för att sätta in något annat än OGILTIGT för ”OtherKey”.  MyKey är i det bakomliggande bordlägger, som en identitetskolonn och den är osynliga i rastret.  Jag har användaren att tillfoga ror direkt till rastret vid maskinskrivning värderar i col1, col2 och col3.  Jag har ”OtherKey” som lagras i en TextBox på Form1.  Jag skulle något liknande för att ha ”OtherKey” att vara osynlig i rastret och att få värdera från en variabel som var fastställd från textBoxen.  Ingen materia, hur jag tweak all UPPDATERINGEN som jag verkar för att vara kompetent att överföra mitt bordlägger är en oklar förmiddag för NULL.

If I, eller du behöver något mera info, behar l5At mig know.

Regards,
Eric
" klar "

Svar : SQLCommandBuilder - GetUpdateCommand, GetInsertCommand och GetDeleteCommand ifrågasätter

Först allra, detta fodrar är inte nödvändigt:

gdaMyDataAdapter.UpdateCommand = (riktig) MyCommandBuilder.GetUpdateCommand,

… som är, därför att SqlCommandBuilderen tar strömmen SelectCommand från DataAdapteren som passeras till den för att frambringa den required InsertCommanden, DeleteCommanden och UpdateCommanden.  Hänvisa till, ändringarna som göras insida som sedan DataAdapteren passerades by, CommandBuilderen är nu synlig till vila av programet.

Jämväl var efter inte nödvändig:

MyCommandBuilder.GetUpdateCommand ()

'Nedanföra två appeller verkar för att göra INGENTING.
MyCommandBuilder.GetDeleteCommand ()
MyCommandBuilder.GetInsertCommand ()

… för samma resonera.  Du passerar DataAdpateren till constructoren av CommandBuilderen, och alla av required befaller är automagically fastställd insida CommandBuilderen.

Andra lösningar  
 
programming4us programming4us