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]