Página 1 de 1

A importância de nomes únicos

Enviado: 18 Out 2023 11:19
por JoséQuintas
/* Erro SQL (1062): Duplicate entry '05.999.041/0001-12-. . -' for key 'INDICE' */
/* Arquivo "backup1.sql" executado, com consultas 2.246 e linhas afetadas 233.282 */
E agora, deu erro aonde?
É na restauração do backup.
é em uma das 233.282 linhas.....

A importância de nomes únicos

Enviado: 18 Out 2023 12:10
por JoséQuintas
Não faz sentido estar gravado repetido.
Na dúvida incluir uma possível correção na próxima atualização.
Pensando bem, pode ter sido o backup com tudo em uso, foi incluída uma chave nova que mudou a ordem pra continuação do backup.

Código: Selecionar todos

STATIC FUNCTION Update1018()

   LOCAL cnSQL := ADOLocal(), aList := {}, aItem, lDelete

   WITH OBJECT cnSQL
      :Execute( "SELECT ENEMINFE, ENDESNFE, COUNT(*) AS QTD" + ;
         " FROM JPEMANFE" + ;
         " GROUP BY ENEMINFE, ENDESNFE" + ;
         " HAVING COUNT(*) > 1" )
      DO WHILE ! :Eof()
         AAdd( aList, { :String( "ENEMINFE" ), :String( "ENDESNFE" ) } )
         :MoveNext()
      ENDDO
      :CloseRecordset()
      FOR EACH aItem IN aList
         :Execute( "SELECT * FROM JPEMANFE WHERE ENEMINFE=" + StringSQL( aItem[1] ) + ;
            " AND ENDESNFE=" + StringSQL( aItem[2] ) )
         lDelete := .F.
         DO WHILE ! :Eof()
            IF lDelete
               :ExecuteNoReturn( "DELETE FROM JPEMANFE WHERE IDEMANFE=" + NumberSQL( :Number( "IDEMANFE" ) ) )
            ELSE
               lDelete := .T.
            ENDIF
            :MoveNext()
         ENDDO
         :CloseRecordset()
      NEXT
   ENDWITH

   RETURN Nil