Jump to content
Fórum Script Brasil
  • 0

(resolvido) Relatório Mestre/detalhe Com Adoquery


Vivendo&Aprendendo
 Share

Question

Olá pessoal...

Seguinte, tenho na minha aplicação alguns relatórios em QuickReport onde utilizo a forma Mestre Detalhe para faze-los, mas o problema é o seguinte, preciso fazer esses relatórios utilizando componentes AdoQuery e não AdoTable ou Tables, preciso da propriedade SQL para efetuar as consultas.

Alguém ai poderia me ajudar a criar eles com AdoQuery ou me informar uma outra possibilidade de fazer essews relatórios?

Agradeço...

Alexandre

Edited by Vivendo&Aprendendo
Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0
(...) mas o problema é o seguinte, preciso fazer esses relatórios utilizando componentes AdoQuery e não AdoTable ou Tables, preciso da propriedade SQL para efetuar as consultas.

Alguém ai poderia me ajudar a criar eles com AdoQuery ou me informar uma outra possibilidade de fazer essews relatórios?

Vivendo&Aprendendo, já que ADOTable, Table ou ADOQuery são todos datasets, acho então, que o seu problema é com a construção das instruções SQL, não seria isto?

Em termos de relatório nada muda. O quickreport sempre vai mostrar os dados de acordo com o dataset vinculado a ele.

Link to comment
Share on other sites

  • 0

Ok Micheus...

Mas eu preciso vincular as duas tabela (no meu caso Saidas e ItensSaidas - Access), uma com a outra pelas propriedades: MasterSource, MasterField. E no AdoQuery não possui essas propriedades.

Essa é a minha dúvida, como utilizar o AdoQuery para fazer esse vinculo.

A minha SQL para a consulta é a seguinte:

DmDados.Saidas.Close;
      DmDados.Saidas.SQL.Clear;
      DmDados.Saidas.SQL.Add('Select * From Saidas');
      DmDados.Saidas.SQL.Add('Where Cliente Like :pCli');
      DmDados.Saidas.SQL.Add('Order By Codigo');
      DmDados.Saidas.Parameters[0].Value := EdtBusca.Text + '%';
      DmDados.Saidas.Open;

Onde DmDados é o Data Module, Saidas é a tabela.

Alexandre

Link to comment
Share on other sites

  • 0
Mas eu preciso vincular as duas tabela (no meu caso Saidas e ItensSaidas - Access), uma com a outra pelas propriedades: MasterSource, MasterField. E no AdoQuery não possui essas propriedades.
Vivendo&Aprendendo, voce pode utilizar o mesmo conceito da sua consulta - parametrização.

Na tabela ItensSaida (Detail), você parametriza (filtra na where) o campo de ligação com Saidas. Algo assim:

select *
from ItensSaida
where CodSaida = :CodSaida

depois você vincula ela via propriedade DataSource ao seu ADOQuery Saidas (Master). Importante você utilizar o nome do parâmetro igual ao nome do campo na tabela Master. Do contrário não funciona.

Mas como você perceberá, o conceito é exatamente o mesmo de "MasterSource, MasterField".

Vai uma dica: NUNCA utilize o * na cláusula SELECT, a menos que você realmente queira retornar todos os campos da sua tabela. Imagine você precisar de uns 5 campos de uma tabela com uns 30, sendo muitos deles varchar, e tendo a tabela centenas de registros. :blink:

Voce vai fazer trafegar na rede mais informação do que seria necessário, então para piorar (nem tanto), coloque ai umas 20 maquinas fazendo este tipo de consulta.

Link to comment
Share on other sites

  • 0

Olá Micheus...

Me desculpa o encomodo ai de novo cara, mas não consegui fazer, tentei de várias formas, mas não da certo.

Agora abusando da sua boa vontade, teria como você cria um modelo de mestre detalhe com AdoQuery pra e me enviar cara?

É um relatório de saídas onde tenho que separar as comprar por cliente.

Sem mais....

Abraços

Alexandre

Link to comment
Share on other sites

  • 0

Vivendo&Aprendendo, veja se com este exemplo (bem simples) você (e quem mais se interessar) entende o que eu quis explicar lá no post #4.

O exemplo não é um relatório, é em form com 3 DBGrid's cascateados (Cliente -> Saídas -> Itens de Saída).

Voce vai ver que praticamente não há código, tem comentários na tela e basta que você clique em qualquer linha dos DBGrid's para que os DBGrid's dependentes sejam atualizados - isto é resultado da ligação via DataSource e uso de parametrização!

Para montar o relatório, você não deverá ter qualquer dificuldade, já que o procedimento é similar, exceto que ao invés de DBGrid's, você terá bandas.

Supondo uma consulta onde você traga as Saídas, esta ficaria "vinculada" a banda Detail, e os itens da Saída a uma banda SubDetail; (seria como visualizar o que ocorre na tela como a 2ª e 3ª consulta nos DBGrids).

p.s. Evite criar post's "nulos" como os dois últimos que você postou - podem ser considerados UP's e isto é proibido no forum (ver regras) ;)

ADO_Mestre_Detalhe.zip

Link to comment
Share on other sites

  • 0

Ae pessoal

Consegui fazer o relatório metre/detalhe, da seguinte forma:

Uma bando como RbDetail, contendo os dados das Saídas;

Um QrSubDetail, contendo os dados dos Itens de Saídas;

Um QrSubDetail, contendo o valor total da Saída;

Um AdoQuery para a tabela de Saídas;

Um AdoTable para a tabela de Itens Saídas;

Conectei os dois pelas propriedades MasterSource e MasterField do AdoTable;

O QrSubDetail dos itens na propriedade DataSet linquei ele com o AdoTable

E o QrSubDetail do valor das saídas linquei com o AdoQuey;

Funciona certinho, mas a primeira consulta que faço ele joga todas as vendas como se fosse somente uma e depois vai agrupando por cliente certinho, e as próximas consultas que faço ele já faz tudo certo.

O que pode ser?

Alexandre

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...