Duplicar registro

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Duplicar registro

Mensagem por JoséQuintas »

Como o cliente cadastra muitas filiais de determinadas empresas, tenho a opção de duplicar cadastro.
Não encontrei nada sobre isso, exceto colocar a lista de campos no comando.
Tem outro jeito ?

INSERT INTO JPCADASTRO
( ( SELECT * FROM JPCADASTRO WHERE IDCADASTRO = 10 ) - campos IDCADASTRO, CNPJ, ENDERECO, INSCRICAO )

Por enquanto a saída foi fazer manual:

Código: Selecionar todos

STATIC FUNCTION DuplicaCliente( mIdCadastro )

   LOCAL aList := {}, nCont, cCampo, xValue
   LOCAL cnMySql := ADOClass():New( AppConexao() )

   IF mIdCadastro = 0
      RETURN NIL
   ENDIF
   IF ! MsgYesNo( "Confirma criar novo cadastro baseado no atual?" )
      RETURN NIL
   ENDIF
   WITH OBJECT cnMySql
      :cSql := "SELECT * FROM JPCADASTRO WHERE IDCADASTRO = " + NumberSql( mIdCadastro )
      :Execute()
      FOR nCont = 1 TO :Rs:Fields:Count()
         cField := Upper( :Rs:Fields( nCont - 1 ):Name )
         xValue := :rs:Fields( nCont - 1 ):Value 
         DO CASE
         CASE cField == "IDCADASTRO"
         CASE cField == "CDCNPJ" ; xValue := Left( xValue, 11 ) + "0000-00"
         CASE cField == "CDINSEST" ; xValue := ""
         CASE cField == "CDENDERECO" ; xValue := ""
         ENDCASE
         IF cField != "IDCADASTRO"
            :QueryAdd( cField, xValue )
         ENDIF
      NEXT   
      mIdCadastro := :QueryExecuteInsert( "JPCADASTRO" )
      ::axKeyValue[ 1 ] := mIdCadastro
      :CloseRecorset()
   ENDWITH
   KEYBOARD "A" + Chr( K_ENTER )

   RETURN NIL
Além do problema de digitar muitos campos, a lista pode ficar desatualizada com o passar do tempo, então não gostaria de ter que colocar a lista de campos no fonte.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
susviela@bol.com.br
Usuário Nível 3
Usuário Nível 3
Mensagens: 236
Registrado em: 30 Jun 2017 11:17
Localização: São José / SC
Contato:

Duplicar registro

Mensagem por susviela@bol.com.br »

Se ... e somente se, essa opção de duplicar o cadastro está acontecendo no momento da inclusão:

1) Aviso de gravação realizada com sucesso e perguntando se deseja gravar um outro registro com dados "similares" a esse registro;

2) Se e somente se resposta = SIM (não limpar o formulário e habilitar o botão de gravação )

Isso evitaria mais um acesso ao banco, o que nem chega a ser um problema;

Obs.: o item de pergunta / permissão de duplicar registros poderia ser setado nas configurações do sistema;
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
Responder