Ver Mensaje Individual
  #3 (permalink)  
Antiguo 01/04/2011, 19:38
Blade1982
 
Fecha de Ingreso: marzo-2011
Ubicación: Mexico
Mensajes: 11
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Multiple-step OLE DB errors y SQL en un store procedure

La segunda parte del codigo para completar el store
Código:
---Paso 3:
 ----Realizamos la comparativa entre el nombre completo del innombrable y el nombre completo
  UPDATE tmpprecargaarchivo
  SET cbanderainnombrable = 'S' WHERE cestatus IS NULL
  AND nid_base = @nId_Base
AND cColumnaValidacion='S'
  AND nid_archivobase = @nId_Archivo
  AND cbanderacampollave IS NULL
  AND nid_precargaarchivo IN
    (SELECT tca.nid_precargaarchivo
     FROM catvip cv
     INNER JOIN tmpprecargaarchivo tca ON cv.cnombre = tca.cnombre1
     AND cv.cnombre2 = tca.cnombre2
     AND cv.cpaterno = tca.cappaterno
     AND cv.cmaterno = tca.capmaterno
     WHERE (tca.cestatus IS NULL)
       AND (tca.cbanderanombre1 IS NULL)
       AND (tca.cbanderaappaterno IS NULL )
       AND (tca.cbanderaapmaterno IS NULL )
       AND (cv.cestatus IS NULL)
       AND (tca.nid_base = @nId_Base)) 

----Despues del filtro de nombre completo, activamos tambien la bandera de innombrables para
 ----aquellos que cumplan con los filtros
 ----Primer filtro, nombre 1 contra la base de innombrables
  UPDATE tmpprecargaarchivo
  SET cbanderainnombrable = 'S' WHERE cestatus IS NULL
  AND nid_base = @nId_Base
AND cColumnaValidacion='S'
  AND nid_archivobase = @nId_Archivo
  AND cbanderacampollave IS NULL
  AND (cbanderanombre1 IS NULL)
  AND nid_precargaarchivo IN
    (SELECT tca.nid_precargaarchivo
     FROM catvip cv
     INNER JOIN tmpprecargaarchivo tca ON cv.cnombre = tca.cnombre1
     OR cv.cnombre2 = tca.cnombre1
     OR cv.cpaterno = tca.cnombre1
     OR cv.cmaterno = tca.cnombre1
     WHERE (tca.cestatus IS NULL)
       AND (tca.cbanderanombre1 IS NULL)
       AND (cv.cestatus IS NULL)
       AND (tca.nid_base = @nId_Base)) 

----Segunda comparativa: apellido paterno contra base de innombrables
  UPDATE tmpprecargaarchivo
  SET cbanderainnombrable = 'S' WHERE cestatus IS NULL
  AND nid_base = @nId_Base
AND cColumnaValidacion='S'
  AND nid_archivobase = @nId_Archivo
  AND cbanderacampollave IS NULL
  AND (cbanderaappaterno IS NULL)
  AND nid_precargaarchivo IN
    (SELECT tca.nid_precargaarchivo
     FROM catvip cv
     INNER JOIN tmpprecargaarchivo tca ON cv.cnombre = tca.cappaterno
     OR cv.cnombre2 = tca.cappaterno
     OR cv.cpaterno = tca.cappaterno
     OR cv.cmaterno = tca.cappaterno
     WHERE (tca.cestatus IS NULL)
       AND (tca.cbanderaappaterno IS NULL )
       AND (cv.cestatus IS NULL)
       AND (tca.nid_base = @nId_Base)) 

---Tercera Comparativa: apellido materno contra base de innombrables
  UPDATE tmpprecargaarchivo
  SET cbanderainnombrable = 'S' WHERE cestatus IS NULL
  AND nid_base = @nId_Base
AND cColumnaValidacion='S'
  AND nid_archivobase = @nId_Archivo
  AND cbanderacampollave IS NULL
  AND (cbanderaapmaterno IS NULL)
  AND nid_precargaarchivo IN
    (SELECT tca.nid_precargaarchivo
     FROM catvip cv
     INNER JOIN tmpprecargaarchivo tca ON cv.cnombre = tca.capmaterno
     OR cv.cnombre2 = tca.capmaterno
     OR cv.cpaterno = tca.capmaterno
     OR cv.cmaterno = tca.capmaterno
     WHERE (tca.cestatus IS NULL)
       AND (tca.cbanderaapmaterno IS NULL )
       AND (cv.cestatus IS NULL)
       AND (tca.nid_base = @nId_Base)) 

----Cuarta Comparativa:Telefono contra base de inmarcables
  UPDATE tmpprecargaarchivo
  SET cbanderainmarcable = 'S' WHERE cestatus IS NULL
  AND nid_base = @nId_Base
AND cColumnaValidacion='S'
  AND nid_archivobase = @nId_Archivo
  AND cbanderacampollave IS NULL
  AND cbanderatelefono IS NULL
  AND nid_precargaarchivo IN
    (SELECT tca.nid_precargaarchivo
     FROM catinmarcables cv
     INNER JOIN tmpprecargaarchivo tca ON cv.ctelefono = tca.ctelefono1
     WHERE (tca.cestatus IS NULL)
       AND (tca.cbanderatelefono IS NULL)
       AND (cv.cestatus IS NULL)
       AND (tca.nid_base = @nId_Base)) 

