Fórum Firebird - Como realizar vários UPDATEs com um único comando? #415529

17/04/2012

0

Estou desenvolvendo uma aplicação em C# e utilizava MySql. Com o Mysql eu conseguia realizar a atualização de várias linhas de uma tabela ao mesmo tempo, em um único comando. No Firebird(2.5) isso não tá funcionando:

            string[] Documento;
            int tamanho = dataGridView1.Rows.Count;
            Documento = new string[tamanho];
            for (linha = 0; linha <= tamanho - 1; linha++)
            {
                string check = dataGridView1.Rows[linha].Cells[0].Value.ToString();
                Documento[linha] = dataGridView1.Rows[linha].Cells[1].Value.ToString();
                if (check == 1)
                {                    
                    string UPDATE = UPDATE tbl_crediario SET Data_Pgto_Mov =  + dataPgto + , Situacao_Mov = 0 WHERE Cod_Mov =  + Documento[linha]+ ; ;                   
                    BaixaEmValores += UPDATE;                    
                }
            }


Ou seja, preciso atualizar a tabela, de uma única vez, em todas as linhas assinaladas pelo usuário.
O que tá faltando pra isso funcionar?

Alguém poderia me dar uma luz?

Obrigado.
Igor Bernardes

Igor Bernardes

Responder

Posts

17/04/2012

Joel Rodrigues

Certo, e qual está sendo exatamente o problema?
Em que momento você executa esse comando?
Responder

Gostei + 0

17/04/2012

Anderson

Antes de executar o comando, pega a instrução SQL já pronta, copia e cola em um utilitário (Flamerobin, IBExpert, ...) para checar a sintaxe e verificar o funcionamento. Revise também a parte de comitar os dados (fechar a transação).


Abraços,

Anderson:.
Responder

Gostei + 0

18/04/2012

Igor Bernardes

Bom, pessoal... descobri que o problema pode ser resolvido via C# mesmo, bastou colocar o comando UPDATE dentro do laço for. Deu tudo certo. Sei que não é o lugar certo para isso, pois o assunto aqui é o Firebird, mas segue abaixo o código em C# que utilizei, caso seja útil para alguém.

Abraço.

 string[] Documento;
 int tamanho = dataGridView1.Rows.Count;
 Documento = new string[tamanho];
 for (linha = 0; linha <= tamanho - 1; linha++)
 {
    string check = dataGridView1.Rows[linha].Cells[0].Value.ToString();
    Documento[linha] = dataGridView1.Rows[linha].Cells[1].Value.ToString();
    if (check == 1)
    {
        string UPDATE = UPDATE tbl_crediario SET Data_Pgto_Mov = @dataPgto, Situacao_Mov = 0 WHERE Cod_Mov = @doc;
        Conexao conexao = new Conexao();
        FbConnection conn = new FbConnection(conexao.Connstring);
        conn.Open();
        FbCommand comandoBaixa = new FbCommand(UPDATE, conn);
        comandoBaixa.Parameters.AddWithValue(@dataPgto, dataPgto);
        comandoBaixa.Parameters.AddWithValue(@doc, Documento[linha]);
        comandoBaixa.ExecuteNonQuery();
        conn.Close();
        UPDATE = ;
    }
 }
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar