Autor Tópico: (RESOLVIDO)Cópia de dados pai/filho agindo estranho  (Lida 837 vezes)

Jean Matos

  • Expert
  • *****
  • Mensagens: 956
    • Gestão de Construtoras
    • Email
(RESOLVIDO)Cópia de dados pai/filho agindo estranho
« Online: Janeiro 23, 2013, 04:46:59 pm »
Prezados, já passei da fase iniciante apanhando para copiar dados do form pai/filho para outro form pai/filho  de outras tabelas..
e resolvi isso..tanto que devo tem umas 10 telas que fazem isso perfeitamente...jogando de um setor para outro..

Mas hoje estou querendo copiar todos os dados do form    pai/filho     RM/DETALHERM   para  RM/DETALHERM
tipo... os engenheiros fazem um pedido de material com 50 itens para obra X, daí ele precisa fazer o mesmo para obra Y, logo é só copiar.
então estou copiado tudo do registro 10 para o ultimo insert... mas tá estranho....faz o insert pai certinho, pego o ultimo ID da tabela insedira....mas o lookup do dados filho retornam "0", como se não tivesse nada na tabela origem...  mas tem....
o select pelo builder retorna 50 produtos conforme na tela....mas no codigo do botão nao esta retornando nada.

testei com "echo" e o count tá zero.
devo estar cansado...tem algo que deixei passar ?

Código: [Selecionar]
/**
 * ESTA INSERINDO DADOS NA TABELA PAI
 */
$hoje = Date('Ymd G:i:s');
// SQL statement parameters
$insert_table  = 'tblRM';      // Table name
$insert_fields = array(   // Field list, add as many as needed
      'login' => "'[usr_login]'",
'datasolicitacao' => "'$hoje'",
'idstatus' => "'2'",
'obs' => "'{obs}'",
);

// Insert record
$insert_sql = 'INSERT INTO ' . $insert_table
    . ' ('   . implode(', ', array_keys($insert_fields))   . ')'
    . ' VALUES ('    . implode(', ', array_values($insert_fields)) . ')';

sc_exec_sql($insert_sql);

sc_lookup(ds,"SELECT MAX(idrm) as ultimoID FROM tblRM ");
echo $idrm = {ds[0][0]};
//ESTA INSERINDO OS DADOS DO PEDIDO

sc_lookup(deta,"SELECT cod_compos_compon, id_descricao_componente, quantidade, qdtliberada, dtqcomprar, codunidade
FROM
tblDetalheRM
WHERE
idrm = '{idrm}'");

echo $conta = count({deta});
for($x=0;$x<$conta;$x++)
{

if({deta}===false)
{
echo "Erro de acesso. Mensagem=" .{deta};
}elseif(empty({deta}))
{
echo "Comando Select não retornou dados";
}else
{

 
$produto = {deta[$x][0]};
$descricao = {deta[$x][1]};  
$quantidade = {deta[$x][2]};
$almox = {deta[$x][3]};
$comprar = {deta[$x][4]};
$unidade = {deta[$x][5]};
/**
 * Insert a record on another table
 */
// SQL statement parameters
$insert_table  = 'tblDetalheRM';      // Table name
$insert_fields = array(   // Field list, add as many as needed
        'cod_compos_compon' => "'$produto'",
'id_descricao_componente' => "'$descricao'",
'quantidade' => "'$quantidade'",
'qdtliberada' => "'$almox'",
'dtqcomprar' => "'$comprar'",
'idrm' => "'$idrm'",
'codunidade' => "'$unidade'",
 );
 }
// Insert record
$insert_sql = 'INSERT INTO ' . $insert_table
    . ' ('   . implode(', ', array_keys($insert_fields))   . ')'
    . ' VALUES ('    . implode(', ', array_values($insert_fields)) . ')';

sc_exec_sql($insert_sql);

}
« Última modificação: Janeiro 23, 2013, 05:15:16 pm por Jean Matos »
Sc - 6.xxx , 7.xxx e V8
Windows Server 2008 Enterpriser 64 bits
SqlServer 2008 Express 64 bits
Sistema Integrado de Gestão de Construtoras]WaveTOR - Sistema Integrado de Gestão de Construtoras
Teófilo Otoni - MG
(33)8824-2775

Jean Matos

  • Expert
  • *****
  • Mensagens: 956
    • Gestão de Construtoras
    • Email
Re:Cópia de dados pai/filho agindo estranho
« Responder #1 Online: Janeiro 23, 2013, 05:14:54 pm »
Resolvi... programação é coisa do "capeta"...  conflito de variáveis..
é que na outra solução eu mandava de uma tabela para outra.. nesta estou mandando para a mesma tabela..
daí troquei a ordem de algumas linhas... veja em destaque
***********************************

/**
 * ESTA INSERINDO DADOS NA TABELA PAI
 */
$hoje = Date('Ymd G:i:s');
// SQL statement parameters
$insert_table  = 'tblRM';      // Table name
$insert_fields = array(   // Field list, add as many as needed
        'login'          => "'[usr_login]'",
      'datasolicitacao'    => "'$hoje'",
      'idstatus'          => "'2'",
      'obs'             => "'{obs}'",   
);

// Insert record
$insert_sql = 'INSERT INTO ' . $insert_table
    . ' ('   . implode(', ', array_keys($insert_fields))   . ')'
    . ' VALUES ('    . implode(', ', array_values($insert_fields)) . ')';

sc_exec_sql($insert_sql);

sc_lookup(deta,"SELECT cod_compos_compon, id_descricao_componente, quantidade, qdtliberada, dtqcomprar, codunidade
FROM
tblDetalheRM
WHERE
idrm = '{idrm}'");

sc_lookup(ds,"SELECT MAX(idrm) as ultimoID FROM tblRM "); // quando eu pegava esse ID antem do lookup, o resultado ia para a variavel {idrm}
echo $idrm = {ds[0][0]};                                                     //logo retornava o ID novo que nao tinha nada ainda..
//ESTA INSERINDO OS DADOS DO PEDIDO


echo $conta = count({deta});   
for($x=0;$x<$conta;$x++)
   {
      
         if({deta}===false)
         {
               echo "Erro de acesso. Mensagem=" .{deta};
         }elseif(empty({deta}))
         {
               echo "Comando Select não retornou dados";
         }else
         {   

       
$produto    = {deta[$x][0]};
$descricao    = {deta[$x][1]};       
$quantidade = {deta[$x][2]};
$almox      = {deta[$x][3]};
$comprar   = {deta[$x][4]};
$unidade   = {deta[$x][5]};
/**
 * Insert a record on another table
 */
// SQL statement parameters
$insert_table  = 'tblDetalheRM';      // Table name
$insert_fields = array(   // Field list, add as many as needed
        'cod_compos_compon'       => "'$produto'",
      'id_descricao_componente'    => "'$descricao'",
      'quantidade'             => "'$quantidade'",
      'qdtliberada'             => "'$almox'",
      'dtqcomprar'             => "'$comprar'",
      'idrm'                   => "'$idrm'",
      'codunidade'             => "'$unidade'",
 );
 }   
// Insert record
$insert_sql = 'INSERT INTO ' . $insert_table
    . ' ('   . implode(', ', array_keys($insert_fields))   . ')'
    . ' VALUES ('    . implode(', ', array_values($insert_fields)) . ')';

sc_exec_sql($insert_sql);
   
}
Sc - 6.xxx , 7.xxx e V8
Windows Server 2008 Enterpriser 64 bits
SqlServer 2008 Express 64 bits
Sistema Integrado de Gestão de Construtoras]WaveTOR - Sistema Integrado de Gestão de Construtoras
Teófilo Otoni - MG
(33)8824-2775