Fórum Não Inserir Registro Iguais no DbGrid - Open Dialog #598941
02/12/2018
0
Boa tarde!!!
Não estou conseguindo resolver um problema, tenho um dbgrid aonde eu insiro vários registros pelo opendialog,mas por exemplo, se eu esquecer de inserir 1 item, e ir para inserir de novo, e inserir um que já foi inserido anteriormente no dbgrid, vai inserir em duplicidade, preciso que inserira somente o que ainda não existe no dbgrid e mantém os que já estão no dbgrid
Veja na imagem como fica no dbgrid
https://uploaddeimagens.com.br/imagens/1-jpg-94f986e8-e523-41bc-a426-af9e829028c5
Código do botão Inserir
Não estou conseguindo resolver um problema, tenho um dbgrid aonde eu insiro vários registros pelo opendialog,mas por exemplo, se eu esquecer de inserir 1 item, e ir para inserir de novo, e inserir um que já foi inserido anteriormente no dbgrid, vai inserir em duplicidade, preciso que inserira somente o que ainda não existe no dbgrid e mantém os que já estão no dbgrid
Veja na imagem como fica no dbgrid
https://uploaddeimagens.com.br/imagens/1-jpg-94f986e8-e523-41bc-a426-af9e829028c5
Código do botão Inserir
procedure TfrmInserirArt.btnInserirArtClick(Sender: TObject);
var i: Integer;
Origem, Destino, caminho: string;
begin
if openDialogInserirArt.Execute then
for i := 0 to openDialogInserirArt.Files.Count - 1 do
begin
try
memTableInserirArt.Open;
memTableInserirArt.Append;
memTableInserirArt.FieldByName('ART_CODIGOOBRA').AsString := edtCodigo.Text;
memTableInserirArt.FieldByName('ART_NOME').AsString := ExtractFileName(openDialogInserirArt.Files[i]);
memTableInserirArt.FieldByName('ART_CAMINHO').AsString := ExtractFilePath(openDialogInserirArt.Files[i]);
memTableInserirArt.FieldByName('ART_DATA').AsString := mskdata.Text;
memTableInserirArt.FieldByName('ART_NOMECAMINHO').AsString := ExtractFilePath(openDialogInserirArt.Files[i]) + ExtractFileName(openDialogInserirArt.Files[i]);
memTableInserirArt.FieldByName('ART_DESTINO').AsString := 'C:\\SisEng\\Art\\CodigoObra\\' + memTableInserirArt.FieldByName('ART_CODIGOOBRA').AsString;
memTableInserirArt.FieldByName('ART_STATUS').AsString := 'FECHADO';
memTableInserirArt.FieldByName('ART_CAMINHORENOMEADO').AsString := memTableInserirArt.FieldByName('ART_DESTINO').AsString +'\\'+memTableInserirArt.FieldByName('ART_NOME').AsString;
memTableInserirArt.FieldByName('ART_NUMERO').AsString := edtNumeroArt.Text;
memTableInserirArt.FieldByName('ART_TIPO').AsString := 'CONSTRUTORA';
memTableInserirArt.Post;
except
on E: Exception do
begin
//memTableInserirArt.Cancel;
ShowMessage('Erro ao incluir o arquivo na tabela.' + sLineBreak +
E.Message);
end;
end;
end;
ShowMessage('Verifique,Caso haja ART[s] em Negrito, já foram inseridas!'+#13+'Favor Excluir!');
end;
Bruno Henrique
Curtir tópico
+ 0
Responder
Posts
03/12/2018
Natanael Ferreira
Tente utilizar o Locate para testar se é uma duplicidade:
procedure TfrmInserirArt.btnInserirArtClick(Sender: TObject);
var
i: Integer;
Origem, Destino, caminho: string;
begin
if openDialogInserirArt.Execute then
for i := 0 to openDialogInserirArt.Files.Count - 1 do
begin
try
memTableInserirArt.Open;
if not memTableInserirArt.Locate('ART_NOME', ExtractFileName(openDialogInserirArt.Files[i]),
[loCaseInsensitive]) then // Se não for duplicidade, insere novo registro
begin
memTableInserirArt.Append;
memTableInserirArt.FieldByName('ART_CODIGOOBRA').AsString := edtCodigo.Text;
memTableInserirArt.FieldByName('ART_NOME').AsString :=
ExtractFileName(openDialogInserirArt.Files[i]);
memTableInserirArt.FieldByName('ART_CAMINHO').AsString :=
ExtractFilePath(openDialogInserirArt.Files[i]);
memTableInserirArt.FieldByName('ART_DATA').AsString := mskdata.Text;
memTableInserirArt.FieldByName('ART_NOMECAMINHO').AsString :=
ExtractFilePath(openDialogInserirArt.Files[i]) +
ExtractFileName(openDialogInserirArt.Files[i]);
memTableInserirArt.FieldByName('ART_DESTINO').AsString := 'C:\\\\SisEng\\\\Art\\\\CodigoObra\\\\'
+ memTableInserirArt.FieldByName('ART_CODIGOOBRA').AsString;
memTableInserirArt.FieldByName('ART_STATUS').AsString := 'FECHADO';
memTableInserirArt.FieldByName('ART_CAMINHORENOMEADO').AsString :=
memTableInserirArt.FieldByName('ART_DESTINO').AsString + '\\\\' +
memTableInserirArt.FieldByName('ART_NOME').AsString;
memTableInserirArt.FieldByName('ART_NUMERO').AsString := edtNumeroArt.Text;
memTableInserirArt.FieldByName('ART_TIPO').AsString := 'CONSTRUTORA';
memTableInserirArt.Post;
end;
except
on E: Exception do
begin
// memTableInserirArt.Cancel;
ShowMessage('Erro ao incluir o arquivo na tabela.' + sLineBreak + E.Message);
end;
end;
end;
ShowMessage('Verifique,Caso haja ART[s] em Negrito, já foram inseridas!' + #13 +
'Favor Excluir!');
end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)