Erro ao Chamar relatório individual (com o FastRepoty)
17/06/2020
0
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_cores
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:
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
Curtir tópico
+ 0
Responder
Posts
18/06/2020
Marcos Junior
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...
Responder
19/06/2020
Rubens Pena
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.
Responder
Clique aqui para fazer login e interagir na Comunidade :)