****RESOLVIDO***** Salvar Unico Campo Formulário Mestre/Detalhe

(Agostinho) #1

criei um formulario mestre/detalhe aonde no detalhe eu tenho apenas um campo que é de valor aonde se é digitado, para esse campo criei uma chamada ajax, que executa uma função em php que faz um insert em uma tabela que não é nem uma das duas nem a mestre nem a detalhe é outra. Porem o insert não é realizado, o evento não é executado, coloqueo o ajax no evento OnChante, OnBlur e nada ocorre, tentei colocar uma sc_alert e ele tambem nao me aparece na tela. Alguem teria alguma dica de como resolver isto?

Grato

(waae) #2

vc tentou colocar no evento “onBeforeInsert” ou no “onAfterInsert” desse formulário detalhe tipo:
sc_exec_sql("INSERT INTO…
?

(Agostinho) #3

Não tentei, vou fazer isso e posto o resultado, obrigado pelo retorno.

(Agostinho) #4

Ele nao passa evento, coloquei um sc_alert nele e nada ocorre, aparece até a imagem do ajax, mas nada é executado.

(waae) #5

se vc colocar o sc_alert no evento “onAfterInsert” não vai aparecer mesmo o Alerta.

O certo seria você usar o sc_exec_sql("insert Into… no evento “OnBeforeInsert”.

ex:
sc_exec_sql(“INSERT INTO nomedatabela (campo1,campo2)
VALUES({campodesseformulario1}, {campodesseformulario2})”);

Não funcionou?

(Agostinho) #6

Não funcionou, vou tentar ser radical, ou seja, excluir e fazer do zero para ver.

(Agostinho) #7

Nada, simplesmente não da erro, não faz o insert, coloquei em modo debug a aplicação e mesmo assim não aparece nada.

(waae) #8

coloque o codigo aki pra gente ver!!

(Agostinho) #9

O codigo abaixo esta no evento BEFOREINSERT

$obs = "Pgto efetuado através do cheque numero " + [numero_cheque];
sc_exec_sql(“INSERT INTO movimentotitulo (tipo_lancamento, titulo, cheque, data_movimento, valor, observacao, debito_credito)
VALUES ([1, [v_tit],[cheque], ‘[data_movto]’, ‘[v_valor]’,$obs, ‘D’)”);

O mais estranho de tudo é que não da erro nenhum, nem debugando, nem olhando no log do banco de dados, nada, ele simplesmente não executa, ja mudei para Grid Editavel, voltei para Grid Editavel(View) e nada. coloquei isto tambem no evento OnChange(Ajax) do campo que é digitado, chega até a ser mostrado o processamento do ajax, mas na realidade, nao ta fazendo nada.

To no desespero ja… 3 dias em cima disto e nada.

(waae) #10

Algumas observações:
1º:
[numero_cheque] é uma variável global?
caso esse seja o campo que você está tentando pegar direto do formulário o correto seria:
$obs = "Pgto efetuado através do cheque numero " + {numero_cheque};

2º:
na parte: VALUES ([1, [v_tit],[cheque], ‘[data_movto]’, ‘[v_valor]’,$obs, ‘D’)");
porque está “VALUES ([” ?? porque abre esse colchete se não o fecha ?? ele está a mais ai nessa linha!!!
Outra coisa… como a variavel $obs é do tipo texto vc tem que colocá-la entre ‘…’ (aspas simples)
Resumindo:
… VALUES (1, [v_tit],[cheque], ‘[data_movto]’, ‘[v_valor]’,’$obs’, ‘D’)");

acho que é isso… pelo menos os “erros” que achei…

(Agostinho) #11
(Agostinho) #12

Tentei de novo com as suas dicas e mesmo assim nada ocorreu, não estou sabendo usar direito esse mestre detalhe, o duro é que o sql não é gerado, pelo menos o debug não mostra, e no banco nada é gravado.

(Agostinho) #13

Consegui resolver de maneira XUNXEX, mas fazer o que, fica ai a dica para alguem, veja o cenário:

Tenho 3 tabelas:
Titulos (Dados dos Titulos pagar/Receber)
MovimentoTitulo (Dados que alteram o saldo do titulo), pode ser juros/descontos
Cheque(Cheques emitidos pela empresa)

Criei um form Mestre(Cheque), com 1 detalhe(Titulos pagos com este cheque).

Problema Criado:
Não podia gravar na tabela titulos, a gravação tem que ser na tabela de MovimentoTitulo referenciando o pgto efetuado pelo cheque, esse pagamento pode ser total ou parcial. Tentei via ajax, não deu certo, tentei colocar o codigo SQL no evento before insert, tambem não deu certo.

Solução XUNXEX:
Criei uma view que lista os titulos vencidos até a presente data, o form detalhe passou a pegar desta view os dados(Form Grid Editavel).
Usei procedure para gravar os dados UPDATE que seriam da view, e na procedure no banco de dados eu recebo os dados e faço a gravação na tabela MovimentoTitulo e atualizo o saldo do titulo pendente ou zero cfe o caso.

Pelo menos enquanto não vejo uma solução mais profissional, ficou assim mesmo…infelizmente.

(waae) #14

Agostinho…
esse codigo era pra ter resolvido.

Só uma coisa que não perguntei:
no evento onbeforeInsert de qual formulário vc tah colocando esse codigo?? Tem que ser no formulário de Detalhe.

(Agostinho) #15

Sim, eu estava colocando ele no form detalhe mesmo, mas mesmo assim ele não executava, dai publiquei pensando ser problema na area de desenvolvimento e mesmo assim naõ houve nada. Tambem fiquei sem entender, mas como o prazo ja ta estourando, tive que improvisar.

Obrigado pela ajuda.