Inserir vários registros de uma vez

Boa tarde, alguém sabe como eu posso inserir vários registros de uma vez?
Eu preciso de um formulário que eu informe quantas mensalidades e o valor para um cliente cadastrado no sistema.

Agradeço.

Formulário multiplos registros ou um controle com estrutura de repetição inserindo na tabela.

Agradeço pela atenção Cleiton, realmente estou tentando com formulário multiregistros, mas não sei como inserir 10 registros de uma vez sem ter que clicar em inserir um a um, sobre o controle descrito o que seria essa alternativa?

Fica complicado sem entender o contexto do form, mas sugiro que dê uma lida no help da macro sc_exec_sql, aí fica a seu critério em qual evento disparar as inclusões.
Se precisar de mais ajuda nos dê detalhes da sua necessidade.
Um abraço.
Rodrigo

Um cliente A faz uma compra, sendo que no formulário prestações eu preciso que o sistema gere por exemplo: 30 mensalidades para o cliente A, seriam 30 registros inseridos na tabela, todos de uma vez.
Agradeço.

Parceiro,

Faz isso com alguma estrutura de repetição do PHP.

var_cliente = 1
var_parcelas = 30
var_parcela_valor = 30

enquanto var_parcelas for igual a 30

insere um registro no banco para o cliente 1 com o valor 30
decremeta var_parcelas

próximo registro

Veja as estruturas de repetição do PHP e use a que vc achar melhor para o seu código.

Agradeço, mas teria um código de exmplo para demontrar a sua explicação? Agradeço.

Posta como está tentando fazer, que ajudamos!!!

OK. Eu criei um formulário mestre, dentro deste eu criei um formulário Mestre/detalhe multiregistro que, dentro de um frame, cria parcela para este cliente do formulário principal. Até aqui está funcionando perfeitamente. Tem um botão dentro desse frame para criar a parcela, mas eu preciso de um botão que pergunte quantas parcelas e automaticamente já abra os registros com os vencimentos de 30 em 30 dias. Exempo: Adicione 10 registros com vctos em 01/02/2011, 01/03/2011, etc.
Hoje eu preciso adicionar 10 registros um a um de forma braçal.

Agradeço.

Usa a macro macro sc_exec_sql no onAfterInsert do form mestre pra inserir os registros na tabela detalhe, daí quando abrir o form detalhe os registros já estarão lá. Pra fazer o calculo dos vencimentos vc usa a macro sc_date.

ola, estou com o mesmo problema, gostaria de sabe se voce conseguio a solução

Coema, até hoje não consegui a solução. Eu gostaria de ver algum exemplo com essas idéias citadas para eu tentar entender, mas não consegui nenhum.

1 Curtida

Vamos supor que vc vendeu um produto em 10x para um cliente.

Vc escreve um código que divide o valor da venda por 10. Depois vc manda gravar 10 vezes um registro na tabela contas a receber, por exemplo, com o valor da parcela e os dados complementares, cliente, data de vencimento, etc. Para isto vc usar uma estrutura de repetição.

Então vc precisa:
Dividir o valor total da venda por 10
Gravar na tabela respectiva 10 registros, incrementando a data de vencimento

Como ja foi dito, vc vai trabalhar com sc_exec_sql, sc_date e para gravar em lote, acho que o laço FOR é o ideal.

Agradeço Cleyton, vou quebrar um pouquinho a cabeça e tentar fazer esse código. Obrigadão.

Amigo, a lógica é a mesma do post http://www.netmake.com.br/forum/index.php?topic=2945.0

É só adaptar para sua necessidade, em vez de enviar o e-mail grave o registro.

Graças a ajuda o George Carvalho resolvi com o código abaixo.
Alterei conforme minhas necessidades e chamei o método com um botão no formulário mestre.

//ds_parcela - pega os valores da tabela de cadastro

sc_lookup(ds_parcela, “SELECT valor_liq_cadastro, venc1_cadastro, PLANO_ID, qtde_mens_cadastro from cadastro WHERE CADASTRO_ID = {CADASTRO_ID}”);

//baseado no ds_parcela, informa os seguintes valores aos campos

$valor = {ds_parcela[0][0]}; //valor da mensalidade
$vdata = {ds_parcela[0][1]}; //primeiro vencimento
$plano = {ds_parcela[0][2]}; //plano do contrato
$parc = {ds_parcela[0][3]}; // número de parcelas

// mensagem de erro

if(false === {ds_parcela}){
sc_error_message(“Erro no acesso a tabela CADASTRO!” . {ds_mensa_erro});
return;
}

//Gera parcelas - cria chave primaria da tabela cobranca

sc_lookup(ds_parc_id,“select max(cobranca_id_cob)+1 from cobranca”);

if(false === {ds_parc_id}){
sc_error_message(“Erro no acesso da tabela de cobranca!” . {ds_parc_id_erro});
return;
}

if({ds_parc_id[0][0]} == 0){
$id = 1;
}else{
$id={ds_parc_id[0][0]};
}

$laco = 1; //determina a qtde de loops
$mes = 1;
$vdata1 = sc_date ($vdata, “aaaa-mm-dd”, “-”, 0, $mes, 0); //faz o sistema gerar parcelas a partir da data de vencimento informada no formulário cadastral e não 30 dias após
while($laco <= $parc){
$venc = sc_date ($vdata1, “aaaa-mm-dd”, “+”, 0, $mes, 0); //determina o valor do $laco

//INCREMENTA O MES

  sc_exec_sql("insert into cobranca
               values('$id','{CADASTRO_ID}','$venc','$valor','1','',Null,'{PLANO_ID}',Null,Null,'$valor',Null)");
                                 
           
  $id++;
  $laco++;
  $mes++;

}

Obrigado George

1 Curtida

Por nada.

Meu amigo um duvida essa função voce coloco em qual lugar no SC ? nos eventos ? ou crio um botao ajax onde chamo essa função ?

Boa pergunta, pois com botão do tipo Ajax ou PHP não funciona… também gostaria de saber.