Relatórios com Interbase e Quick
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
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
Curtidas 0
Respostas
Gandalf.nho
13/02/2004
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?
GOSTEI 0
Afarias
13/02/2004
vc já testou o SQL ´diretamente´ no seu banco no IB e obteve resultados??
T+
T+
GOSTEI 0
Airton Santos
13/02/2004
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
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
Kika
13/02/2004
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?
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