
01/04/2011, 19:38
|
| | Fecha de Ingreso: marzo-2011 Ubicación: Mexico
Mensajes: 11
Antigüedad: 14 años 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')
|