Los foros del Guille

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 

Ya está a la venta Novedades de Visual Basic 9.0

Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu interés (algunos de los avisos publicados)

08/dic/2005
Si haces una pregunta y te responden correctamente, por favor, márcala como respuesta válida (pulsa en la interrogación de la respuesta que responda tu duda), de esa forma ayudarás a otros que tengan esa misma duda. Gracias.

  Foro: Bases.General Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 57462 - Mensaje 102 nivel 15 estado 1 sintaxis incorrecta cerca de ')'
IDAsuntoFechaNick 
57462 Mensaje 102 nivel 15 estado 1 sintaxis incorrecta cerca de ')'22/01/14 17:08SkullBurn   
Buen día foro, estoy realizando un query el cual me permita crear una tabla con el nombre del archivo que me llega, para lo cual realizo la creación de una tabla temporal, luego de esto inserto los datos del archivo en la tabla temporal hasta ahí todo bien, luego intento insertar los registros que se encuentran en la tabla temporal a la tabla "física", pero al intentar hacerlo me genera el siguiente error:

Msg 102, Level 15, State 1, Line 2
Incorrect syntax near ')'.

Le coloco para q imprima los resultado y presenta lo siguiente:

\\172.22.150.142\sidec\descargaArchivos\FolderDiasON\DiasON_0120.csv

(408512 row(s) affected)

(408512 row(s) affected)
INSERT[DiasON_0121]
(CUSTOMER_ID, ACTIVATION_DATE, NEXT_DISCONNECT_DATE, DIA_AC)

Aquí el código:

DECLARE @table VARCHAR(100), @query NVARCHAR(300), @dia INT, @mes INT
, @valorFecha NVARCHAR(20), @valorMes NVARCHAR(20), @valorDia NVARCHAR(20)
SET @dia = DAY(GETDATE()) -1
SET @mes = MONTH(GETDATE())
SET @valorMes = (CASE WHEN @mes < 10 THEN '0' + CONVERT(VARCHAR(2), @mes) ELSE CONVERT(VARCHAR(2), @mes) END)
SET @valorDia = (CASE WHEN @dia < 10 THEN '0' + CONVERT(VARCHAR(2), @dia) ELSE CONVERT (VARCHAR(2), @dia) END)
SET @valorFecha = @valorMes + '' + @valorDia
--PRINT @valorFecha
SET @table = N'DiasON_' + @valorFecha--CONVERT(VARCHAR(10), @valorFecha, 103)
--PRINT @table

IF NOT EXISTS(SELECT * FROM SYSOBJECTS WHERE name = @table) BEGIN
SET @query = N'CREATE TABLE [dbo].[' + @table + N'](CUSTOMER_ID VARCHAR(50),
ACTIVATION_DATE VARCHAR(50), NEXT_DISCONNECT_DATE VARCHAR(50), DIA_AC VARCHAR(20))' --' + @valorFecha +
EXEC (@query)
DECLARE @fechaActual DATETIME, @nameFile NVARCHAR(20), @rutaFile NVARCHAR(200)
, @rutaArchivo NVARCHAR(250), @comando NVARCHAR(400)
SET @fechaActual = DATEADD(DAY, -1, GETDATE())
SET @nameFile = 'DiasON_0120.csv'
SET @rutaFile = '\\172.22.150.142\sidec\descargaArchivos\FolderDiasON\'
SET @rutaArchivo = @rutaFile + @nameFile
PRINT @rutaArchivo
--DROP TABLE #TableTemporary
--DROP TABLE DiasON_0121
CREATE TABLE #TableTemporary (
CUSTOMER_ID VARCHAR(120) NULL, ACTIVATION_DATE VARCHAR(120) NULL,
NEXT_DISCONNECT_DATE VARCHAR(120) NULL, DAYACTUAL VARCHAR(120) NULL)
SET @comando = 'BULK INSERT #TableTemporary FROM ''' + @rutaArchivo + '''
WITH (
FIELDTERMINATOR='';'',
ROWTERMINATOR=''\n'',
FIRSTROW = 2,
KEEPNULLS
)'
EXEC sp_executesql @comando
DECLARE @valTable VARCHAR(100)
SELECT CUSTOMER_ID, ACTIVATION_DATE, NEXT_DISCONNECT_DATE, DAYACTUAL
FROM #TableTemporary
SET @valTable = N'INSERT['+ @table + N']
(CUSTOMER_ID, ACTIVATION_DATE, NEXT_DISCONNECT_DATE, DIA_AC)'
PRINT @valTable
EXEC (@valTable)
END
ELSE BEGIN
PRINT 'EXISTE'
END

Nota este proceso lo tengo q hacer automático es decir sin intervención del usuario, es por eso que necesito crear las tablas con los nombres del archivo. Gracias de antemano por su ayuda.

 
(c) Guillermo 'guille' Som, 2005-2018  - foros.elGuille v1.0.5.3 (23/Mar/2009 14:50 GMT +1)  - (ASP.NET 2.0 v2.0.50727.8762)
 
Usuarios activos: 92 - App. iniciada: 18/07/2018 13:47:17 GMT - La hora GMT del servidor es: 18/07/2018 14:42:52 GMT