Criação de um novo campo em um formulario

(system) #1

Estou com uma duvida, tenho 2 tabelas no postgre (socio) e (socio informação), criei um formulario socio e criei no proprio formulario socio todos os campos do socio informação em um bloco do tipo aba, lenbrando que a sao 10 campos e 8 sao um luckap manual (Sim ou Não) e os outros 2 campos o tipo de dado é inteiro, gostaria saber como faço, qual macro e evento vou inserir esses valores no banco de dados(insert, delete e upgrad) ao inserir um registro??

agradeço a ajuda!

(Cleyton Euler) #2

Para inserir no banco é sempre INSERT. Use o evento onAfterInsert com a macro sc_exec_sql. Mas do jeito que vc estruturou sua aplicação não sei se vai funcionar, pois tem campos que não são baseados na tabela sócio informação.

Vamos analisar:

1.Incluir no evento “Antes de inserir” os dados da sócio informação, porém ainda não tem o sócio na tabela, então descartamos essa possibilidade.

  1. Incluir no evento “Depois de inserir” os dados da sócio informação, para isso (eu acho) que você terá que marcar a opção de voltar depois de inserir, pois a aplicação vai cadastrar o sócio e depois os dados da sócio informação. Porém, quando o formulário voltar não sei se os campos criados vão trazer os dados. Vc poderia mandar gravar a variável e depois usar as variáveis na sc_exec_sql. Acho que assim funcionaria.

  2. Vc pode fazer isso com Mestre/Detalhe ou App tipo ABA ou ainda ligação, o que eu acho mais recomendável.

Eu faria uma mestre/detalhe. Dados do sócio na mestre e dados da sócio infomação na detalhe em um bloco (que pode ser aberto como aba). No onLoad o bloco com o detalhe vem escondido e no evento onAfterInsert mostra o detalhe caso a operação de inserção não retorne erro.

(system) #3

amigo, eu usei o sc_exec_sql no evento onAfterInsert o problema é que na tabela SOCIO tem a Pk soc_codigo que é Fk na tabela SOCIO_INFORMAÇÃO. mesmo que eu crie os eventos para cada campo do SOCIO_INFORMAÇÃO, ha outro problema e outra duvida, como posso fazer para para declarar uma FK manualmente, pois nao criei o campo soc_codigo(da tabela SOCIO_INFORMAÇÃO) no formulario SOCIO, tambem gostaria de saber se tem como eu colocar um formulario dentro de outro formulario, pq se desse certo nao teria todo esse trbalho, tentei usar Mestre Detalhe como vc falou mais so da certo se for uma consulta, com formulario nao da certo, e se for por meio de ligação, so da certo se for uma Grid, pois pra mim nao da certo, o formulario de cadastro SOCIO_INFORMAÇÃO ja esta pronto, so tenho que da um jeito de coloca-lo em um bloco no formulario SOCIO. Obg pela atenção!

(Cleyton Euler) #4

Para fazer um Mestre/Detalhe a app frm detalhe tem de ser grid editável. Funciona mesmo sem relacionamento entre as tabelas no bd. Não sei explicar mas o SC faz um relacionamento.

Se não quiser usar grid editável como detalhe, use app tipo ABA.

Você tem para cada linha SOCIO mais de uma linha SOCIO INFORMACAO ou para cada linha SOCIO você tem apenas uma linha SOCIO INFORMACAO?

(system) #5

isso, para cada Socio tenho mais de uma linha Socio Informação, o problema é que nao pode ser uma Grid editavel, tem muitos campos no Socio informação e o form de cadastro Socio informação esta pronto, so não consigo coloca-lo dentro do mesmo form Socio, mais vc mim deu uma ideia, vou ver se da certo em Aba, aparecendo os 2forms (Socio e Socio informação) pq daquele jeito que fiz, criando todos os campos do Socio informação em um bloco tipo aba no Socio nao vai da certo por causa do codigo, as 2 tabelas estao relacionadas. obg

(Cleyton Euler) #6

Neste caso eu faria assim:

No frm SOCIO eu usaria a sc_redir() com o id do sócio como parâmetro no evento onafterinsert. Isto porque você só vai acessar o cadastro de sócio quando um sócio NÃO estiver cadastrado.

(system) #7

obg pela ajuda, mais percebi que app tipo aba tambem nao vai da certo, vai ter que ser asim mesmo, como eu fiz, criei todos os campos do Socio informação dentro de um bloco tipo aba no frm Socio, mais como vou fazer pra cadastrar dados so Socio e depois preecher os campos do Socio informação, causando um erro do soc_codigo (frm Socio(PK) e frma Socio informação(FK)) tinha como eu definir em algun evento, dizendo que o soc_codigo(tabela Socio informação) é FK da Tabela Socio? para que eu possa incluir um socio com seus dados e informaçoes?(que sao os campos criados da tabela Socio informação no frm Socio)?

obg!

(Cleyton Euler) #8

Vc passa a PK como parâmetro para a FK. Note que neste caso você tem que gravar primeiro os dados do SOCIO para gerar a PK. O Tipo ABA atende isso. Na aplicação SOCIO você manda gravar variável do campo PK e na aplicação SOCIO INFORMACAO voce manda o campo FK ler a variável gravada.