Fórum Passar valor pro dbgrib #454746

10/09/2013

0

Olá pessoal...como consigo passar o valor de uma caixa de texto que será o parâmetro para um select cujo resultado será listado num grid. meu código é:

with Data_Module.MyQuery_Servicos_Clientes do
begin
sql.Add('SELECT * FROM servicos_clientes WHERE Cod_Cliente =:Cod_Cliente');
ParamByName('Cod_Cliente').Value := (DB_Edit_Cod_Cliente.Text);
//Active = true;
Open;
end

Uso o delphi xe4. O quê estou errando? Haa...lembrei...essa rotina é pra quando carregar o form. Agradeço a ajuda. Abraços.
Fabricio Luciano

Fabricio Luciano

Responder

Posts

10/09/2013

Marcos Oliveira

Fabricio, olhando seu fonte, não vi nada de errado. Você está usando um DBGrid? Se sim, lincou corretamente os componentes (DataSet, DataSource, DBGrid)?
Está dando algum erro na SQL?

Att,

Marcos
Responder

Gostei + 0

10/09/2013

Joel Rodrigues

Primeiro tire os parênteses, pois não precisa.
E qual é o erro que dá?
Responder

Gostei + 0

10/09/2013

Fabricio Luciano

Olá amigo. primeiramente obrigado por responder. dá access violation e uma sequecia: 007BBA88. A consexao está ativa pois tenho uma outra query pra carregar as caixas de texto. estou usando outra apenas pra carregar o dbgrid de acordo com o valor de uma caixa de texto. no vb estou acostumado com o evento onload do formulário e aqui no meu projeto está no create. faz sentido? ha...estou usando o componente mydac pra fazer a conexão com o mysql.
Responder

Gostei + 0

10/09/2013

Marcos Oliveira

Ao invés de colocar no onCreate, coloque no OnShow.

Att,

Marcos
Responder

Gostei + 0

10/09/2013

Fabricio Luciano

Perfeito Marco!!! Muito obrigado. Funcionou.
Responder

Gostei + 0

10/09/2013

Marcos Oliveira

Por nada! Abraço!
Responder

Gostei + 0

10/09/2013

Fabricio Luciano

Só mais uma pequena dúvida Marcos....essa sequência se eu colocar em um botão pra avançar pro próximo registro dá erro....tenho que fazer mais alguma coisa??? quero colocar no evento OnClick.
Responder

Gostei + 0

11/09/2013

Marcos Oliveira

Fabrício, pra você passar pro próximo registro é só dar um "Next" na tabela.
Como você está fazendo? Qual o erro apresentado?

Att,

Marcos
Responder

Gostei + 0

11/09/2013

Fabricio Luciano

Bom dia Marcos. Bem, o erro que dá é:

#42000 You have an error ijn yor SQL syntax check the manual thas corresponds to your MySQL server versioni for the right sintax to use near "SELECT * FROM servicos_clientes WHERE Cod_Cliente=1" at line 2.

Eu montei minha navegação usando o componente ActionManager. Para as caixas de text ele funciona perfeito mas quando muda a caixa onde contém o Cod_Cliente ora fazer a consulta pro dbgrid ele dá o erro acima. eu coloquei a rotina no evento onClick do botyão de avançar e no OnCnahge da caixa de texto e em ambos deu o mesmo erro. Tentei até fechar a conexão e abrir novamente pensando que deveria fazer isto para passar uma nova linha de sql para a consulta.
Responder

Gostei + 0

11/09/2013

Fabricio Luciano

Olha...coloquei:
close;
sql.clear;

e funcionou mas quando carrega dá a mensagem de erro de : #420000..... mas fica funcionando. Estou usando no evento OnChange da textbox que uso de parâmetro para a consulta no bd.
Responder

Gostei + 0

11/09/2013

Marcos Oliveira

Fabrício, você pode até usar o OnChange pra fazer a consulta, mas, faça algum tratamento caso você apague todo o conteúdo do campo, porque senão pode dar erro mesmo no SQL, já que o parâmetro da consulta estaria vazio.

Att,

Marcos
Responder

Gostei + 0

11/09/2013

Marcos Oliveira

Fabrício, você pode até usar o OnChange pra fazer a consulta, mas, faça algum tratamento caso você apague todo o conteúdo do campo, porque senão pode dar erro mesmo no SQL, já que o parâmetro da consulta estaria vazio.

Att,

Marcos
Responder

Gostei + 0

11/09/2013

Fabricio Luciano

