1/27/2016 08:41:00 a. m.
Share:
Blog Informático sobre Análisis y Desarrollo de Software.
-- -- set language 'spanish' DECLARE @NOMBRE_MES varchar(20) = (select datename(month, getdate())) set language 'us_english'
create table PErsona( IdPersona int identity primary key, ApellidoPaterno varchar(50), ApellidoMaterno varchar(50), Nombres varchar(50), NroDocumento varchar(8), TipoPersona char(1) -- 'P': Personal 'C': Cliente ) insert into Persona values ('DAVALOS', 'ESPARZA', 'JORGE', '16647308', 'P') insert into Persona values ('MANTILLA', 'ZAPATA', 'LUCIANA', '16681509', 'P') insert into Persona values ('ESTRADA', 'QUISPE', 'JUAN PEDRO', '15853147', 'P') insert into Persona values ('GUTIERREZ', 'SANTILLANA', 'DAVID', '16632730', 'P') insert into Persona values ('FLORES', 'SANTOS', 'ANA LUISA', '20115634', 'P')A continuación, leeremos el archivo att2000.mdb y luego haremos una correspondencia para obtener el IdPersona de la tabla Persona en nuestro sistema que le corresponde a cada uno de los trabajadores del registro del biométrico. El campo en común es el NroDocumento en nuestro sistema y el campo BadgeNumber de la tabla USERINFO.
SELECT U.USERID, U.BadgeNumber, U.Name, P.IdPersona FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'E:\MI BLOG\Importacion ACCESS\att2000.mdb'; 'admin'; '', USERINFO) AS U INNER JOIN PERSONA P ON U.BadgeNumber = P.NroDocumento
create procedure spr_ireImportarDatosDetectorBiometrico @RutaArchivoImportar varchar(4000)=null AS SET NOCOUNT ON; DECLARE @sql nvarchar(MAX)='' DECLARE @UltimaMarcacionImportada datetime = null -- --> obtener la ultima marcacion de su tabla asistencias IF @UltimaMarcacionImportada is null set @UltimaMarcacionImportada = convert(datetime, '01/01/2000',103) CREATE TABLE #tablaImportada ( Id int identity, NroDNI varchar(8), Nombre varchar(300), IdPersona int, FechaHoraMarcacion datetime, CHECKTYPE char(1) ) SET @sql = ' INSERT INTO #tablaImportada (NroDNI, Nombre, IdPersona, FechaHoraMarcacion, CHECKTYPE) SELECT U.BadgeNumber, U.Name, P.IdPersona, CHECKTIME, CHECKTYPE FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'', ''' + @RutaArchivoImportar + '''; ''admin''; '''', CHECKINOUT) AS I INNER JOIN OPENROWSET(''Microsoft.ACE.OLEDB.12.0'', ''' + @RutaArchivoImportar + '''; ''admin''; '''', USERINFO) as U on I.UserId = U.UserId '+ ' INNER JOIN Persona P on (U.BadgeNumber = P.NroDocumento and P.TipoPersona = ''P'') WHERE CHECKTIME > convert(datetime, ''' + convert(varchar, @UltimaMarcacionImportada) + ''',103) ' + ' ORDER BY CHECKTIME ASC ' EXEC sp_executesql @sql --Print @sql select * from #tablaImportada SET NOCOUNT ON; GO
SELECT U.USERID, U.BadgeNumber, U.Name FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'E:\MI BLOG\Importacion ACCESS\att2000.mdb'; 'admin'; '', USERINFO) AS UEl archivo en access que he usado lo pueden descargar de: https://drive.google.com/file/d/0B4k3msKW_QERX2N2aEx5V0phUGM/view?usp=sharing
use [master] GO ALTER LOGIN sa DISABLE; ALTER LOGIN sa WITH NAME = [SQLsa];
-- -- ALTER LOGIN sa ENABLE ; GO ALTER LOGIN sa WITH PASSWORD = 'sqlserver2012'; GO
0 comentarios: