10/29/2016 03:50:00 p. m.
Share:
Blog Informático sobre Análisis y Desarrollo de Software.
-- -- SELECT ROUTINE_NAME, created, last_altered,* FROM INFORMATION_SCHEMA.ROUTINES R WHERE ROUTINE_TYPE = 'PROCEDURE' ORDER BY R.ROUTINE_NAME -- SELECT name, create_date, modify_date, * FROM sys.objects WHERE type = 'P' ORDER BY 3
-- -- 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 U
El 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: