Consulta sql raipon se puede ?

09/05/2010 - 01:30 por Juan Carlos | Informe spam
Tengo que hacer varios insert into con la siguiente condicion.
Fecha de alta = 01-05-2009

Tengo que generar desde el fecha de alta hasta el dia de hoy.
01-05-2009
01-06-2009
01-07-2009
01-08-2009
01-09-2009
01-10-2009
01-11-2009
01-12-2009
01-01-2010
01-02-2010
01-03-2010
01-04-2010
01-05-2010

Yo lo hago mediante un bucle desde el alta hasta el dia de hoy.
Pregunto con sql se puede hacer directamente ?

Preguntas similare

Leer las respuestas

#1 Juan Carlos
09/05/2010 - 01:39 | Informe spam
El bucle que hice es el siguiente
Yo lo hago asi...funciona pero por ahi se puede mejorar.
Gracias

For Anio = Year(Alta) To Year(Date)
If Anio = Year(Date) Then 'Esta en el mismo año
If Year(Alta) < Anio Then
Desde = 1
Else
Desde = Month(Alta)
End If
Hasta = Month(Date)
End If

If Anio < Year(Date) Then 'Esta en un año anterior
If Year(Alta) < Anio Then
Desde = 1
Else
Desde = Month(Alta)
End If
Hasta = 12
End If

For Mes = Desde To Hasta
cSql = "INSERT INTO Liquidacion (LiqCliente, LiqFecha,
LiqImporte) VALUES " + _
"(" & Cliente & "," &
DoyVueltalaFecha(DateSerial(Anio, Mes, 1)) & "," & Importe & ")"
CurrentDb.Execute (cSql)
next mes
next anio



El 08-05-2010 08:30 p.m., Juan Carlos escribió:
Tengo que hacer varios insert into con la siguiente condicion.
Fecha de alta = 01-05-2009

Tengo que generar desde el fecha de alta hasta el dia de hoy.
01-05-2009
01-06-2009
01-07-2009
01-08-2009
01-09-2009
01-10-2009
01-11-2009
01-12-2009
01-01-2010
01-02-2010
01-03-2010
01-04-2010
01-05-2010

Yo lo hago mediante un bucle desde el alta hasta el dia de hoy.
Pregunto con sql se puede hacer directamente ?
Respuesta Responder a este mensaje
#2 Raipon
09/05/2010 - 08:11 | Informe spam
Hola Juan Carlos, puedes generar un insert (máximo 100 fechas) con
esta sentencia :

PARAMETERS Start Date;
INSERT INTO MiTabla (Campo1)
SELECT DateAdd('m', (TNums_1.Num*10)+Nums.Num+1, Start)
FROM
(
Select Id - 2 AS Num From msysobjects Where Id Between 2 And 5
Union All
Select Id + 2 AS Num From msysobjects Where Id Between 2 And 5
Union All
Select Id + 6 AS Num From msysobjects Where Id Between 2 And 3
) AS Nums,
(
Select Id - 2 AS Num From msysobjects Where Id Between 2 And 5
Union All
Select Id + 2 AS Num From msysobjects Where Id Between 2 And 5
Union All
Select Id + 6 AS Num From msysobjects Where Id Between 2 And 3
) AS TNums_1
WHERE (TNums_1.Num*10)+Nums.Num+1 Between 0 And DateDiff('m', Start,
Date());

Donde MiTabla y Campo1 son la tabla y campo de destino, Start la fecha
de inicio de la secuencia.

En cuanto al cuerpo de esta sql, se trata de una consulta que en base
a la tabla del sistema msysobjects, obtiene 100 registros (desde el 1
al 100).

Para más información sobre la forma de generar secuencias numéricas,
de fechas, etc, puedes consultar estos artículos en mi blog :

http://sqlraipon.blogspot.com/2009/...-nums.html

http://sqlraipon.blogspot.com/2008/...ricas.html

Adios, un saludo.
Respuesta Responder a este mensaje
#3 Juan Carlos
10/05/2010 - 02:08 | Informe spam
Muchisimas gracias!!!
Sigo aprendiendo cada dia.


El 09-05-2010 03:11 a.m., Raipon escribió:
Hola Juan Carlos, puedes generar un insert (máximo 100 fechas) con
esta sentencia :

PARAMETERS Start Date;
INSERT INTO MiTabla (Campo1)
SELECT DateAdd('m', (TNums_1.Num*10)+Nums.Num+1, Start)
FROM
(
Select Id - 2 AS Num From msysobjects Where Id Between 2 And 5
Union All
Select Id + 2 AS Num From msysobjects Where Id Between 2 And 5
Union All
Select Id + 6 AS Num From msysobjects Where Id Between 2 And 3
) AS Nums,
(
Select Id - 2 AS Num From msysobjects Where Id Between 2 And 5
Union All
Select Id + 2 AS Num From msysobjects Where Id Between 2 And 5
Union All
Select Id + 6 AS Num From msysobjects Where Id Between 2 And 3
) AS TNums_1
WHERE (TNums_1.Num*10)+Nums.Num+1 Between 0 And DateDiff('m', Start,
Date());

Donde MiTabla y Campo1 son la tabla y campo de destino, Start la fecha
de inicio de la secuencia.

En cuanto al cuerpo de esta sql, se trata de una consulta que en base
a la tabla del sistema msysobjects, obtiene 100 registros (desde el 1
al 100).

Para más información sobre la forma de generar secuencias numéricas,
de fechas, etc, puedes consultar estos artículos en mi blog :

http://sqlraipon.blogspot.com/2009/...-nums.html

http://sqlraipon.blogspot.com/2008/...ricas.html

Adios, un saludo.
Respuesta Responder a este mensaje
#4 Juan Carlos
10/05/2010 - 02:35 | Informe spam
Raipon me olvide de preguntarte yo ejecuto la consulta que funciona de
maravillas, le ingreso la fecha (start) a mano.
Como hago para desde codigo pasarle el parametro de la fecha para que no
me la pregunte ?
Yo hago docmd.runsql(tu instruccion) como haria para pasarle la fecha ?
se puede?
gracias nuevamente.

El 09-05-2010 03:11 a.m., Raipon escribió:
Hola Juan Carlos, puedes generar un insert (máximo 100 fechas) con
esta sentencia :

PARAMETERS Start Date;
INSERT INTO MiTabla (Campo1)
SELECT DateAdd('m', (TNums_1.Num*10)+Nums.Num+1, Start)
FROM
(
Select Id - 2 AS Num From msysobjects Where Id Between 2 And 5
Union All
Select Id + 2 AS Num From msysobjects Where Id Between 2 And 5
Union All
Select Id + 6 AS Num From msysobjects Where Id Between 2 And 3
) AS Nums,
(
Select Id - 2 AS Num From msysobjects Where Id Between 2 And 5
Union All
Select Id + 2 AS Num From msysobjects Where Id Between 2 And 5
Union All
Select Id + 6 AS Num From msysobjects Where Id Between 2 And 3
) AS TNums_1
WHERE (TNums_1.Num*10)+Nums.Num+1 Between 0 And DateDiff('m', Start,
Date());

Donde MiTabla y Campo1 son la tabla y campo de destino, Start la fecha
de inicio de la secuencia.

En cuanto al cuerpo de esta sql, se trata de una consulta que en base
a la tabla del sistema msysobjects, obtiene 100 registros (desde el 1
al 100).

Para más información sobre la forma de generar secuencias numéricas,
de fechas, etc, puedes consultar estos artículos en mi blog :

http://sqlraipon.blogspot.com/2009/...-nums.html

http://sqlraipon.blogspot.com/2008/...ricas.html

Adios, un saludo.
Respuesta Responder a este mensaje
#5 Raipon
10/05/2010 - 07:27 | Informe spam
Hola, lee este artículo de Happy.

http://accessvbafaq.mvps.org/item.asp?pagina%

... y escoge cualquiera de los dos métodos propuestos.

Adios, un saludo.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida