Prezados, nem lembro se já perguntei.
Mas preciso em uma determinada lista pegar alguns registros e enviar para um formulário mestre/detalhe…
como armazeno essa Array ?
Na minha Grid tenho vários produtos de um determinado centro de custo… logo já tenho a informação básica do form mestre (centro de custo) e os produtos que irão para o detalhe…
HELP… nao estou enxergando como fazer isso.
Jean,
Acho que com o botão RUN na grid você vai escolher o que precisa pra enviar… Daí é só gravar nas tabelas (mestre/detalhe).
Sim… no entanto quero entender a lógica do funcionamento…
Cenário:
Listo 100 produtos do centro de custo “Obra 01”
Desses 100 produtos escolho 30 produtos com suas respectivas quantidades.
Ao acionar o RUN Envio o codido do centro de custo “Obra 01” para o formulário Compras.
Envio simultaneamente os produtos com suas respectivas quantidade para o form Detalhe_compras.
Nem faço ideia de como o RUN transporta isso do grid para tabela…
Dentro de um dos métodos do botão RUN (não me lembro agora, não estou na minha máquina), você vai usar o INSERT pra mandar para as tabelas.
Consegui fazer um POG aqui…
estou publicando no meu canal do youtube…
http://www.youtube.com/channel/UCW64zxaiHKt3E1P_nVdH1aA
alguem aí pra dar uma dica de como melhorar isso ?
Jean…
assisti seu video… quer melhorar o processo do botão run?
Conselho: Não faça inserts na onrecord, faça tudo na onfinsh.
Como ?
OnScriptInit: //preparar variáveis
[iw]=Array(); //-> Variaveis global(Sessão: Não, Get: Não, Post:Não, Opcional: Sim, Saída).
[iw][“i”]=0; // Iniciando meu contador de registros selecionados no select
Botão Run/OnRecord: // Executado para cada registro selecionado ao clicar no botão run.
$_i=[iw][“i”]=[iw][“i”]+1; //Mais um no contador
[iw][$_i][“valor”]={Valor}; //Guardando campos do registro selecionado
[iw][$_i][“desc”]={Descricao};
[iw][$_i][“fornec”]={id_fornecedor};
[iw][$_i][“empresa”]={empresaid};
Botão Run/OnFinish: // Executado por último:
$_values="";
IF (ISSET($_REQUEST[‘PHPSESSID’])) $_phpsessid=@$_REQUEST[‘PHPSESSID’];
IF (!ISSET($_phpsessid)||EMPTY($_phpsessid)) $_phpsessid=session_id(); //pegando sessão do php
for ($_i = 1; $_i <= [iw][“i”]; $_i++) { // montando os values da instrução INSERT.
$_values.="(’".$_phpsessid."’,".[iw][$_i][“empresa”].",".[iw][$_i][“fornec”].",".[iw][$_i][“valor”].",’".[iw][$_i][“desc”]."’,‘P’),";
}
$_values=trim($_values,","); //removendo as virgulas externas
$_ins="INSERT INTO fin_recibo (sessao,empresa_id,clifor_id,valor,descricao,tipo) VALUES ".$_values; // inserindo todos os registros selecionados
sc_exec_sql($_ins);
sc_redir(recibo_all_pdf.php,"","_blank"); // desviando para aplicação pdf para imprimir os registros inseridos.
//aqui vc faz todo seu processo, grava o mestre, pego seu id, insere seus itens e pode até desviar direto para o form mestre detalhe.
Ok… farei essa implementação… desculpa a POG, mas em quase 2 anos de SC é a primeira APP que crio usando o RUN…logo não sei nada sobre ele… preciso entender a lógica do mesmo…
na implementação que propus vou ter o risco da concorrencia de usuario visto que gero primeiro a tabela filho…por isso pedi dicas de como fazer o uso correto do RUN.
Obrigado por enquanto.
está ocorrendo um erro que nao estou sabendo corrigir.
$_values="";
for ($_i = 1; $_i <= [iw][“i”]; $_i++) { // montando os values da instrução INSERT.
$_values.="(’".[iw][$_i][“produto”].",".[iw][$_i][“especificacao”].",".[iw][$_i][“quantidade”].",".[iw][$_i][“quantidade”].",".$_rm.",".[iw][$_i][“unidade”]."’),";
}
$_values=trim($_values,","); //removendo as virgulas externas
$_ins="INSERT INTO tblDetalheRM (cod_compos_compon,id_descricao_componente,quantidade,dtqcomprar,idrm,codunidade) VALUES ".$_values; // inserindo todos os registros selecionados
sc_exec_sql($_ins);
Observe que os valores em Azul parecem duplicados mas nao… tenho que mandar o valor de um campo para dois campos.
está gerando o seguinte erro;
ERRO
Erro ao acessar o banco de dados
SQLState: 21S01 Error Code: 109 Message: [Microsoft][SQL Server Native Client 10.0][SQL Server]Existem mais colunas na instru‡Æo INSERT do que valores especificados na cl usula VALUES. O n£mero de valores da cl usula VALUES deve corresponder ao n£mero de colunas especificado na instru‡Æo INSERT.
INSERT INTO tblDetalheRM (cod_compos_compon,id_descricao_componente,quantidade,dtqcomprar,idrm,codunidade) VALUES (‘19,TESTE,10.00,10.00,129,12’)…esta retornando os valores que preciso mas ainda assim dá o erro.
OBS: a tabela de destino no banco tem varios outros campos…tenho que me referir a eles tb ?
Corrigido.
Não observei o tipo de dado… estava esquecendo das aspas simples em tipo de dado texto.
Em alguns minutos estará postado o vídeo com a melhoria .
Nossa muito boa dia… Parabéns a todos.