Um formulário com dados de duas tabelas

tenho a tabela
PESSOA com (id,endereço, didade, estado…),
e as tabelas
PESSOA_FISICA (nome, rg, cpf…) e
PESSOA JURIDICA.(razão Social, CNPJ, IE…)
Como faço para montar um formulário de inserção que já faça inserção na tabela PESSOA e na PESSOA_FISICA, completando o cadastro de uma pessoa fisica.
Da mesma forma,
Como faço para montar um formulário de inserção que já faça inserção na tabela PESSOA e na PESSOA_JURIDICA, completando o cadastro de uma pessoa juridica.

O Scriptcase trata isso , ou vou ter que desnormalizar o banco?

Simples, construa seu “Insert” no evento onAfterInset. Isso no caso do insert.

Obrigado pela resposta Fred, mas não ficou claro pra mim,

Onde estão os campos da outra tabela???
Eu tenho que criar o código do PESSOA_FISICA no evento onAfterInset??? do form PESSOA?? E como passo o parâmetro de um para o outro para referencia-lo???

Não ficou claro

eu abri o form:
PESSOA com (id,endereço, didade, estado…),cadastrei estes dados, como dou continuidade no cadastro na tabela
PESSOA_FISICA (id, nome, rg, cpf…) ou como coloco estes campos no mesmo form??? São informações complementares.

desculpe, mas não ficou claro,

Obrigado,

O que não entendo é você ter 3 tabelas (Pessoa, Pessoa_Fisica e Pessoa_jurídica) onde uma só resolveria tudo, mas tudo bem, vamos lá.

Primeiro se você tem uma tabela A onde irá inserir os dados em duas tabelas B e C, então essa tabela A, tem que conter os mesmos campos que contem nas outras tabelas B e C.

Ou seja, na tabela “Pessoa”:

PESSOA com (id, nome, rg, cpf, razão Social, CNPJ, IE, endereço, idade, estado, etc ); // Veja que há campos das duas tabelas (pessoa_fisica e pessoa_juridica) na tabela pessoa.

PESSOA_FISICA (nome, rg, cpf…endereco, idade, estado, etc) ;
PESSOA JURIDICA.(razão Social, CNPJ, IE…endereco, idade, estado, etc);

Depois crie o form usando a tabela pessoa, nessa tabela no evento onBeforeInsert \ onAfterinsert use a macro “sc_exec_sql” para pegar os dados dos campos e fazer o insert.

Ex: Vou colocar como usar a macro sc_exec_sql mas estude no site os tutoriais do SC.
// campos da tabelaA.

$campo1 = {$campo1};
$campo1 = {$campo2};
$campo1 = {$campo3};

sc_exec_sql(" INSERT INTO suatabelaB (campo1, campo2, campo2) VALUES (’$campo1’, ‘$campo2’, ‘$campo3’)");
sc_exec_sql(" INSERT INTO suatabelaC (campo1, campo2, campo2) VALUES (’$campo1’, ‘$campo2’, ‘$campo3’)");

Pronto, se tiver dúvida só avisar…

Abração!

na verdade eu estou tentando deixar o banco normalizado,sem campos vazios, por isso a pessoa só recebe os dados comuns e a referencia id e nome ou id e razão social.

PESSOA com (id, id, nome ou razão social, endereço, estado, etc ); só dados comuns a pessoa jurida ou fisica

PESSOA_FISICA (id,nome, rg, cpf…) ; só dados referentes pessoa fisica
PESSOA JURIDICA.(id,razão Social, CNPJ, IE…); só dados referentes pessoa juridica

mas confesso que estou tentdo dificuldades em montar os forms.

no form de pessoa fisica eu tenho que juntar as tabelas PESSOA e PESSOA FISICA
no form de pessoa juridica eu tenho que juntar as tabelas PESSOA E PESSOA JURIDICA

assim eu estou tentando fazer o form da tabela de PESSOA FISICA e criando os campos na mão que vão cadastrar os dados da PESSOA
e o mesmo com PESSOA JURIDICA

Ai eu usaria o codigo que vocÊ passou, que honestamente ainda não testei, vou feri isso ainda hoje e respondo.

Faz sentido o que estou fazendo??

Eu faria um controle, que se tem liberdade para criar os campos e montar o INSERT desejado, conta com o onValidade para validação, após a validação pode-se usar o onValidadeSuccess para inserts.