Fórum Relatórios com Interbase e Quick #42328
13/02/2004
0
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
Curtir tópico
+ 0Posts
13/02/2004
Gandalf.nho
Gostei + 0
14/02/2004
Afarias
T+
Gostei + 0
16/02/2004
Airton Santos
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
Gostei + 0
19/02/2004
Kika
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?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)