Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

claudemircruz

Passar Query para ADODataset

Recommended Posts

Olá pessoal, minha tela é simples apenas comecei, mais estou com dúvidas, quando a maneira correta de atualizar os dados na grid. Quando aperto o Botão filtrar(BtnFiltrar) ocorre o segundo erro.

 

Project impressaoaih.exe raised exception class EOleException width message'Invalid Objeto name' SELECT * FROM aiahemitidas WHERE competencia = '200601' and lote = '03'. Process stopped.Use Stepor Run to continue.

 

Abaixo exido o código. para você verem. Preciso passar valores para a query, por meio de edit.

 

 

 

unit imprimir;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, ADODB, DB, Grids, DBGrids;type  TForm1 = class(TForm)	ADOConnection: TADOConnection;	ADODSAih: TADODataSet;	GPfiltro: TGroupBox;	EdtNumAihInicial: TEdit;	EdtNumAihFinal: TEdit;	Label1: TLabel;	Label2: TLabel;	DSAIHA: TDataSource;	DBGrid1: TDBGrid;	Button1: TButton;	Label3: TLabel;	Label4: TLabel;	EdtCompetencia: TEdit;	Edtlote: TEdit;	BtnFiltrar: TButton;	ADODSAihaihid: TAutoIncField;	ADODSAihcompetencia: TWideStringField;	ADODSAihaihnumero: TWideStringField;	ADODSAihaihdata: TDateTimeField;	ADODSAihprontuario: TWideStringField;	ADODSAihorgaoemissor: TWideStringField;	ADODSAihpaciente: TWideStringField;	ADODSAihprocedimento: TWideStringField;	ADODSAihmunicipiores: TWideStringField;	ADODSAihcpf: TWideStringField;	ADODSAihimpressa: TStringField;	ADODSAihlote: TStringField;	procedure Button1Click(Sender: TObject);	procedure BtnFiltrarClick(Sender: TObject);  private	{ Private declarations }  public	{ Public declarations }  end;var  Form1: TForm1;   function SelectSQL(qry:TADODataSet; Instr: String): Boolean;implementation{$R *.dfm}{With cdsCustomer do Begin	Close;	CommandText := "select * from aihemitidas where numeroaih >=' " + QuotedStr (EdtNumAihInicial.Text )+ "'";	Open;End; // with }function SelectSQL(qry: TADODataSet; Instr: String): Boolean;beginTry	qry.Close;	qry.CommandText := Instr;	//qry.Open;	qry.Active := true; 	Result := True Except 	Result := FalseEnd; // Tryend;procedure TForm1.Button1Click(Sender: TObject);var Texto : TextFile;	qCons  : TADODataSet;	Linha  : String;begin inherited; //qCons. := ''; try   try   {AssignFile(F,ExtractFilePath(Application.ExeName)+'\Pedido.txt');}   AssignFile(Texto,'LPT1');   Rewrite(Texto);   Writeln(Texto,#27#15+' Claudemir');   Writeln(Texto,#27#15+' teste de impressão matricial');   Writeln(Texto,#27#15+' Em fim deu certo');   CloseFile(Texto)   except	 on E:Exception do begin	   //Result := E.Message;	 end;   end;   finally   qCons.Close;   FreeAndNil(qCons);   CloseFile(Texto); end;end;procedure TForm1.BtnFiltrarClick(Sender: TObject);var   conectou : boolean;   frase : string;begin  with GPfiltro  do  begin	 frase :=  'SELECT * FROM aihemitidas WHERE competencia = ' + QuotedStr(EdtCompetencia.Text) + ' AND lote = '+ QuotedStr(Edtlote.Text);	 showmessage(frase);	 conectou := SelectSQL(ADODSAih, frase);  end;end;end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No lugar do seu DataSet coloque uma qry.... e faça:

 

qry.Close;qry.SQL.Clear;qry.SQL.Add('SELECT *');qry.SQL.Add('FROM aihemitidas');qry.SQL.Add('WHERE competencia = ' + QuotedStr(EdtCompetencia.Text)');qry.SQL.Add('AND lote = '+ QuotedStr(Edtlote.Text)');qry.Open;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá! Alterei como dito acima, mas não aparece nada na grid. Como "linkar" os dados do TADOQuery com a DBGrid. Veja o código abaixo.

 

unit imprimir;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, ADODB, DB, Grids, DBGrids;type  TForm1 = class(TForm)	ADOConnection: TADOConnection;	GPfiltro: TGroupBox;	EdtNumAihInicial: TEdit;	EdtNumAihFinal: TEdit;	Label1: TLabel;	Label2: TLabel;	DSAIHA: TDataSource;	DBGridAihs: TDBGrid;	Button1: TButton;	Label3: TLabel;	Label4: TLabel;	EdtCompetencia: TEdit;	Edtlote: TEdit;	BtnFiltrar: TButton;	qry: TADOQuery;	ADODataSet1: TADODataSet;	procedure Button1Click(Sender: TObject);	procedure BtnFiltrarClick(Sender: TObject);  private	{ Private declarations }  public	{ Public declarations }  end;var  Form1: TForm1;   function SelectSQL(qry:TADODataSet; Instr: String): Boolean;implementation{$R *.dfm}{With cdsCustomer do Begin	Close;	CommandText := "select * from aihemitidas where numeroaih >=' " + QuotedStr (EdtNumAihInicial.Text )+ "'";	Open;End; // with }function SelectSQL(qry: TADODataSet; Instr: String): Boolean;beginTry	qry.Close;	qry.CommandText := Instr;	//qry.Open;	qry.Active := true;	Result := True Except	Result := FalseEnd; // Tryend;procedure TForm1.Button1Click(Sender: TObject);var Texto : TextFile;	qCons  : TADODataSet;	Linha  : String;begin inherited; //qCons. := ''; try   try   {AssignFile(F,ExtractFilePath(Application.ExeName)+'\Pedido.txt');}   AssignFile(Texto,'LPT1');   Rewrite(Texto);   Writeln(Texto,#27#15+' Claudemir');   Writeln(Texto,#27#15+' teste de impressão matricial');   Writeln(Texto,#27#15+' Em fim deu certo');   CloseFile(Texto)   except	 on E:Exception do begin	   //Result := E.Message;	 end;   end;   finally   qCons.Close;   FreeAndNil(qCons);   CloseFile(Texto); end;end;procedure TForm1.BtnFiltrarClick(Sender: TObject);var   conectou : boolean;   consulta : string;begin  with GPfiltro  do  begin	 consulta :=  'SELECT * FROM aihemitidas WHERE competencia = ' + QuotedStr(EdtCompetencia.Text) + ' AND lote = '+ QuotedStr(Edtlote.Text);	 showmessage(consulta);	 qry.Close;	 qry.SQL.Clear;	 qry.SQL.Add(consulta);	 qry.Open;	 qry.Active := True;	 DBGridAihs.Refresh;  end;end;end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

SIM! MAS como faço para passar os dados do ADOQuery para o Dataset.

 

unit imprimir;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, ADODB, DB, Grids, DBGrids;type  TForm1 = class(TForm)	ADOConnection: TADOConnection;	GPfiltro: TGroupBox;	EdtNumAihInicial: TEdit;	EdtNumAihFinal: TEdit;	Label1: TLabel;	Label2: TLabel;	DSAIHA: TDataSource;	DBGridAihs: TDBGrid;	Button1: TButton;	Label3: TLabel;	Label4: TLabel;	EdtCompetencia: TEdit;	Edtlote: TEdit;	BtnFiltrar: TButton;	qry: TADOQuery;	ADODataSet1: TADODataSet;	procedure Button1Click(Sender: TObject);	procedure BtnFiltrarClick(Sender: TObject);  private	{ Private declarations }  public	{ Public declarations }  end;var  Form1: TForm1;   function SelectSQL(qry:TADODataSet; Instr: String): Boolean;implementation{$R *.dfm}{With cdsCustomer do Begin	Close;	CommandText := "select * from aihemitidas where numeroaih >=' " + QuotedStr (EdtNumAihInicial.Text )+ "'";	Open;End; // with }function SelectSQL(qry: TADODataSet; Instr: String): Boolean;beginTry	qry.Close;	qry.CommandText := Instr;	//qry.Open;	qry.Active := true;	Result := TrueExcept	Result := FalseEnd; // Tryend;procedure TForm1.Button1Click(Sender: TObject);var Texto : TextFile;	qCons  : TADODataSet;	Linha  : String;begin inherited; //qCons. := ''; try   try   {AssignFile(F,ExtractFilePath(Application.ExeName)+'\Pedido.txt');}   AssignFile(Texto,'LPT1');   Rewrite(Texto);   Writeln(Texto,#27#15+' Claudemir');   Writeln(Texto,#27#15+' teste de impressão matricial');   Writeln(Texto,#27#15+' Em fim deu certo');   CloseFile(Texto)   except	 on E:Exception do begin	   //Result := E.Message;	 end;   end; finally   qCons.Close;   FreeAndNil(qCons);   CloseFile(Texto); end;end;procedure TForm1.BtnFiltrarClick(Sender: TObject);var   conectou : boolean;   consulta : string;begin  with GPfiltro  do  begin	 consulta :=  'SELECT * FROM aihemitidas WHERE competencia = ' + QuotedStr(EdtCompetencia.Text) + ' AND lote = '+ QuotedStr(Edtlote.Text);	 showmessage(consulta);	 qry.Close;	 qry.SQL.Clear;	 qry.SQL.Add(consulta);	 qry.Open;	 qry.Active := True;	 DBGridAihs.Refresh;  end;end;end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Puxa! Estamos andando em circulo! Estava com dataset, como está sendo mostrado no primeiro exemplo, e você me disse para usar o query. E ainda sim não consigo exibir os dados na grid, mais antes eu conseguia mais não conseguia atualizar o dataset com uma nova query.Bom resumindo, preciso exibir os dados na grid de acordo com os filtros, passados ao clicar no btnfiltrar. O que está de errado no meu código? Esta é minha dúvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.