----Quinta comparativa : Ver si se encuentra en base el cliente cargado
SET @cComandoEnBase = 'UPDATE tmpPreCargaArchivo '
  SET @cComandoEnBase = @cComandoEnBase + ' SET cBanderaEnBase=''S'''
  SET @cComandoEnBase = @cComandoEnBase + '  WHERE cEstatus IS NULL AND nId_Base=' + CAST( @nId_Base AS VARCHAR)
  SET @cComandoEnBase = @cComandoEnBase + '  AND nId_ArchivoBase=' + CAST( @nId_Archivo AS VARCHAR)
  SET @cComandoEnBase = @cComandoEnBase + '    AND cbanderacampollave IS NULL AND cColumnaValidacion=''S'' '
  SET @cComandoEnBase = @cComandoEnBase + ' AND cCampoLlave IN (	SELECT CNB.cCampoLlave FROM ' + @cNombreBase + '  CNB '
  SET @cComandoEnBase = @cComandoEnBase + ' INNER JOIN tmpPreCargaArchivo TPC ON TPC.cCampoLlave=CNB.cCampoLLave '
  SET @cComandoEnBase = @cComandoEnBase + ' OR (TPC.cNombre1=CNB.cNombre1 AND TPC.cNombre2=CNB.cNombre2 AND TPC.cApPaterno=CNB.cApPaterno AND TPC.cApMaterno=CNB.cApMaterno) '
  SET @cComandoEnBase = @cComandoEnBase + ' WHERE CNB.cEstatus IS NULL '
  SET @cComandoEnBase = @cComandoEnBase + '	AND CNB.dFechaAlta BETWEEN (DATEADD(day,-90,GETDATE())) AND GETDATE() )' 
EXEC (@cComandoEnBase) 

---Paso 4: Habilitamos los conteos
 ---Conteo de total de registros
  SELECT @nTotalRegistros = COUNT(*)
  FROM tmpprecargaarchivo WHERE cestatus IS NULL
  AND nid_base = @nId_Base
  AND nid_archivobase = @nId_Archivo 

---Habilitamos el contador de los campos que no tienen campo llave
  SELECT @nCampoLlaveVacio = COUNT(*)
  FROM tmpprecargaarchivo WHERE cestatus IS NULL
  AND nid_base = @nId_Base
  AND nid_archivobase = @nId_Archivo
AND cColumnaValidacion='S'
  AND cbanderacampollave = 'S' 


----Realizamos el conteo de los campos repetidos
  SELECT @nCampoLlaveRepetidos = COUNT(*)
  FROM tmpprecargaarchivo WHERE cestatus IS NULL
  AND nid_base = @nId_Base
  AND nid_archivobase = @nId_Archivo
  AND cbanderacampollave IS NULL
AND cColumnaValidacion='S'
  AND cbanderarepetido = 'S' 

----Tomamos el total de registros subidos
  SELECT @nTotalRegistrosSubidos = COUNT(*)
  FROM tmpprecargaarchivo WHERE cestatus IS NULL
  AND nid_base = @nId_Base
  AND nid_archivobase = @nId_Archivo
  AND cbanderacampollave IS NULL
  AND (cbanderaenbase IS NULL
       AND cbanderacampollave IS NULL
       AND cbanderadatos IS NULL
       AND cbanderanombre1 IS NULL
       AND cbanderaappaterno IS NULL
       AND cbanderaapmaterno IS NULL
       AND cbanderatelefono IS NULL
      AND  cbanderatelefonolongitud IS NULL
     AND cbanderaerrortelefono IS NULL
       AND cbanderainnombrable IS NULL
       AND cbanderainmarcable IS NULL
       AND cbanderarepetido IS NULL) 

----Conteo de los registros no cargados
  SELECT @nRegistrosNoCargados = COUNT(*)
  FROM tmpprecargaarchivo WHERE cestatus IS NULL
  AND nid_base = @nId_Base
  AND nid_archivobase = @nId_Archivo
  AND cColumnaValidacion='S'
  AND cbanderacampollave IS NULL
  AND (cbanderaenbase = 'S'
       OR cbanderacampollave = 'S'
       OR cbanderanovalidados = 'S'
       OR cbanderadatos = 'S'
       OR cbanderanombre1 = 'S'
       OR cbanderaappaterno = 'S'
       OR cbanderaapmaterno = 'S'
       OR cbanderatelefono = 'S'
       OR cbanderatelefonolongitud='S'
       OR cbanderaerrortelefono='S'
       OR cbanderainnombrable = 'S'
       OR cbanderainmarcable = 'S'
       OR cbanderarepetido = 'S') 

----Realizamos el conteo de esos registros no validados
  SELECT @nTotalRegistrosNoValidados = COUNT(*)
  FROM tmpprecargaarchivo WHERE cestatus IS NULL
  AND nid_base = @nId_Base
  AND nid_archivobase = @nId_Archivo
  AND ccolumnavalidacion = 'N' 

----Conteo Sin Nombre
  SELECT @nCamposLlaveSinNombre = COUNT(*)
  FROM tmpprecargaarchivo WHERE cestatus IS NULL
  AND nid_base = @nId_Base
  AND nid_archivobase = @nId_Archivo
AND cColumnaValidacion='S'
  AND cbanderacampollave IS NULL
  AND (cbanderanombre1 = 'S') 

----Conteo Sin Apellido Paterno
  SELECT @nCamposLlaveSinApPat = COUNT(*)
  FROM tmpprecargaarchivo WHERE cestatus IS NULL
  AND nid_base = @nId_Base
  AND nid_archivobase = @nId_Archivo
AND cColumnaValidacion='S'
  AND cbanderacampollave IS NULL
  AND (cbanderaappaterno = 'S') 

----Conteo Sin Apellido Materno
  SELECT @nCamposLlaveSinApMat = COUNT(*)
  FROM tmpprecargaarchivo WHERE cestatus IS NULL
  AND nid_base = @nId_Base
  AND nid_archivobase = @nId_Archivo
AND cColumnaValidacion='S'
  AND cbanderacampollave IS NULL
  AND (cbanderaapmaterno = 'S')