Fórum [Duvida] tabela pessoa #404743

11/07/2011

0

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

Responder

Posts

11/07/2011

Andre Oliveira

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
Responder

Gostei + 0

11/07/2011

Daniel Thomaz

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.
Responder

Gostei + 0

12/07/2011

José Curdo

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

Gostei + 0

12/07/2011

Daniel Thomaz

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?
Responder

Gostei + 0

29/07/2011

Andre Oliveira

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

Qqr duvida perguntae!
Responder

Gostei + 0

29/07/2011

Adriano Carvalho

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;
Responder

Gostei + 0

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

Aceitar