Fórum Pegar valores de uma sqlquery #323557

16/06/2006

0

tenho a seguinte seleção...

Select COD_FUN, COD_EVENTO from TB_Ocor_Temp
Where COD_FUN = :PCodFun
Order By Evento

gostaria de pegar esses valores, e armazenar em algum lugar, ainda não sei onde mas talvez em um clientdataset e depois gostaria de fazer uma sub-seleção em outra tabela, onde tenho sub-ocorrências, com o parâmetro que foi retornado pela query acima, os códigos dos eventos que foram selecionados na tb_ocor_temp na tabela de bases, onde tenho a seguinte seleção em uma sqlquery

select COD_EVENTO, VAR_CALC, OPERACAO from tb_bases_at
where cod_evento = :PCodEvento
Order By Cod_evento

minha pergunta é a seguinte tem como eu retornar da 2º query dependendo claro do parametro que foi me retornado na 1º uma equação por exemplo: tenho meus registros como:

Evento VARCALC OPERACAO
001 e001 +
002 e002 +

Ao mesmo tempo tenho variáveis globais em meu sistema como e001 e e002 e x.

gostaria de fazer:

x := e001 + e002

para esclarecer, o e001 e e002 estão dentro da 2º query que foram selecionados apartir do parametro que foi retornado na query 1.

Sei que são várias perguntas mas obrigado por quem me responder.


Gtts

Gtts

Responder

Posts

16/06/2006

Gtts

sobe


Responder

Gostei + 0

16/06/2006

Adriano Santos

[b:178c78023e]gtts[/b:178c78023e] por gentileza queira consultar as regras de conduta.

