[Duvida] tabela pessoa

Delphi

11/07/2011

bom dia gostaria de saber como faco p grava um cadastro de cliente q ta dividido em 3 tabelas.
tblPessoa;
tblPessoaFisica;
tblEndereco;

to usando delphi 2009 e mysql, eu nunca usei uma estrutura dessa ai num toconseguindo resgatar o ID da tabela pessoa para pode gravar as outroas.
alguem pode me passar uma forma funcional para resolver isso?
e se possivel um modelo dessas tabelas, para q eu possa comprar as estruturas e melhorar a minha .
Adriano Carvalho

Adriano Carvalho

Curtidas 0

Respostas

Andre Oliveira

Andre Oliveira

11/07/2011

Pra esse tipo de problema o ideal é dividir a tela em TRES GUIAS ..

criar um DataModule e usar [OBJETO DE ACESSO A DADOS] + DATASET PROVIDER + CLIENT DATASET + DATA SOURCE

para cada guia voce deve configurar um quarteto destes componentes ..

é provavel que estas tabelas estejam em alguma hierarquia .. então tente aprender a respeito da propriedade master fields do CLIENT DATASET ...

Tambem recomendo que voce acesse as video aulas do CURSO DE CLIENT DATASET disponivel no DevMedia.

Qualquer coisa que puder ajudar só falar
GOSTEI 0
Daniel Thomaz

Daniel Thomaz

11/07/2011

sim, ja fiz tudo q disse minhas tabelas tem o campo id_pessoa em todas, entao tenho q recuperar esse id da tabela principal para colocar nas outras, e tbm to usando datasnap ai q complicou um pouco mais.
GOSTEI 0
José Curdo

José Curdo

11/07/2011

Acrescentando a dica do André, sugiro o uso de DBExpress na escolha do [OBJETO DE ACESSO A DADOS], neste caso, SQLDataSet.
GOSTEI 0
Daniel Thomaz

Daniel Thomaz

11/07/2011

bom dia, eu ja to usando o dbexpress meu problema e so na hora de recuperar o ID da tabela pessoa, para poder atribuir na 2 e 3 tabela, como posso pegar esse ID no banco de dados mysql antes de da um applyUpdates do dataset?
GOSTEI 0
Andre Oliveira

Andre Oliveira

11/07/2011

Você pode usar o evento BeforePost e nele voce recupera a informação referente ao campo chave da tabela pessoa ..

Qqr duvida perguntae!
GOSTEI 0
Adriano Carvalho

Adriano Carvalho

11/07/2011

ola ja consegui resolver com esse codigo aqui
procedure TFuncoes.autoInc(Table: String);
var sqlQuery: TSQLQuery;
begin
   try
     sqlQuery := TSQLQuery.Create(Self);
     sqlQuery.SQLConnection := DMServerContainer.ServerContainer.mobi;
     sqlQuery.SQL.Add('ALTER TABLE '+Table+' AUTO_INCREMENT = '+ IntToStr(ID+1));
     sqlQuery.ExecSQL
   finally
    FreeAndNil(sqlQuery);
   end;
end;



function TFuncoes.GetID(Table: String): Integer;
var sqlQuery : TSQLQuery;
begin
  try
    sqlQuery := TSQLQuery.Create(Self);
    sqlQuery.SQLConnection := DMServerContainer.ServerContainer.mobi;
    sqlQuery.SQL.Add('SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '+QuotedStr(Table));
    sqlQuery.Open;
    ID  := sqlQuery.Fields[0].AsInteger;
    autoInc(Table);
    result := sqlQuery.Fields[0].Value;
  finally
     FreeAndNil(sqlQuery);
  end;
end;
GOSTEI 0
POSTAR