Gravar dados depois da escolha no combobox

19/02/2006

Olá Lista,

Mais um dilema do novato... Para gravar
os dados de um formulário faço o seguinte:

Ativação dos botões SQL e da variável NOVO.

No evento ON SHOW do formulário

Novo:= True;
SQLInsert:= ´Insert into TABCLIENTE Values (:V1,:V2,:V3,:V4,:V5,:V6)´;
SQLUpdate:= ´Update TABCLIENTE Set Nome= :V1, Endereco= :V2, Estado Civil= :V3, Conjugue= :V4, Pai = :V5 Where Ed CodCliente= :V6´;
SQLDelete:= ´Delete From TABCLIENTE Where EdCodCliente = :V1´;
SQLSelect:= ´Select * From TABEDITORAS Where EdCodCliente = :V1´;

NO BOTÃO GRAVAR FAÇO ASSIM:

//Verifica se os principais campos foram preenchidos
if EdNome.Text=´´ then
begin
MessageDlg(´Informe o Nome do Cliente´,mtError,[mbok],0);
EdNome.SetFocus;
exit;
end;

if Novo then
begin
with QryConsulta do
begin
Close;
Sql.Clear;
Sql.Add(´Select Max(CodCliente) from TabClientes´); // busca o último registro
Open;
If Fields[0].IsNull = False then
EdCodCliente.Text := IntToStr(Fields[0].Value+1)// acrescenta mais um registro automaticamente
else
EdCodCliente.Text := ´1´;
Close;
Sql.Clear;
Sql.Add(SqlInsert);
Params[0].Value := EdCodCliente.Text;
Params[1].Value := EdNome.Text;
Params[2].Value := EdEndereco.Text;
Params[3].Value := CboEstadoCivil.Text;
Params[4].Value := EdConjungue.Text;
Params[6].Value := EdPai.Text;
ExecSql;
DM.TransRegistro.CommitRetaining;
ShowMessage(´Registro gravado´);
Novo := False;
end;
end
else
begin
with QryConsulta do
begin
Close;
Sql.Clear;
Sql.Add(SqlUpdate);
Params[0].Value := EdNome.Text;
Params[1].Value := EdEndereco.Text;
Params[2].Value := CboEstadoCivil.Text;
Params[3].Value := EdConjungue.Text;
Params[4].Value := EdPai.Text;
Params[6].Value := EdCodCliente.Text;
ExecSql;
DM.TransRegistro.CommitRetaining;
ShowMessage(´Registro Atualizado´);
end;
end;

Então a minha pergunta é a seguinte. Como faço para gravar dados depois da escolha de um item do combobox? Como Assim?

Seguindo o código acima como exemplo, temos: um combobox “CBOESTADOCIVIL”, dois itens nele “CASADO e SOLTEIRO”, os campos EDCONJUGUE e EDPAI com sua propriedade visible como false. Então após a escolha no combo habilitasse o campo correspondente (CASADO habilitasse EDCONJUGUE/ SOLTEIRO habilitasse EDPAI) e depois gravasse os dados inseridos no bando de dados... eu até comecei a fazer, mas...

procedure TFrmCliente.CboEstadoCivilClick(Sender: TObject);
begin
If CboEstadoCivil.ItemIndex=0 Then
begin
Label5.Visible:=True;
EdConjugue.Visible:=True;
EdConjugue.SetFocus;
end
else
begin
Label5.Visible:=False;
EdConjugue.Visible:=False;
CboEstadocivil.SetFocus;
end;

Deu pra entender? Alguém poderia me dar uma idéia como fazer?
Valeu


Jrcosmoluis