Erro ao Chamar relatório individual (com o FastRepoty)
Boa tarde pessoal, Tenho três Formulários no meu banco de dados, onde o Formulário (APOSTA_NORMAL1) é o principal e os formulários (CORES e APOSTA_TIPO)
são os estrangeiros.
Fiz a seguinte SQL:
Ate ai tudo bem, ele esta me retornando a ID_APOSTA1 / APOS1_REFERENCIA / APOS_ABREVIACAO / COR_DESCRICAO
Agora vamos para o Projeto no Delphi:
No DBGrid digitei a seguinte linha de codigos:
No Botão imprimir digitei a seguinte linha de codigos:
Quando clico no Grid pra escolher a linha independente da que estou escolhendo ele la no campo EdtImpressao sempre fica o primeiro do Grig
e quando clico no botão Impressão da erro de SQL : unknown SQL Data type (32764)
Se no SQL do banco ta dando certo o que esta errado no SQL do Botão?
http://prntscr.com/t1oax4
http://prntscr.com/t1ob6u
O que será e onde será o erro?
Podem me ajudar a solucionar esse problema?
Desde já obrigado pela ajuda e por tentar ajudar.
são os estrangeiros.
CREATE TABLE APOSTA_NORMAL1 (
ID_APOSTA1 INTEGER NOT NULL,
APOS1_REFERENCIA NUMERIC(8,0),
IDCORES INTEGER,
IDAPOSTA_TIPO INTEGER
);
CREATE TABLE CORES (
ID_CORES INTEGER NOT NULL,
COR_DESCRICAO VARCHAR(100)
);
CREATE TABLE APOSTA_TIPO (
ID_APOSTA_TIPO INTEGER NOT NULL,
APOS_DESCRICAO VARCHAR(15),
APOS_ABREVIACAO VARCHAR(2)
);Fiz a seguinte SQL:
select
A.id_aposta1,
A.apos1_referencia,
B.apos_abreviacao,
C.cor_descricao
from aposta_normal1 A,
aposta_tipo B,
cores C
where A.idaposta_tipo = B.id_aposta_tipo
AND A.idcores = C.id_coresAte ai tudo bem, ele esta me retornando a ID_APOSTA1 / APOS1_REFERENCIA / APOS_ABREVIACAO / COR_DESCRICAO
Agora vamos para o Projeto no Delphi:
No DBGrid digitei a seguinte linha de codigos:
procedure TfrmApostaNormal_1.DBGridApostaCellClick(Column: TColumn);
begin
inherited;
EdtImpressao.Text := IntToStr(dmRel.ibQryRelApostaNormal_1ID_APOSTA1.Value);
end;No Botão imprimir digitei a seguinte linha de codigos:
procedure TfrmApostaNormal_1.btnImpressaoClick(Sender: TObject);
begin
inherited;
with dmRel.ibQryRelApostaNormal_1 do
begin
close;
sql.Clear;
sql.Add('select A.apos1_referencia, B.apos_abreviacao, C.cor_descricao ');
sql.Add('from aposta_normal1 A, aposta_tipo B, cores C ');
sql.Add('where A.idaposta_tipo = B.id_aposta_tipo AND A.idcores = C.id_cores =:pCodigo ');
ParamByName('pCodigo').Value := StrToInt(EdtImpressao.Text);
open;
frmRelApostaNormal_1.frxReportFA6Pai.PrepareReport;
frmRelApostaNormal_1.frxReportFA6Pai.ShowReport;
end;
end;Quando clico no Grid pra escolher a linha independente da que estou escolhendo ele la no campo EdtImpressao sempre fica o primeiro do Grig
e quando clico no botão Impressão da erro de SQL : unknown SQL Data type (32764)
Se no SQL do banco ta dando certo o que esta errado no SQL do Botão?
http://prntscr.com/t1oax4
http://prntscr.com/t1ob6u
O que será e onde será o erro?
Podem me ajudar a solucionar esse problema?
Desde já obrigado pela ajuda e por tentar ajudar.
Rubens Pena
Curtidas 0
Respostas
Marcos Junior
17/06/2020
Bom dia...
Chefe talvez não precisa de tanto esforço assim, o seu grid e sues componentes estão lincados com seu DataSource por isso que quando você clica em uma linha do seu grid as informações da mesma são exibidas nos componentes acima.
opção 1: EdtImpressao.Text := edtCodigo.Text;
opção 2: no evento onDblClick do grid você passar EdtImpressao.Text := dmRel.ibQryRelApostaNormal_1ID_APOSTA1.AsString;
p.s - Tenta ai e nos da um feedback do resultado...
Chefe talvez não precisa de tanto esforço assim, o seu grid e sues componentes estão lincados com seu DataSource por isso que quando você clica em uma linha do seu grid as informações da mesma são exibidas nos componentes acima.
opção 1: EdtImpressao.Text := edtCodigo.Text;
opção 2: no evento onDblClick do grid você passar EdtImpressao.Text := dmRel.ibQryRelApostaNormal_1ID_APOSTA1.AsString;
p.s - Tenta ai e nos da um feedback do resultado...
GOSTEI 0
Rubens Pena
17/06/2020
Bom dia...
Chefe talvez não precisa de tanto esforço assim, o seu grid e sues componentes estão lincados com seu DataSource por isso que quando você clica em uma linha do seu grid as informações da mesma são exibidas nos componentes acima.
opção 1: EdtImpressao.Text := edtCodigo.Text;
opção 2: no evento onDblClick do grid você passar EdtImpressao.Text := dmRel.ibQryRelApostaNormal_1ID_APOSTA1.AsString;
p.s - Tenta ai e nos da um feedback do resultado...
Boa tarde Marcos Junior.Chefe talvez não precisa de tanto esforço assim, o seu grid e sues componentes estão lincados com seu DataSource por isso que quando você clica em uma linha do seu grid as informações da mesma são exibidas nos componentes acima.
opção 1: EdtImpressao.Text := edtCodigo.Text;
opção 2: no evento onDblClick do grid você passar EdtImpressao.Text := dmRel.ibQryRelApostaNormal_1ID_APOSTA1.AsString;
p.s - Tenta ai e nos da um feedback do resultado...
Fiz uma alteração na minha SQL e deu certo. Esta imprimindo o apenas o registro selecionado.
Segue abaixo como que ficou a minha:
procedure TfrmApostaNormal_1.DBGridApostaCellClick(Column: TColumn); begin inherited; edtImpressao.Text := dmRel.ibQryRelApostaNormal_1APOS1_REFERENCIA.AsString; end;
procedure TfrmApostaNormal_1.Button1Click(Sender: TObject);
begin
inherited;
if dmRel.ibQryRelApostaNormal_1.Active = False then
begin
dmRel.ibQryRelApostaNormal_1.Active := True;
end;
if (edtImpressao.Text <> '') then //se for diferente de vazio imprime a busca
with dmRel.ibQryRelApostaNormal_1 do
begin
Close;
SQL.Clear;
SQL.Add('select A.apos1_referencia, B.cor_descricao, C.apos_abreviacao ');
SQL.Add('from aposta_normal1 AS A ');
SQL.Add('inner join cores AS B on A.idcores = B.id_cores ');
SQL.Add('inner join aposta_tipo AS C on A.idaposta_tipo = C.id_aposta_tipo ');
SQL.Add('where A.apos1_referencia =:pRef ');
ParamByName('pRef').Value := StrToInt(edtImpressao.Text);
Open;
frmRelApostasNormal_1.frxReportFA6Pai.PrepareReport();
frmRelApostaSNormal_1.frxReportFA6Pai.ShowReport;
end;
end;Obrigado pela ajuda.
GOSTEI 0