Autor Tópico: (RESOLVIDO)Copiar dados da tabela mestre e da tabela filho  (Lida 1088 vezes)

Jean Matos

  • Expert
  • *****
  • Mensagens: 956
    • Gestão de Construtoras
    • Email
(RESOLVIDO)Copiar dados da tabela mestre e da tabela filho
« Online: Junho 16, 2012, 03:43:17 pm »
Prezados, criei um botão para copiar os dados de um mapa de coleta para uma ordem de compra.
Cenário - tenho os dados em uma tabela Pai que tem uma talela filho(mestre-detalhe)
preciso copiar (ao acionar o botao) os dados para outras 2 talebas -Ordem de comprar que tem um detalhe.

Estou conseguindo copiar apenas os dados da tabela Pai. não estou sabendo compiar as duas.

Alguem pode me dar uma Luz ?
« Última modificação: Janeiro 23, 2013, 04:30:07 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

Régis Matos

  • Global Moderator
  • Expert
  • *****
  • Mensagens: 632
  • Se a porta não se abrir, construa uma.
    • Email
Re:Copiar dados da tabela mestre e da tabela filho
« Responder #1 Online: Junho 17, 2012, 02:35:25 pm »
Olá Jean...

Para vc fazer uma cópia, dos itens filho vc   vai ter que fazer um while percorrendo todos os registro, e dando um insert na segunda tabela...

vc pode usar a estrutura pré estabelecida(Insert code) para facilitar...

Não esquece de fazer os tratamento, para não ter duplicidade, caso o usuário copie mais de uma x....



Ex.

/**
 * Selecting a field from another table using the recordset
 */


$id_tabela_pai = {id_tabela_pai};


// Check for record
$check_sql = 'SELECT campo1, campo2'
   . ' FROM tabela_filho'
   . " WHERE id_tabela_pai = '" . $id_tabela_pai . "'";

sc_select(rs, $check_sql);

//initialize the field
{field_total} = 0;
if (false == {rs})     // Error while accessing database
{
    sc_error_message('Error while accessing database.');
}
else
{
   while(!$rs->EOF)
    {
      $campo1 = $rs->fields[0];
      $campo2 = $rs->fields[0];
      
      
/**
 * Insert a record on another table
 */

// SQL statement parameters
$insert_table  = 'tabela_copia_filho';      // Table name
$insert_fields = array(   // Field list, add as many as needed
     'campo1' => "'$campo1'",
     'campo2' => "'$campo2'",
 );

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

sc_exec_sql($insert_sql);
      
      
      $rs->MoveNext();
    }
    $rs->Close();
}

Jean Matos

  • Expert
  • *****
  • Mensagens: 956
    • Gestão de Construtoras
    • Email
Re:Copiar dados da tabela mestre e da tabela filho
« Responder #2 Online: Junho 17, 2012, 04:17:45 pm »
Ok..verei se consigo implementar.
Posto o resultado em seguida.
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:Copiar dados da tabela mestre e da tabela filho
« Responder #3 Online: Janeiro 23, 2013, 04:29:33 pm »
Esqueci de fechar esse tópico..

Código: [Selecionar]
/**
 * ESTA INSERINDO DADOS NA TABELA PAI
 */
$hoje = Date('Ymd G:i:s');
$numero = strtoupper(substr(md5(microtime()),0,10));
// SQL statement parameters
$insert_table  = 'tblOrdemdeCompra';      // Table name
$insert_fields = array(   // Field list, add as many as needed
      'numeroOdc' => "'$numero'",
      'idobra' => "'{idobra}'",
'frete' => "'0'",
'desconto' => "'0'",
'idstatus' => "'9'",
'comprador' => "'[usr_login]'",
'datacompra' => "'$hoje'",
'idrm' => "'{idrm}'",
'baixa' => "'1'",
 );

// 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(idordem) as ultimoID FROM tblOrdemdeCompra ");

//ESTA ATRIBUINDO O NUMERO SEQUENCIAL DA ODC
$idordem = {ds[0][0]};
SeqAPOC($idordem);

//ESTA INSERINDO OS DADOS DO PEDIDO

sc_lookup(det,"SELECT
   cod_compos_compon,
   id_descricao_componente,
   dtqcomprar,
   codunidade
FROM
   dbo.tblDetalheRM
WHERE
   idrm = '{idrm}' AND
   dtqcomprar <> '0'");

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

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

 
$produto = {det[$x][0]};
$descricao = {det[$x][1]};  
$quantidade = {det[$x][2]};
$unidade = {det[$x][3]};
/**
 * Insert a record on another table
 */
// SQL statement parameters
$insert_table  = 'tblDetalheODC';      // Table name
$insert_fields = array(   // Field list, add as many as needed
      'idordem' => "'$idordem'",
      'cod_compos_compon' => "'$produto'",
'id_descricao_componente' => "'$descricao'",
'dtqcomprar' => "'$quantidade'",
'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);
}

//atualizo o status da rm para atendido

/**
 * Update a record on another table
 */

// SQL statement parameters
$update_table  = 'tblRM';      // Table name
$update_where  = "idrm = '{idrm}'"; // Where clause
$update_fields = array(   // Field list, add as many as needed
    "comprador = '[usr_login]'",
"idstatus = '12'",
     "datacompra = '$hoje'",
 );

// Update record
$update_sql = 'UPDATE ' . $update_table
    . ' SET '   . implode(', ', $update_fields)
    . ' WHERE ' . $update_where;
sc_exec_sql($update_sql);

//cria avaliacao iso

/**
 * Insert a record on another table
 */

// SQL statement parameters
$insert_table  = 'avalia_iso_fornecedor';      // Table name
$insert_fields = array(   // Field list, add as many as needed
     'idordem' => "'$idordem'",
     'status' => "'1'",
 );

// 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_redir(Pesquisa_OrdemdeCompra.php,"","_self");

Resolvido
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