Fórum Como gravar em duas tabelas? #346971
03/10/2007
0
CREATE TABLE tbPessoa (
CPF VARCHAR(11) NOT NULL,
RG VARCHAR(8) NOT NULL,
NOME VARCHAR(50) NOT NULL,
ENDERECO VARCHAR(100),
BAIRRO VARCHAR(50),
CIDADE VARCHAR(50),
ESTADO VARCHAR(2),
CEP VARCHAR(9),
SEXO VARCHAR(1),
PROFISSAO VARCHAR(50),
DT_NASC TIMESTAMP,
DT_CADASTRO TIMESTAMP,
usuCADASTRO VARCHAR(20),
DT_ALTERADO TIMESTAMP,
usuALTERADO VARCHAR(20),
CONSTRAINT pk_Pessoa PRIMARY KEY (CPF));
CREATE TABLE tbTelefone (
CPF VARCHAR(11) NOT NULL,
NUMERO VARCHAR(15) NOT NULL,
TIPO VARCHAR(20),
CONSTRAINT pk_Telefone PRIMARY KEY (CPF,NUMERO),
CONSTRAINT fk_Telefone_Pessoa FOREIGN KEY (CPF)
REFERENCES tbPessoa (CPF));
Eu consigo fazer o SELECT das tabelas numa boa através de um DataSet, mas quando tento gravar um novo cadastro no form ele dá um erro dizendo que os campos da tabela telefone não estão disponíveis pra gravação. Alguém poderia me dar uma ajuda?
Soueusei26
Curtir tópico
+ 0Posts
03/10/2007
Mayron Cachina
eh direto com um dbcontrol?
ou usando insert?
Gostei + 0
03/10/2007
Soueusei26
Agora estou tentando usar os controles padrões, mas estou apanhando pra caramba.
Gostei + 0
03/10/2007
Mayron Cachina
Gostei + 0
03/10/2007
Soueusei26
procedure TfrmPadrao.btnNovoClick(Sender: TObject);
begin
if not dstGenerico.DataSet.Active then
dstGenerico.DataSet.Open;
with dstGenerico.DataSet do
begin
Append;
FieldValues[´CPF´] := Trim(frmFuncionarios.txtCPF.Text);
FieldValues[´NOME´] := Trim(frmFuncionarios.txtNome.Text);
FieldValues[´ENDERECO´] := Trim(frmFuncionarios.txtEndereco.Text);
FieldValues[´BAIRRO´] := Trim(frmFuncionarios.txtBairro.Text);
FieldValues[´CIDADE´] := Trim(frmFuncionarios.txtCidade.Text);
FieldValues[´ESTADO´] := Trim(frmFuncionarios.txtUF.Text);
FieldValues[´CEP´] := Trim(frmFuncionarios.txtCEP.Text);
FieldValues[´RG´] := Trim(frmFuncionarios.txtRG.Text);
FieldValues[´DT_NASC´] := Trim(frmFuncionarios.mskDT_NASC.Text);
FieldValues[´SEXO´] := Trim(frmFuncionarios.cbxSexo.Text);
FieldValues[´PROFISSAO´] := Trim(frmFuncionarios.txtProfissao.Text);
end;
end;
///// Estou usando este código no botão salvar:
procedure TfrmPadrao.btnSalvarClick(Sender: TObject);
begin
dstGenerico.DataSet.Post;
end;
///// E este no afterpost:
procedure TdmdPrincipal.cdsPessoasAfterPost(DataSet: TDataSet);
begin
cdsPessoas.ApplyUpdates(0);
end;
//////// Funciona bem pra uma tabela, mas não sei como fazer para gravar em duas tabela...
///// E este é select que estou usando:
SELECT
p.CPF, p.RG, p.NOME, p.ENDERECO, p.BAIRRO, p.CIDADE, p.ESTADO,
p.CEP, p.SEXO, p.PROFISSAO, p.DT_NASC, p.DT_CADASTRO,
f.Numero, f.CPF as fCPF, f.TIPO
FROM
tbPessoa p,
tbTelefone f
Gostei + 0
04/10/2007
Mayron Cachina
eu acho q n tem pra onde correr...
Gostei + 0
04/10/2007
Soueusei26
http://forum.clubedelphi.net/viewtopic.php?t=75421&highlight=dbexpress+iniciante
Acho que é isso que estou precisando.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)