[url=http://forum.clubedelphi.net/viewtopic.php?t=6689]Regras de Conduta[/url]

[quote:178c78023e=´2. Mensagens duplicadas´]
b. Nos casos em que uma dúvida não for respondida, em um primeiro momento, e perca visibilidade, saindo da primeira página, será permitido que o próprio usuário a responda, inserindo no corpo da mensagem a palavra Sobe, a fim de que a mesma volte para o início da lista. Esta prática deverá obedecer ao limite de 1 (uma) resposta por dia. Abusos poderão ser punidos com o bloqueio do tópico.
[/quote:178c78023e]


Responder

Gostei + 0

17/06/2006

Gtts

sobe


Responder

Gostei + 0

20/06/2006

Gtts

quase resolvido meu problema, estou com um filtro de dados armazenado em um clientdataset, tem como eu por exemplo atribuir os valores que tenho dentro do meu clientdataset para um array ? como posso fazer isso, lembrando que posso ter mais de um registro.

obrigado.


Responder

Gostei + 0

20/06/2006

Gtts

pessoal como que eu posso usar uma estrura de repetição onde eu tenha como incrementador o número de registro dentro da minha tabela.

por exemplo, tenho na minha tabela, 3 registros, precisava fazer algo do tipo.

begin
.
.
.

for i := 0 to cont - 1 do
begin
comandos....
end;
(incrementador) * não sei como proceder,
end;

Gostaria de executar o for enquanto eu tivesse registros na tabela.

obrigado a quem puder me ajudar.


Responder

Gostei + 0

20/06/2006

Adriano Santos

pessoal como que eu posso usar uma estrura de repetição onde eu tenha como incrementador o número de registro dentro da minha tabela. por exemplo, tenho na minha tabela, 3 registros, precisava fazer algo do tipo. begin . . . for i := 0 to cont - 1 do begin comandos.... end; (incrementador) * não sei como proceder, end; Gostaria de executar o for enquanto eu tivesse registros na tabela. obrigado a quem puder me ajudar.


Desculpe, mas porque FOR? Não pode usar While?

while not Tabela.EOF do
begin
  //Comandos
  Inc(Variavel);
end;


Explique exatamente o que precisa.


Responder

Gostei + 0

23/06/2006

Gtts

continuando o tópico, andei pesquisando na net, me deram idéia de resolver o meu problema com arrays, não sei se está correto, mas, vou colocar novamente meu problema com a idéia aperfeiçoada para um melhor entendimento.

vou tentar explicar o que preciso.

Uso um clientdataset para eventos (lançamentos) e um para bases (sub-eventos que formam os eventos) e suas funções por exemplo:

Evento – 001 (vencimentos)

Bases que formam o evento 001
- 002 (Hora extra) +
- 004 (Insalubridade) +

isso tudo está no meu banco de dados, vários lançamentos, sempre lembrando que os eventos podem e são formados por várias bases e não uma só

O meu problema é o seguinte tenho que ler a tabela de eventos e depois ainda ler a tabela de sub-eventos formando assim uma equação não esquecendo claro dos relacionamentos, cada evento com suas bases, onde tenho no meu sistema variáveis globais a quais vou atribuir os valores das equações exemplo: acima citei o evento 001 (vencimento) tenho no meu sistema a variável global “e001” onde depois da leitura das 2 tabelas ficará da seguinte forma:

E001 := 002 + 004

Quer dizer que meu evento 001 irá ser calculado utilizando os valores 002 + 004 claro que esses valores já estarão calculados em meu cálculo, então pegarei os valores, foi uma idéia que tive para deixar o cálculo dinâmico pois assim o usuário pode cadastrar as bases para cada evento mas aí surgiu o problema não consigo resolver isso agora.

Passos que utilizei:

Filtrei os dados nas duas tabelas: (indicadores – Eventos)
(bases – sub-eventos)


//filtro tabela de eventos
st := IntToStr(cod_fun_sis);
FormCadFuncionarios.cdsIndicadores.Filtered := False;
FormCadFuncionarios.cdsIndicadores.Filter := ´cod_fun = ´´´ + st + ´´´´;
FormCadFuncionarios.cdsIndicadores.Filtered := True;

//filtro na tabela de sub-eventos
St2 := ArrayEventos[0];
FormCadEventos.cdsBases.Filtered := False;
FormCadEventos.cdsBases.Filter := ´COD_EVENTO = ´´´ + st2 + ´´´´;
FormCadEventos.cdsBases.Filtered := True;

//Atribuição dos dados selecionados a arrays


//Array Eventos
with FormCadFuncionarios.cdsIndicadores do
begin
SetLength(ArrayEventos, RecordCount);
I := 0;
while not Eof do
begin
ArrayEventos[I] := FieldByName(´COD_EVENTO´).AsString;
I := I + 1;
Next;
end;
end;

//Array sub-eventos
with FormCadEventos.cdsBases do
begin
SetLength(ArrayEventos, RecordCount);
I := 0;
while not Eof do
begin
ArrayEventos[I] := FieldByName(´VAR_CALC´).AsString;
ArrayOperacoes[I] := FieldByName(´OPERACAO´).AsString;
I := I + 1;
Next;
end;
end;

Outro problema é que não sei se vai funcionar esta atribuição, mas... se alguém tiver outra idéia fico grato, obrigado!


Responder

Gostei + 0

23/06/2006

Gtts

continuando o tópico, andei pesquisando na net, me deram idéia de resolver o meu problema com arrays, não sei se está correto, mas, vou colocar novamente meu problema com a idéia aperfeiçoada para um melhor entendimento.

vou tentar explicar o que preciso.

Uso um clientdataset para eventos (lançamentos) e um para bases (sub-eventos que formam os eventos) e suas funções por exemplo:

Evento – 001 (vencimentos)

Bases que formam o evento 001
- 002 (Hora extra) +
- 004 (Insalubridade) +

isso tudo está no meu banco de dados, vários lançamentos, sempre lembrando que os eventos podem e são formados por várias bases e não uma só, (há um relacionamento mestre-detalhe entre as tabelas)

O meu problema é o seguinte tenho que ler a tabela de eventos e depois ainda ler a tabela de sub-eventos formando assim uma equação não esquecendo claro dos relacionamentos, cada evento com suas bases, onde tenho no meu sistema variáveis globais a quais vou atribuir os valores das equações exemplo: acima citei o evento 001 (vencimento) tenho no meu sistema a variável global “e001” onde depois da leitura das 2 tabelas ficará da seguinte forma:

E001 := 002 + 004

Quer dizer que meu evento 001 irá ser calculado utilizando os valores 002 + 004 claro que esses valores já estarão calculados em meu cálculo, então pegarei os valores, foi uma idéia que tive para deixar o cálculo dinâmico pois assim o usuário pode cadastrar as bases para cada evento mas aí surgiu o problema não consigo resolver isso agora.

Passos que utilizei:

Filtrei os dados nas duas tabelas: (indicadores – Eventos)
(bases – sub-eventos)


//filtro tabela de eventos
st := IntToStr(cod_fun_sis);
FormCadFuncionarios.cdsIndicadores.Filtered := False;
FormCadFuncionarios.cdsIndicadores.Filter := ´cod_fun = ´´´ + st + ´´´´;
FormCadFuncionarios.cdsIndicadores.Filtered := True;

//filtro na tabela de sub-eventos
St2 := ArrayEventos[0];
FormCadEventos.cdsBases.Filtered := False;
FormCadEventos.cdsBases.Filter := ´COD_EVENTO = ´´´ + st2 + ´´´´;
FormCadEventos.cdsBases.Filtered := True;

//Atribuição dos dados selecionados a arrays


//Array Eventos
with FormCadFuncionarios.cdsIndicadores do
begin
SetLength(ArrayEventos, RecordCount);
I := 0;
while not Eof do
begin
ArrayEventos[I] := FieldByName(´COD_EVENTO´).AsString;
I := I + 1;
Next;
end;
end;

//Array sub-eventos
with FormCadEventos.cdsBases do
begin
SetLength(ArrayEventos, RecordCount);
I := 0;
while not Eof do
begin
ArrayEventos[I] := FieldByName(´VAR_CALC´).AsString;
ArrayOperacoes[I] := FieldByName(´OPERACAO´).AsString;
I := I + 1;
Next;
end;
end;


será que não tem outra forma de resolver este problema ?

Usando sql, já que se trata de uma tabela mestre detalhe, o probela é que como posso trabalhar com os dados vindos da sqlquery ou do sqldataset ? ou usando array mesmo.

Outro problema é que não sei se vai funcionar esta atribuição, mas... se alguém tiver outra idéia fico grato, obrigado!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar