Fórum Relatórios com Interbase e Quick #42328

13/02/2004

0

Dúvidas sobre confeccionar relatórios com INTERBASE E QUICK REPORT, para tanto tento descrever minha dúvida sobre Delphi logo abaixo:


Material em Uso:

Delphi 6 Enterprise;

Interbase 6.0.2;

Banco de dados .GDB;

Quick Report que acompanha o mesmo;

SQLConnect + SQLDataSet + DataSetProvider + ClientDataSet





Estou tentando desenvolver um sistema de cadastro de clientes, onde eu uso o trio SQLDataSet + DataSetProvider + ClientDataSet, ligado ao SQLConnection, até aí tudo bem, pois consigo incluir, alterar, excluir e salvar todo e qualquer registro que faça, mas o meu problema é que quando vou confeccionar meus relatórios baseados neste dados, por intermédio do Quick Report, simplesmente não aparece nenhum dado neste relatório.

Faço a chamada do Form que contém o relatório da seguinte forma:



procedure TFrmPrincipal.ListClientesClick(Sender: TObject);

begin

FrmRelCli:=TFrmRelCli.Create(Application);

Try

FrmRelCli.QuickRep1.Preview;

finally

FrmRelCli.Free;

end;

end;



1ª tentativa:

usei o trio SQLDataSet + DataSetProvider + ClientDataSet, ligado ao SQLConnection com o seguinte SELECT:



Select BAIRRO, CNPJ, CEP, COMPLEMENTO, ENDERECO, NOME, NOMEFANTASIA, RG, UF, NOM_CIDADE, CONTATO, DESCRICAO, SITUACAO

FROM

CLIENTE, CONTATOS, TIPO

inner join CIDADE CD on CIDADE.COD_CIDADE=CLIENTE.COD_CIDADE

inner join VENDEDOR VE on VENDEDOR.CODVENDEDOR=CLIENTE.CODVENDEDOR

inner join FORMAPAG FP on FORMAPAG.CODFORMAPAG=CLIENTE.CODFORMAPAG

inner join CLIENTE CL on CLIENTE.CODCLIENTE=CONTATOS.CODCLIENTE

inner join TIPO TP on TIPO.CODTIPO=CONTATOS.CODTIPO

where CONTATOS.CODCLIENTE=CLIENTE.CODCLIENTE and

CODCLIENTE =:PCODCLIENTE



configurei os parâmetros, liguei o relatório à base de dados, coloquei uma banda de cabeçalho, uma de titulo, uma Detail e nela QRDBText, devidamente configurados, suficiente para acessar os dados, e uma banda SubDetail e nela QRDBText, devidamente configurados, suficiente para acessar os dados, no evento OnShow do form que contém o relatório, abri a base de dados e no evento OnClose do form que contém o relatório, fechei a base de dados, e o resultado foi que não apareceu nenhum dado.







2ª tentativa:

usei a dupla SQLDataSet + SQLClientDataSet, ligado ao SQLConnection com o mesmo SELECT descrito acima, e o resultado foi o mesmo apresentado acima.



O mesmo procedimento foi feito com Tabelas PARADOX, e o resultado é sempre o esperado.





Perguntas:

Será que a base de dados .GDB não aceita fazer relatórios?

Será que tem algum comando errado?



Ficaria grata se possível solucionar este meu problema, pois estou tentando sair do Paradox e dedicar ao Interbase



Grata

Kika


Kika

Kika

Responder

Posts

13/02/2004

Gandalf.nho

A base GDB aceita relatórios sim, porque eu uso, embora use o IBX como origem dos dados. O dataset de origem do relatório está setado corretamente?


Responder

Gostei + 0

14/02/2004

Afarias

vc já testou o SQL ´diretamente´ no seu banco no IB e obteve resultados??


T+


Responder

Gostei + 0

16/02/2004

Airton Santos

Kika,

Eu estou usando o IB6 + DBX com Connection+SQLDataSet, etc da mesma forma que voce, me parece.

Eu estou fazendo relatórios com o QReport e deu certo. O negócio é o seguinte:- Existem 2 formas básicas de acessar o BD:

Se voce quer usar DBGrid, se movimentar para frente e para trás e gravar no seu banco de dados, aí voce tem que usar a seguinte sequencia:

Connection->SQLDataSet->Provider->ClientDataSet->DataSource

Voce manuseia o CDS e o DSource para DBGrid, fazer atualizações, etc.

Mas quando voce só quer fazer Relatórios, use a seguinte sequencia:
Connection->SQLDataSet

Aí no seu form voce põe o componente QuickRep e aponta para o SQLDataSet. Com isso voce pode, inclusive, alterar o SQL para seus relatorios modificando o CommandText do SQLDataSet desta maneira:

dm.sqldataset1.commandtext:=´select * from TABELA .....´;

Funciona muito bem.

Boa sorte,

Airton


Responder

Gostei + 0

19/02/2004

Kika

Afarias já testei o SQL ´diretamente´ no seu banco no IB e obteve seguinte resultados.

Fiz o seguinte select no Interactive SQL

Select BAIRRO, CNPJ, CEP, COMPLEMENTO, ENDERECO, NOME, NOMEFANTASIA, RG, UF, NOM_CIDADE, NOME, DESCRICAO, CONTATO, DESCRICAO, SITUACAO
FROM
CLIENTE, CONTATOS, TIPO
inner join CIDADE CD on CIDADE.COD_CIDADE=CLIENTE.COD_CIDADE
inner join VENDEDOR VE on VENDEDOR.CODVENDEDOR=CLIENTE.CODVENDEDOR
inner join FORMAPAG FP on FORMAPAG.CODFORMAPAG=CLIENTE.CODFORMAPAG
inner join CLIENTE CL on CLIENTE.CODCLIENTE=CONTATOS.CODCLIENTE
inner join TIPO TP on TIPO.CODTIPO=CONTATOS.CODTIPO
where CONTATOS.CODCLIENTE=CLIENTE.CODCLIENTE and
CODCLIENTE =:PCODCLIENTE

Como resultado, a seguinte mensagem:

Dynamic SQL Error
SQL error code = -206
Column unknown
Statement: Select BAIRRO, CNPJ, CEP, COMPLEMENTO, ENDERECO, NOME, NOMEFANTASIA, RG, UF, NOM_CIDADE, NOME, DESCRICAO, CONTATO, DESCRICAO, SITUACAO
FROM
CLIENTE, CONTATOS, TIPO
inner join CIDADE CD on CIDADE.COD_CIDADE=CLIENTE.COD_CIDADE
inner join VENDEDOR VE on VENDEDOR.CODVENDEDOR=CLIENTE.CODVENDEDOR
inner join FORMAPAG FP on FORMAPAG.CODFORMAPAG=CLIENTE.CODFORMAPAG
inner join CLIENTE CL on CLIENTE.CODCLIENTE=CONTATOS.CODCLIENTE
inner join TIPO TP on TIPO.CODTIPO=CONTATOS.CODTIPO
where CONTATOS.CODCLIENTE=CLIENTE.CODCLIENTE and
CODCLIENTE =:PCODCLIENTE

Será que tem algum comando errado?


Responder

Gostei + 0

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

Aceitar