Está funcionando agora.....era só limpar a consulta antes de adicionar nova instrução. não sei se é o mydac que é trial ou algum erro na minha aplicação mas quando vou encerrar gera erro de memória eu acho:

Exception EAccessViolation in module Mello_Andaimes.exe at 0035A632.

Access violation at address 0075A632 in module Mello_Andaimes.exe Read of address 00000040

Não tenho idéia de como resolver isso. é quando fecho a aplicação que dá esse erro.
Responder

Gostei + 0

12/09/2013

Fabricio Luciano

Olá amigos....agora deu ruim mesmo. O amigo Marcos me ajudou a resolver os problemas com o datagrid. continuou dando problema com Access Violation mas rodava. Continuei e fui adicionar mais um form e danou-se.....Diz que existe erro mas não consigo achar onde é. Procurei muito na net sobre esse access violation e a única coisa que eu achei era a indicação de declarações feitas erras. Vou colocar o source dos meu 2 forms abaixo. Me ajudem mostrando onde eu errei e como corrigir. Valeu a ajuda.

Primeiro: Form_Princial:

unit Unit_Principal;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.ComCtrls, Vcl.ToolWin,
Vcl.ImgList, Vcl.StdCtrls, Vcl.Grids, Vcl.DBGrids, Vcl.DBActns,
System.Actions, Vcl.ActnList, Vcl.PlatformDefaultStyleActnCtrls, Vcl.ActnMan,
Vcl.Mask, Vcl.DBCtrls, Vcl.ExtCtrls;

type
TForm_Principal = class(TForm)
MainMenu_Principal: TMainMenu;
Sair1: TMenuItem;
Novo1: TMenuItem;
N1: TMenuItem;
Editar1: TMenuItem;
N2: TMenuItem;
Sair2: TMenuItem;
Ferramantas1: TMenuItem;
Ajuda1: TMenuItem;
AtualizeseuSoftware1: TMenuItem;
N3: TMenuItem;
ManualdoUsurio1: TMenuItem;
N4: TMenuItem;
SobreoSoftware1: TMenuItem;
StatusBar1: TStatusBar;
Tbl_Principal: TToolBar;
Tbl_Principal_Novo: TToolButton;
ImageList_Tbl_Principal: TImageList;
ToolButton1: TToolButton;
Tbl_Principal_Editar: TToolButton;
ToolButton2: TToolButton;
Tbl_Principal_Salvar: TToolButton;
ToolButton4: TToolButton;
Tbl_Principal_Excluir: TToolButton;
ToolButton5: TToolButton;
Tbl_Principal_Inicio: TToolButton;
GroupBox1: TGroupBox;
ToolButton6: TToolButton;
Tbl_Principal_Anterior: TToolButton;
ToolButton8: TToolButton;
Tbl_Principal_Proximo: TToolButton;
ToolButton7: TToolButton;
Tbl_Principal_Ultimo: TToolButton;
DB_Edit_Cod_Cliente: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label1: TLabel;
DBEdit4: TDBEdit;
Label4: TLabel;
DBEdit5: TDBEdit;
Label5: TLabel;
DBEdit6: TDBEdit;
Label6: TLabel;
DBEdit7: TDBEdit;
Label7: TLabel;
DBEdit8: TDBEdit;
Label8: TLabel;
DBEdit9: TDBEdit;
Label9: TLabel;
DBEdit10: TDBEdit;
Label10: TLabel;
DBEdit11: TDBEdit;
Label11: TLabel;
DBEdit12: TDBEdit;
Label12: TLabel;
DBEdit13: TDBEdit;
Label13: TLabel;
DBEdit14: TDBEdit;
Label14: TLabel;
DBEdit15: TDBEdit;
ToolButton3: TToolButton;
ToolButton10: TToolButton;
Panel1: TPanel;
DBGrid_Servicos: TDBGrid;
Panel2: TPanel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Timer: TTimer;
ActionManager_Principal: TActionManager;
DatasetInicio_Tbl_Principal: TDataSetFirst;
DatasetVoltar_Tbl_Principal: TDataSetPrior;
DatasetAvancar_Tbl_Principal: TDataSetNext;
DatasetUltimo_Tbl_Principal: TDataSetLast;
DatasetSalvar_Tbl_Principal: TDataSetInsert;
DatasetExcluir_Tbl_Principal: TDataSetDelete;
DatasetAlterar_Tbl_Principal: TDataSetEdit;
DatasetNovo_Tbl_Principal: TDataSetPost;
DatasetCancelar_Tbl_Principal: TDataSetCancel;
ToolButton9: TToolButton;
Tbl_Principal_Ferramentas: TToolButton;
PopupMenu_Tbl_Principal_Ferramentas: TPopupMenu;
PopupMenu_Tbl_Principal_Ferramentas_Fornecedores: TMenuItem;
N5: TMenuItem;
PopupMenu_Tbl_Principal_Ferramentas_Estoque: TMenuItem;
N6: TMenuItem;
PopupMenu_Tbl_Principal_Ferramentas_Obras: TMenuItem;
N7: TMenuItem;
PopupMenu_Tbl_Principal_Ferramentas_Busca: TMenuItem;
PopupMenu_Tbl_Principal_Ferramentas_Busca_Clientes: TMenuItem;
N8: TMenuItem;
PopupMenu_Tbl_Principal_Ferramentas_Busca_Fornecedores: TMenuItem;
N9: TMenuItem;
PopupMenu_Tbl_Principal_Ferramentas_Busca_Estoque: TMenuItem;
N10: TMenuItem;
PopupMenu_Tbl_Principal_Ferramentas_Busca_Obras: TMenuItem;
procedure FormShow(Sender: TObject);
procedure DB_Edit_Cod_ClienteChange(Sender: TObject);
procedure TimerTimer(Sender: TObject);
procedure Sair2Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form_Principal: TForm_Principal;

implementation

{$R *.dfm}

uses Unit_Data_Module, Unit_Servicos;


procedure TForm_Principal.Button1Click(Sender: TObject);
begin

Form_Servicos.Show;

end;

procedure TForm_Principal.Button5Click(Sender: TObject);
begin

with Data_Module.MyQuery_Licensa_Relatorios do
begin
close;
sql.Clear;
sql.Add('SELECT * FROM servico_software WHERE Cod_Cliente =:Cod_Cliente');
ParamByName('Cod_Cliente').Value := DB_Edit_Cod_Cliente.Text;
Active := true;
Open;

if Data_Module.MyQuery_Licensa_Relatorios.FieldByName('Relatorios').Value = 'Não' then
Application.MessageBox('Você não pode gerar relatórios. Por favor, mude seu pacote!','Aviso do Sistema',MB_OK)

else if Data_Module.MyQuery_Licensa_Relatorios.FieldByName('Relatorios').Value = 'Sim' then
Application.MessageBox('Você pode gerar relatórios!','Aviso do Sistema',MB_OK)

end

end;

procedure TForm_Principal.DB_Edit_Cod_ClienteChange(Sender: TObject);
begin
// Mudando o DataGrid quando clicar no botão de Avançar
with Data_Module.MyQuery_Servicos_Clientes do
begin
close;
sql.Clear;
sql.Add('SELECT * FROM servicos_clientes WHERE Cod_Cliente =:Cod_Cliente');
ParamByName('Cod_Cliente').Value := DB_Edit_Cod_Cliente.Text;
Active := true;
Open;
end
end;

procedure TForm_Principal.FormShow(Sender: TObject);
begin
with Data_Module.MyQuery_Servicos_Clientes do
begin
close;
sql.Clear;
sql.Add('SELECT * FROM servicos_clientes WHERE Cod_Cliente =:Cod_Cliente');
ParamByName('Cod_Cliente').Value := DB_Edit_Cod_Cliente.Text;
Active := true;
Open;
end

end;

procedure TForm_Principal.Sair2Click(Sender: TObject);
begin
if Application.MessageBox('Deseja realmente encerrar a aplicação?','Fechar',MB_YESNO) = idYes then
Application.Terminate;
end;

procedure TForm_Principal.TimerTimer(Sender: TObject);
begin
StatusBar1.Panels.Items[1].Text := DateTimetoStr(now);
end;

end.

#############################################################################################

SEGUNDO : Form_Servicos

unit Unit_Servicos;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.DBCtrls,
Vcl.Mask, Vcl.ImgList, Vcl.DBActns, System.Actions, Vcl.ActnList,
Vcl.PlatformDefaultStyleActnCtrls, Vcl.ActnMan, Vcl.ToolWin;

type
TForm_Servicos = class(TForm)
StatusBar1: TStatusBar;
GroupBox1: TGroupBox;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit4: TDBEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
DBMemo1: TDBMemo;
Tbl_Servicos: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ImageList_Tbl_Servicos: TImageList;
ToolButton6: TToolButton;
ToolButton11: TToolButton;
procedure ToolButton11Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form_Servicos: TForm_Servicos;

implementation

{$R *.dfm}

uses Unit_Data_Module, Unit_Principal;

procedure TForm_Servicos.ToolButton11Click(Sender: TObject);
begin

Form_Servicos.Close;

end;

end.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar