Problema com LOCATE dentro de um CDS

Delphi

08/10/2018

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

Emanuel Gonçalves

Curtidas 0

Respostas

Thalles Oliveira

Thalles Oliveira

08/10/2018

Fala Emanual, tudo bem?

você não informa o parametro de busca [LoPartialKey,LoCaseInsensitive] ?
GOSTEI 0
POSTAR