Use através de Selects, Inserts e Updates.. assim fica lento..

Aconselho usar o componente dddbxfacil do sourceforge, facilita muito a
vida!

2009/5/13 stainle2003 <stainle2...@yahoo.com.br>

>
>
> Boa Tarde, novamente pedindo ajuda.
> Estou gradativamente mudando meu sistema de BDE para Multicamadas, portando
> deixo de usar Query para usar ClientDataSet acessando a máquina que tem o
> BSS, o que acontece:
> Preciso fazer Lookup e sei que fica lento, então na Query(BDE) em
> OnCalcFields eu uso uma função que Seleciona(select * from ...) UMA dentre 4
> chaves(00211001, 00211***, 0021****, 002*****), por exemplo, de uma tabela
> para que eu ache um valor para calcular o Preço Líquido por exemplo da
> tabela principal; acontece que no BDE(query) funciona com uma velocidade até
> que razoável, mas ao mudar para o ClientDataSet, fica uma calamidade, até
> mudei a função chamada no OnCalcFields para ao invés de SQL eu passei a usar
> da forma abaixo, mas mesmo assim não me alegrou, será que vou ter que
> continuar a usar o BDE, neste caso ???
> procedure TDados.ver_desconto;
> var
> wscodigo : string;
> begin
> wscodigo := Dados.CDSEstCodes.Value;
>
> Dados.CDSDes.Close;
> Dados.CDSDes.IndexName := 'DEFAULT_ORDER';
> Dados.CDSDes.Open;
> Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca';
> Dados.CDSDes.SetKey;
> Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3));
> Dados.CDSDesGrupo_Ini.AsString := copy(wscodigo, 5, 1);
> Dados.CDSDesSub_Ini.AsString := copy(wscodigo, 6, 1);
> Dados.CDSDesNropeca.AsString := copy(wscodigo, 8, 3);
> if Dados.CDSDes.GotoKey then
> begin
> Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value;
> exit;
> end;
> Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca';
> Dados.CDSDes.SetKey;
> Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3));
> Dados.CDSDesGrupo_Ini.AsString := copy(wscodigo, 5, 1);
> Dados.CDSDesSub_Ini.AsString := copy(wscodigo, 6, 1);
> Dados.CDSDesNropeca.AsString := '***';
> if Dados.CDSDes.GotoKey then
> begin
> Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value;
> exit;
> end;
> Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca';
> Dados.CDSDes.SetKey;
> Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3));
> Dados.CDSDesGrupo_Ini.AsString := copy(wscodigo, 5, 1);
> Dados.CDSDesSub_Ini.AsString := '*';
> Dados.CDSDesNropeca.AsString := '***';
> if Dados.CDSDes.GotoKey then
> begin
> Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value;
> exit;
> end;
> Dados.CDSDes.IndexFieldNames := 'nrolinha;grupo_ini;sub_ini;nropeca';
> Dados.CDSDes.SetKey;
> Dados.CDSDesNrolinha.Value := StrToInt(copy(wscodigo, 1, 3));
> Dados.CDSDesGrupo_Ini.AsString := '*';
> Dados.CDSDesSub_Ini.AsString := '*';
> Dados.CDSDesNropeca.AsString := '***';
> if Dados.CDSDes.GotoKey then
> begin
> Dados.CDSEstDesconto.Value := Dados.CDSDesDesco05.Value;
> end;
>
> end;
>
> procedure TDados.CDSEstCalcFields(DataSet: TDataSet);
> begin
> ver_desconto();
> Dados.CDSEstLiquido.Value := Dados.CDSEstPv1.Value * (1 -
> Dados.CDSEstDesconto.Value / 100);
> end;
>
> procedure TDados.CDSDesBeforeOpen(DataSet: TDataSet);
> begin
> Dados.CDSDes.IndexName := 'DEFAULT_ORDER';
> end;
> grato
> Stainle
>
>  
>



-- 
Márcio F. Cruz


[As partes desta mensagem que não continham texto foram removidas]

Responder a