Erro: Informações insuficientes ou incorretas sobre a coluna, de chave, muitas linhas foram afetadas pela atualização.

27/05/2021

0

Boa tarde, Tenho um botão com o código abaixo, funciona como esperado mas quando vou excluir a linha ou alterar me da a menssagem de erro acima.
Estou usando:
01 - ADOConection
01 - ADOTable
01 - ADODataSource
01 - DBGrid.
Varios DBEdits


Código:
procedure TForm1.Button9Click(Sender: TObject);
var
    i,J,iTot: Integer;
    registro: array of variant;
begin
    iTot := StrToIntDef(DBEdit2.Text,0); // configura o tamanho do array [Linhas] com o número de campos da tabela
    SetLength(registro, ADOTable1.FieldCount); // grava o conteúdo do registro posicionado, de onde serão feitas as cópias
    for J := 0 to ADOTable1.FieldCount-1 do
        registro[J] := ADOTable1.Fields[J].Value;
    for I := 1 to iTot do
    begin
        ADOTable1.Append; //  cria um registro em branco
        for J := 1 to High(registro) do // recupera os valores do array ''''registro''''
          if (J = 1) then
              ADOTable1.Fields[J].AsInteger := registro[J]//Incremento do Tombamento
        else
        ADOTable1.Fields[J].Value := registro[J];//Demais campos
        ADOTable1.edit;
        ADOTable1.Post;
    end;
    ADOTable1.Close;
    ADOTable1.Open;
end;



Fico grato se puderem me ajudar.
Huemersonfmg

Huemersonfmg

Responder

Posts

07/06/2021

Huemersonfmg

Boa tarde, Tenho um botão com o código abaixo, funciona como esperado mas quando vou excluir a linha ou alterar me da a menssagem de erro acima.
Estou usando:
01 - ADOConection
01 - ADOTable
01 - ADODataSource
01 - DBGrid.
Varios DBEdits


Código:
procedure TForm1.Button9Click(Sender: TObject);
var
    i,J,iTot: Integer;
    registro: array of variant;
begin
    iTot := StrToIntDef(DBEdit2.Text,0); // configura o tamanho do array [Linhas] com o número de campos da tabela
    SetLength(registro, ADOTable1.FieldCount); // grava o conteúdo do registro posicionado, de onde serão feitas as cópias
    for J := 0 to ADOTable1.FieldCount-1 do
        registro[J] := ADOTable1.Fields[J].Value;
    for I := 1 to iTot do
    begin
        ADOTable1.Append; //  cria um registro em branco
        for J := 1 to High(registro) do // recupera os valores do array ''''registro''''
          if (J = 1) then
              ADOTable1.Fields[J].AsInteger := registro[J]//Incremento do Tombamento
        else
        ADOTable1.Fields[J].Value := registro[J];//Demais campos
        ADOTable1.edit;
        ADOTable1.Post;
    end;
    ADOTable1.Close;
    ADOTable1.Open;
end;



Fico grato se puderem me ajudar.




Boa noite, consegui encontrar o problema, na hora de setar a número de auto incremento, estava travando, eu tirei o mesmo e estou inserindo manualmente então parou de travar.

Oblrigado.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar