domingo, 10 de junho de 2007

Rotinas em DELPHI para Popular um ComboBox


Esta postagem tem duplo objetivo:
(i) Mostar como se pode popular um combobox com valores buscados de um banco de dados;
(ii)Mostar como se pode buscar um código "id" em um banco de dados a partir de um nome selecionado previamente em um componente "ComboBox".

Os componentes "TEdit´s" que receberão os "Id´s" e os componentes "TComboBox´s" estão descritos na figura abaixo.



São apresentados métodos específicos para buscar um código "Id" de uma dada conta escolhida pelo usuário ao selecionar um item de um combobox básico.

Primeiro evento: O usuário seleciona um item de um combobox;
Segundo evento : Ao selecionar uma conta, coloca-se o valor do "Id" em um edit específico Para tanto, acessa-se o banco de dados e busca-se o "id" pelo nome selecionado.


Veja o corpo das functions abaixo na seção "implementation":
function alx_int_Pegar_Conta_Bancaria_Id(alx_str_conta_bancaria_nome: String): Integer;
function alx_int_Pegar_Conta_Nivel_4_Id(alx_str_conta_nivel_4_nome: String): Integer;


unit Unit_SGC_Lancamentos_Receitas;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, Grids, DBGrids, DB, ADODB, Unit_SGC_Data_Module;

type
Talx_frm_sgc_lancamentos_receitas = class(TForm)

StatusBar1: TStatusBar; Panel1: TPanel; BitBtn1: TBitBtn; GroupBox1: TGroupBox; ComboBox1: TComboBox; Edit1: TEdit; Label1: TLabel; ComboBox2: TComboBox; Label2: TLabel; Edit2: TEdit; Edit3: TEdit; Label3: TLabel; Edit4: TEdit; Label4: TLabel; Edit5: TEdit; Label5: TLabel; Edit6: TEdit; Label6: TLabel; Panel3: TPanel; DBGrid1: TDBGrid; GroupBox2: TGroupBox; Edit7: TEdit; BitBtn2: TBitBtn; BitBtn3: TBitBtn; RadioGroup1: TRadioGroup; RadioButton1: TRadioButton; RadioButton2: TRadioButton; Edit8: TEdit; ADOQuery_Rateios: TADOQuery; DataSource_Rateios: TDataSource; ADOQuery_Atividades_Extensao: TADOQuery; DataSource_Atividades_Extensao: TDataSource; ADOQuery_Apoio: TADOQuery; GroupBox3: TGroupBox; DBGrid_Atividades_Extensao: TDBGrid; Edit9: TEdit; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure RadioButton2Click(Sender: TObject); procedure RadioButton1Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure BitBtn3Click(Sender: TObject); procedure DBGrid_Atividades_ExtensaoCellClick(Column: TColumn); procedure DBGrid_Atividades_ExtensaoKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure ComboBox1Select(Sender: TObject);
procedure ComboBox2Select(Sender: TObject);

private
{ Private declarations }
alx_str_user_nome : String;
alx_int_user_na_id: Integer;
//-------
function alx_int_Pegar_Conta_Bancaria_Id(alx_str_conta_bancaria_nome: String): Integer;
function alx_int_Pegar_Conta_Nivel_4_Id(alx_str_conta_nivel_4_nome: String): Integer;
//-------
procedure alx_voi_Atualizar_Cartao_Atividades_Extensao();
procedure alx_voi_Definir_Data_Lancamento_Receita();
procedure alx_voi_Popular_Contas_Bancarias_ComboBox();
procedure alx_voi_Popular_Contas_Nivel_4_ComboBox();
procedure alx_voi_Popular_Grid_Atividades_Extensao();
procedure alx_voi_Rateio_Preparar_Para_Digitar_Valor();
procedure alx_voi_Rateio_Preparar_Para_Calcular_Automaticamente();
procedure alx_voi_Registrar_Entrada_Usuario(alx_str_nome: String ; alx_int_na_id: Integer);
procedure alx_voi_Registrar_Status_Bar_Usuario();

public
{ Public declarations }
constructor alx_voi_Create(alx_obj_owner: TComponent ; alx_str_user_name: String ; alx_int_nivel_acesso_id: Integer);
destructor alx_voi_Destroy();
end;

implementation

{$R *.dfm}

//==============================================================================
function Talx_frm_sgc_lancamentos_receitas.alx_int_Pegar_Conta_Bancaria_Id(alx_str_conta_bancaria_nome: String): Integer;
var
alx_str_sql_text: TStrings; alx_int_apoio : Integer;
begin
try
alx_str_sql_text:= TStringList.Create();
alx_str_sql_text.Add('SELECT CB_ID FROM CONTAS_BANCARIAS WHERE CB_NOME = : ');
self.ADOQuery_Apoio.Active:= False;
self.ADOQuery_Apoio.SQL.Clear();
self.ADOQuery_Apoio.SQL:= alx_str_sql_text;
self.ADOQuery_Apoio.Parameters[0].Value:= alx_str_conta_bancaria_nome;
self.ADOQuery_Apoio.Active:= True;
//-----------------
alx_int_apoio:= self.ADOQuery_Apoio.Fields[0].AsInteger;
self.ADOQuery_Apoio.Active:= False;
//-----------------
except
on E: Exception do begin
alx_int_apoio:= 0;
showmessage('Ôpa, ocorreu um erro ao buscar o código para uma Contas de Nível 4 de nome conhecido! Veja: ' + E.Message);
end;
end;
result:= alx_int_apoio;
end;
//==============================================================================
function Talx_frm_sgc_lancamentos_receitas.alx_int_Pegar_Conta_Nivel_4_Id(alx_str_conta_nivel_4_nome: String): Integer;
var
alx_str_sql_text: TStrings; alx_int_apoio : Integer;
begin
try
alx_str_sql_text:= TStringList.Create();
alx_str_sql_text.Add('SELECT CN4_ID FROM CONTAS_NIVEL_4 WHERE CN4_NOME = : ');
self.ADOQuery_Apoio.Active:= False;
self.ADOQuery_Apoio.SQL.Clear();
self.ADOQuery_Apoio.SQL:= alx_str_sql_text;
self.ADOQuery_Apoio.Parameters[0].Value:= alx_str_conta_nivel_4_nome;
self.ADOQuery_Apoio.Active:= True;
//-----------------
alx_int_apoio:= self.ADOQuery_Apoio.Fields[0].AsInteger;
self.ADOQuery_Apoio.Active:= False;
//-----------------
except
on E: Exception do begin
alx_int_apoio:= 0;
showmessage('Ôpa, ocorreu um erro ao buscar o código para uma Contas de Nível 4 de nome conhecido! Veja: ' + E.Message);
end;
end;
result:= alx_int_apoio;
end;
//==============================================================================
procedure Talx_frm_sgc_lancamentos_receitas.ComboBox1Select( Sender: TObject);
begin
self.Edit1.Text:= inttostr(self.alx_int_Pegar_Conta_Bancaria_Id(self.ComboBox1.Text));
end;
//==============================================================================
procedure Talx_frm_sgc_lancamentos_receitas.ComboBox2Select(Sender: TObject);
begin
self.Edit2.Text:= inttostr(self.alx_int_Pegar_Conta_Nivel_4_Id(self.ComboBox2.Text));
end;
//==============================================================================
procedure Talx_frm_sgc_lancamentos_receitas.alx_voi_Popular_Contas_Bancarias_ComboBox();
var
alx_str_sql_text: TStrings;
begin
try
alx_str_sql_text:= TStringList.Create();
alx_str_sql_text.Add('SELECT CB_NOME FROM CONTAS_BANCARIAS WHERE CB_ATIVO = TRUE ORDER BY CB_NOME ;');
self.ADOQuery_Apoio.Active:= False;
self.ADOQuery_Apoio.SQL.Clear();
self.ADOQuery_Apoio.SQL:= alx_str_sql_text;
self.ADOQuery_Apoio.Active:= True;
//-----------------
self.ComboBox1.Items.Clear();
while not(self.ADOQuery_Apoio.Eof) do begin
self.ComboBox1.Items.Add(self.ADOQuery_Apoio.Fields[0].AsString);
self.ADOQuery_Apoio.Next();
end;
self.ComboBox1.Text:= 'escolha uma conta bancária';
self.Edit1.Text:= '';
//-----------------
self.ADOQuery_Apoio.Active:= False;
//-----------------
except
on E: Exception do begin
showmessage('Ôpa, ocorreu um erro ao popular o combo de Contas Bancárias! Veja: ' + E.Message);
end;
end;
end;
//==============================================================================
procedure Talx_frm_sgc_lancamentos_receitas.alx_voi_Popular_Contas_Nivel_4_ComboBox();
var
alx_str_sql_text: TStrings;
begin
try
alx_str_sql_text:= TStringList.Create();
alx_str_sql_text.Add('SELECT CN4_NOME '); alx_str_sql_text.Add('FROM CONTAS_NIVEL_4 , CONTAS_NIVEL_3 , CONTAS_NIVEL_2 , CONTAS_NIVEL_1 ');
alx_str_sql_text.Add('WHERE CN4_CN3_ID = CN3_ID AND CN3_CN2_ID = CN2_ID AND ');
alx_str_sql_text.Add(' CN2_CN1_ID = CN1_ID AND CN1_ID = 4 AND CN4_ATIVO = TRUE ');
alx_str_sql_text.Add('ORDER BY CN4_NOME ; ');
self.ADOQuery_Apoio.Active:= False;
self.ADOQuery_Apoio.SQL.Clear();
self.ADOQuery_Apoio.SQL:= alx_str_sql_text;
self.ADOQuery_Apoio.Active:= True;
//-----------------
self.ComboBox2.Items.Clear();
while not(self.ADOQuery_Apoio.Eof) do begin
self.ComboBox2.Items.Add(self.ADOQuery_Apoio.Fields[0].AsString);
self.ADOQuery_Apoio.Next();
end;
self.ComboBox2.Text:= 'escolha uma conta de nível 4 para o lançamento';
self.Edit2.Text:= '';
//-----------------
self.ADOQuery_Apoio.Active:= False;
//-----------------
except
on E: Exception do begin
showmessage('Ôpa, ocorreu um erro ao popular o combo de Contas de Nível 4! Veja: ' + E.Message);
end;
end;
end;
//==============================================================================
end.

Um comentário:

Unknown disse...

Boa tarde Amigo,
Desculpa mas nao entendi bem este codigo, pois nao tenho o banco de dados disso ai, podes dar uma ideia disso e postar o programa completo?