Duplicar registro

Forum sobre SQL.

Moderador: Moderadores

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

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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
Carlos Susviela
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 Carlos Susviela »

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