Fórum 0 record(s) updated. Only one re... (Zeos, Delphi 2010 e MySQL) #482307
11/06/2014
0
Olá pessoa. Estou com um problema chato no Delphi 2010.
Uso: Delphi 2010, MySQL 5.1, ZeosLib 7.
Estou importando dados de um arquivo txt, contendo por exemplo registros de dados de clientes.
Eu preciso volta e meia estar lendo esse txt e verificar se cada registro lido tem ou não no banco de dados. Se não tem insere, se tem aplica um update.
Acontece que quando tenho uma linha que não sofreu nenhuma alteração, retorna este erro "0 record(s) updated. Only one record should have been updated".
Já analisei todas as configurações.Tenho uma outra aplicação Firebird 2.1 que é semelhante e não tenho problemas.
Segue código que gera o erro:
Nao usei "insert into" ou "update table" por que assim fica mais fácil pra manutenção.
Depurando, o delphi ele aponta para esta linha: "if (lValidateUpdateCount) and (lUpdateCount <> 1 ) then" da unit "ZDbcGenericResolver".
Me parece que nesta forma de uso, se não tiver nehum registro atualizado ele retorna este erro.
Alguém tem uma ideia do que pode ser?
Uso: Delphi 2010, MySQL 5.1, ZeosLib 7.
Estou importando dados de um arquivo txt, contendo por exemplo registros de dados de clientes.
Eu preciso volta e meia estar lendo esse txt e verificar se cada registro lido tem ou não no banco de dados. Se não tem insere, se tem aplica um update.
Acontece que quando tenho uma linha que não sofreu nenhuma alteração, retorna este erro "0 record(s) updated. Only one record should have been updated".
Já analisei todas as configurações.Tenho uma outra aplicação Firebird 2.1 que é semelhante e não tenho problemas.
Segue código que gera o erro:
with dm.qrMiniMain do
begin
dm.qrMiniMain.Close;
SQL.Text:='select * from pessoa where id='+TxtCliente[1]; //Insere o mesmo ID vindo da retafguarda
Open;
if IsEmpty then
begin
Insert;
FieldByName('ID').AsInteger := PegaInteiro(TxtCliente[1]);
end
else
begin
Edit;
end;
FieldByName('ID_SITUACAO_PESSOA').AsString := '1';
FieldByName('NOME').AsString := PegaTexto(TxtCliente[2],150);
FieldByName('FANTASIA').AsString := PegaTexto(TxtCliente[3],150);
FieldByName('EMAIL').AsString := PegaTexto(TxtCliente[4],250);
FieldByName('CLIENTE').AsString := 'S'; //Sim, é cliente
FieldByName('TIPO').AsString := TxtCliente[5];
if TxtCliente[5]='F' then
begin //Fisica
FieldByName('RG').AsString := PegaTexto(TxtCliente[7],20);
FieldByName('ORGAO_RG').AsString := PegaTexto(TxtCliente[8],20);
FieldByName('SEXO').AsString := TxtCliente[10];
FieldByName('DATA_EMISSAO_RG').AsDateTime := PegaData(TxtCliente[9]);
end
else
begin //Juridica
FieldByName('CPF_CNPJ').AsString := SoNumero(TxtCliente[6]);
FieldByName('INSCRICAO_ESTADUAL').AsString := PegaTexto(TxtCliente[7],30);
//FieldByName('INSCRICAO_MUNICIPAL').AsString := TxtCliente[0];
end;
FieldByName('FONE1').AsString := PegaTexto(SoNumero(TxtCliente[21]),10 );
FieldByName('FONE2').AsString := PegaTexto(SoNumero(TxtCliente[22]),10 );
FieldByName('CELULAR').AsString := PegaTexto(SoNumero(TxtCliente[23]),10 );
FieldByName('DATA_CADASTRO').AsDateTime := PegaData(TxtCliente[11]);
dm.qrMiniMain.Post;
dm.ConnMINI.Commit;
end;
Nao usei "insert into" ou "update table" por que assim fica mais fácil pra manutenção.
Depurando, o delphi ele aponta para esta linha: "if (lValidateUpdateCount) and (lUpdateCount <> 1 ) then" da unit "ZDbcGenericResolver".
Me parece que nesta forma de uso, se não tiver nehum registro atualizado ele retorna este erro.
Alguém tem uma ideia do que pode ser?
Maicon Saraiva
Curtir tópico
+ 0
Responder
Posts
11/06/2014
Maicon Saraiva
Resolvi pessoal.
Na linha 27: "FieldByName('DATA_EMISSAO_RG').AsDateTime := PegaData(TxtCliente[9]);" a função PegaData não retornava nehum valor quando não tinha nada no TXT, tive que colocar pra trazer Null, ficando: "FieldByName('DATA_EMISSAO_RG').Value := PegaData(TxtCliente[9]);"
Na linha 27: "FieldByName('DATA_EMISSAO_RG').AsDateTime := PegaData(TxtCliente[9]);" a função PegaData não retornava nehum valor quando não tinha nada no TXT, tive que colocar pra trazer Null, ficando: "FieldByName('DATA_EMISSAO_RG').Value := PegaData(TxtCliente[9]);"
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)