Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cláudio César

Violação de concorrência: UpdateCommand afetou 0 dos registros 1 esper

Recommended Posts

Estou com esse erro... Vamos para as informações:

O banco de dados é o access, já estabeleci uma chave primária, o erro é: "Violação de concorrência: UpdateCommand afetou 0 dos registros 1 esperados." e eu estou querendo colocar a data e hora atual em um textbox, para na hora que o usuário registrar, a hora e data ir também... só que eu usei o timer, e dá certo no primeiro registro, no segundo já dá esse erro...

 

E, não conheço outro código que faça o mesmo serviço do 'timer' para substituir... sou inciante na área, alguém pode me ajudar? pfvr?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Edita pra mim, pra eu ver como vai ficar...

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void tabela_ponto_funcionariosBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.tabela_ponto_funcionariosBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.pontoDataSet);

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'pontoDataSet.tabela_ponto_funcionarios' table. You can move, or remove it, as needed.
            this.tabela_ponto_funcionariosTableAdapter.Fill(this.pontoDataSet.tabela_ponto_funcionarios);

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            textBox1.Text = DateTime.Now.ToString();
        }
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso não é um método Cláudio, o DateTime retorna uma string.

 

No seu caso deve ser assim:

 

 private void textBox1_TextChanged(object sender, EventArgs e) { textBox1.Text = System.DateTime.Now.ToString(); }

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui fazer alguns cadastros, mais as vezes o erro retorna. E o horário fica parado, ele só atualiza se você for nele, então no caso se eu abrir o programa agora, e fizer um cadastro daqui 10 minutos, ele vai registrar com o horário que estava... eu vou fazer o seguinte, eu vou deixar o access de lado, já estou instalando o sql server.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa escolha, mas se você quiser atualizar a hora sempre, ai você precisará de um timer

e esse código que o nosso amigo Khaos te passou tem que estar dentro do timer

e o timer precisa ser startado no inicio do programa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O DateTime pega a hora do sistema do seu computador, a não ser que nele sua hora não passe então não tem porque usar o timer pra isso, de qualquer forma, violação de concorrencia é erro de query de banco de dados, você tem certeza de que seus campos estão com os tipos de dados certos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O DateTime pega a hora do sistema do seu computador, a não ser que nele sua hora não passe então não tem porque usar o timer pra isso, de qualquer forma, violação de concorrencia é erro de query de banco de dados, você tem certeza de que seus campos estão com os tipos de dados certos?

 

Khaos você não esta entendendo o que ele quer fazer.

 

Ele não quer que a hora seja gerada quando clicar no botão, e sim que a hora seja gerada a cada minuto, e quando clicar no botão recuperar a hora atual no TextBox. E para isso ele necessita do timer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim cara eu entendi o que ele quer fazer, mas porque ele quer usar o timer se, sempre que ele gera um horário, ele usa o system.Datetime.Now? Dá na mesma, se ele gerar uma hora nova a cada minuto e pegar essa hora que ele gerou é a mesma coisa que a você pegar a hora direto do sistema sem precisar gerar a cada minuto uma cópia dela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu não usar o timer, as horas ficam paradas. Se eu abrir o programa agora, ficar cinco minutos com ele aberto, o programa vai continuar no mesmo horário(5 minutos atrasado) a não ser que eu atualize o programa, aí o registro que será feito do banco de dados é com o horário atrasado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então como é que ele atrasa? A não ser que seu computador não conte nenhuma hora não tem como o sistema atrasar, se para cada vez que você clicar no botão ele pegar o DateTime.Now ele sempre vai pegar a hora do sistema e nunca vai ficar atrasado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.