Fórum Problema com LOCATE dentro de um CDS #597716
08/10/2018
0
Na linha 27 do código que segue logo a baixo tem um LOCATE, a ideia é verificar dentro do CDS se o registro existe, se existir ele não entra no IF e segue para um EDIT , caso não o mesmo entra no IF e da um APPEND no CDS, nos dois casos é dado um POST. O detalhe é que em qualquer situação o LOCATE não encontra o registro dentro do CDS
while not FDREM_LerMovim.eof do
begin
UpdateStatus(''''Processando Venda/Cupom: ''''+formatfloat(''''######'''', FDREM_LerMovimM_NUMERO.value)+''''/''''+FDREM_LerMovimM_NUM_ECF.AsString, LbEstado);
Application.ProcessMessages;
FDREMLerProdsECF.Active := False;
FDREMLerProdsECF.ParamByName(''''chave'''').Value := FDREM_LerMovimM_CHAVE.Value;
FDREMLerProdsECF.Active := True;
FDREMLerProdsECF.first;
while not FDREMLerProdsECF.eof do
begin
// Irá verificar se o produto da ECF existe no Cadastro
if Verifica_Campo_Existe(''''CADPRODUTOS'''', ''''P_FIGURAR'''', ''''P_CODIGO'''', (trim(FDREMLerProdsECFI_CODPROD.AsString))) then
begin
if (FDVerifica.FieldByName(''''P_FIGURAR'''').Value = ''''S'''') then
begin
FDLerValProd.Active := False;
FDLerValProd.ParamByName(''''pv_codprod'''').Value := trim(FDREMLerProdsECFI_CODPROD.AsString) ;
FDLerValProd.Active := True;
FDLerValProd.First;
FDGrupoProds.Active := False;
FDGrupoProds.ParamByName(''''cod'''').Value := (FDREMLerProdsECFI_CODPROD.AsString);
FDGrupoProds.Active := True;
if not FDMemTable.Locate(''''CodProd;DescFixo'''', VarArrayOf([FDREMLerProdsECFI_CODPROD.Value, FDREMLerProdsECFI_DESC_FIXO.AsFloat]), []) then
begin
FDMemTable.Append;
FDMemTableGrupoProd.AsString := FDGrupoProdsP_GRUPO.AsString;
FDMemTableSubGrupoProd.AsString := FDGrupoProdsP_SUBGRUPO.AsString;
FDMemTableNomeProd.AsString := trim(FDGrupoProdsP_NOME.AsString);
FDMemTableCodProd.Value := FDREMLerProdsECFI_CODPROD.AsString;
FDMemTableDescFixo.Value := FDREMLerProdsECFI_DESC_FIXO.AsFloat;
FDMemTableValorUnit.Value := 0;
FDMemTableCusto.Value := FDLerValProdP_CUSTO.Value;
FDMemTableSaldo.Value := FDLerValProdSALDO_DISP.Value;
FDMemTableQuantidade.Value := 0;
FDMemTableValorTotal.Value := 0;
FDMemTable.post;
end;
FDMemTable.Edit;
FDMemTableQuantidade.Value := FDMemTableQuantidade.Value + FDREMLerProdsECFI_QUANTIDADE.Value;
FDMemTableValorTotal.Value := FDMemTableValorTotal.Value + (FDREMLerProdsECFI_QUANTIDADE.Value * (FDLerValProdP_VENDA.Value-
FDREMLerProdsECFI_DESC_FIXO.Value));
FDMemTableValorUnit.Value := FDMemTableValorTotal.Value / FDMemTableQuantidade.Value;
FDMemTable.Post;
end;
FDLerValProd.Active := False;
FDGrupoProds.Active := False;
end
else
begin
Application.MessageBox(pchar(''''O Produto ''''+IntToStr(StrToInt(trim(FDREMLerProdsECFI_CODPROD.AsString)))+'''' não está Cadastrado.''''+#13+'''' Nada foi Registrado!''''), ''''Aviso'''', MB_OK+MB_ICONINFORMATION);
DtMdl.FB_DataBase.RollbackRetaining;
UpdateStatus( ''''Importação não Realizada!'''',LbEstado);
Habilita_Botoes(True);
exit;
end;
FDREMLerProdsECF.next;
end;
FDREM_LerMovim.next;
end;
FDREMLerProdsECF.Active:=False;
Emanuel Gonçalves
Curtir tópico
+ 0
Responder
Posts
17/01/2019
Thalles Oliveira
Fala Emanual, tudo bem?
você não informa o parametro de busca [LoPartialKey,LoCaseInsensitive] ?
você não informa o parametro de busca [LoPartialKey,LoCaseInsensitive] ?
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)