Inquiridor
Concurrency violation: the DeleteCommand affected 0 of the expected 1 records

Pergunta
-
Quando se apaga e introduz um registo na aplicação que desenvolvi dá o seguinte erro:
Concurrency violation: the DeleteCommand affected 0 of the expected 1 records
A aplicação tem o seguinte código:
para inicilazar as tabela num dataset coloco o seguinte:
sqlstrlinha = sqlstrlinha +
"bi.ref,bi.design,bi.qtt,bi.armazem,bi.fechada,bi.usrdata,bi.dataobra,bi.estab,bi.familia,gravadoonline,alteraoffline,u_fusox,"sqlstrlinha = sqlstrlinha +
"bi.usrhora,bi.usrinis,bi.datafecho,bi.u_forauso,bi.unidade,bi.u_obs,bi.u_fchx,tabiva,iva,edebito,ettdeb,u_embal,binum1,cpoc,uni2qtt,unidad2,designbox,u_numguia,usr5"sqlstrlinha = sqlstrlinha +
" from bi where bi.bostamp='" & Me.txtbostamp.Text & "'" 'Caso seja ficha de produção apresenta apenas as linhas em aberto If CInt(txtndos.Text) = 112 Or CInt(Me.txtndos.Text) = 118 Or CInt(Me.txtndos.Text) = 119 Thensqlstrlinha = sqlstrlinha +
"and bi.fechada=0" End Ifadaptbi =
New SqlDataAdapter(sqlstrlinha, cnn)adaptbi.FillSchema(ds, SchemaType.Mapped,
"BI") adaptbi.Fill(ds, "BI")Sendo o campo chave da tabela bistamp
para gravar faço:
dsalteracoes = ds.GetChanges
If (dsalteracoes.Tables("bi") Is Nothing) = False Thenadaptbi.Update(dsalteracoes.Tables(
"bi")) If cnn.State = ConnectionState.Open Thencnn.Close()
End Ifcnn.Open()
End If
Todas as Respostas
-
-
-
-
-
Fidalgo,
//-- Query que identifica todos os campos da tabela.
SqlDataAdapter da = new SqlDataAdapter("select * from BI");//-- Classe responsável pela criação do comando SQL correto para insert, update, delete
SqlCommandBuilder cb = new SqlCommandBuilder(da);cb.ConflictOption =
ConflictOption.OverwriteChanges; //-- Repare que aqui ele controla automaticamente o que vc alterou.da.Update(ds.Tables["BI"]);
Boa Sorte.