Autor Tópico: Ítens do mestre/detalhe já vindo abertos  (Lida 3212 vezes)

Diogo Toscano

  • Administrator
  • Expert
  • *****
  • Mensagens: 590
    • :: ScriptCase ::
    • Email
Ítens do mestre/detalhe já vindo abertos
« Online: Setembro 08, 2010, 09:20:53 am »
Costumo fazer esse código, não sei se é o correto, mas costuma ajudar bastante para os ítens ja virem abertos.

É apenas a inserção do iten pai antes.

No menu você cria um ítem "Novo pedido" que envia para uma aplicação blank(na v4 pode ser controle) com o seguinte codigo:

$str_sql = "INSERT INTO venda (empregados_idempregados, data_venda, pago, enviado) VALUES ('". [var_login] ."', NOW(), 'N', 'N')";
sc_exec_sql($str_sql);

sc_lookup(rs, "SELECT LAST_INSERT_ID()");

sc_redir(form_venda.php, idvenda={rs[0][0]});


É apenas a inserção e a passagem da chave primaria (pedido) para o formulario no sc_redir.
Obvio que o insert vai mudar de acordo a estrutura de cada banco (os not null) e o comando last_insert_id vai variar tambem de cada banco, para pegar a ultima chave inserida.
Esse exemplo de codigo é especificamente para MySQL.

gferrai

  • Novato
  • *
  • Mensagens: 27
Re: Ítens do mestre/detalhe já vindo abertos
« Responder #1 Online: Novembro 09, 2010, 05:04:58 pm »
Diogo, essa função garante que o ID do último registro inserido é o que você cadastrou, ou seja, ela garante que é na mesma transação?
Se não garantir, quando houver múltiplos acessos, ela retornará o último ID inserido, que não necessariamente será o do meu registro.

gferrai

  • Novato
  • *
  • Mensagens: 27
Re: Ítens do mestre/detalhe já vindo abertos
« Responder #2 Online: Novembro 09, 2010, 05:07:08 pm »
No meu caso, eu uso o SQLServer e a função que recupera o último ID é o @@identity.
Tens idéia de como posso recuperar o último0 degistro em uma transação como o banco citado?

Diogo Toscano

  • Administrator
  • Expert
  • *****
  • Mensagens: 590
    • :: ScriptCase ::
    • Email
Re: Ítens do mestre/detalhe já vindo abertos
« Responder #3 Online: Novembro 09, 2010, 05:45:58 pm »
o mysql garante sim que nao vai ter concorrencia e voce vai pegar o ultimo registro inserido usando auto incremento naquela sessão.

Para sql server:
http://msdn.microsoft.com/pt-br/library/ms190315.aspx

Oracle e postgres recomendo usar objetos de sequencia. Ai eh so utilizar nextval, curval ...