none
Concurrency violation: the DeleteCommand affected 0 of the expected 1 records RRS feed

  • 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:

     

    Dim sqlstrlinha As String = "select bi.bistamp,bi.bostamp,bi.oobistamp,bi.ndos,bi.nmdos,bi.obrano,bi.no,bi.nome,"

    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 Then

    sqlstrlinha = sqlstrlinha + "and bi.fechada=0"

    End If

    adaptbi = 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 Then

    adaptbi.Update(dsalteracoes.Tables("bi"))

    If cnn.State = ConnectionState.Open Then

    cnn.Close()

    End If

    cnn.Open()

    End If

     

     

    quarta-feira, 16 de janeiro de 2008 18:37

Todas as Respostas

  • Amigo,

     

    tente alterar a string de conexão com o seu banco de dados Access

     

    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ORIGEM_DO_ARQUIVO_MDB;Persist Security Info=True"

     

    Espero ter ajudado.

     

     

    quinta-feira, 17 de janeiro de 2008 12:09
  •  

    Eu estou a usar SQLEXPRESS

     

    Password=sa1;Persist Security Info=True;User ID=sa;Initial Catalog=dados;Data Source=work-hv-pc22\SQLEXPRESS

    quinta-feira, 17 de janeiro de 2008 14:32
  • Amigo,

     

    Todos os campo obrigatórios da tabela bi são preenchidos corretamente antes de efetuar a atualização?

     

     

     

    quinta-feira, 17 de janeiro de 2008 16:07
  • Sim, os campos estão todos preenchidos

     

     

    sexta-feira, 18 de janeiro de 2008 15:54
  • 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.

    sexta-feira, 15 de fevereiro de 2008 14:21