como coloco un if en sql via asp

18/09/2009 - 17:12 por J Lara | Informe spam
Hola amigos.. buenos dias..
tengo un formulario donde hago unas
consultas a access y estoy tratando de
manejar dos combos con fechas,
estos funcionan OK de acuerdo al siguiente
codigo:
<%
private sub listar_datos
Set Conexion=Createobject("ADODB.Connection")
Conexion.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;Jet OLEDB:Database
Password='pass';DATA SOURCE=" & server.mappath("./clientes/db2.mdb") & ";"
date1= Trim(Request.Form("date1"))
date2= Trim(Request.Form("date2"))
orden1= Trim(Request.Form("orden1"))
orden2= Trim(Request.Form("orden2"))
orden3= Trim(Request.Form("orden3"))
orden4= Trim(Request.Form("orden4"))

'- sql

sql="Select * from clientes where status
in " & status &" And left(agencia,4) = '" & mifiltro & " '
And Fecha Between ( # " & date1 & "#)
And (# " & date2 & "#)
order by " & orden1 &" " & orden2 & ",
" & orden3 &" " & orden4 & " "

set rsclientes=conexion.execute(sql)
do while not rsclientes.eof

%>
Aqui el unico problema que tengo es
que tengo que capturar la fecha (dd/MMd/yyyy)
cosa espero corregir tambien,
pero, el problema es mas bien cuando
el usuario no desea utilizar el rango
de fechas de consulta sino que selecciona
el filtro principal (como de listado de agencias)
y desea todos sus registros sin un rango de
fechas.. entonces aqui es donde recibo
el error de asp que las fechas estan vacias.

Podrian ayudarme al respecto ??

Gracias por su apoyo.
Saludos.

Preguntas similare

Leer las respuestas

#1 J Lara
18/09/2009 - 17:28 | Informe spam
Fe erratas.. en el comentario anterior
les indique que si me funcionaba el codigo
sql solo si el usuario capturaba fechas,
les indique que de esta manera solo tenia
un problema, el capturar al fecha (dd/MM/yyyy)
pero en realidad debo capturar el formato
(MM/dd/yyyy), y el problema principal
de los campos vacios de fecha si no los
captura el usuario lo sigo teniendo igual.

Gracias.

"J Lara" wrote:

Hola amigos.. buenos dias..
tengo un formulario donde hago unas
consultas a access y estoy tratando de
manejar dos combos con fechas,
estos funcionan OK de acuerdo al siguiente
codigo:
<%
private sub listar_datos
Set Conexion=Createobject("ADODB.Connection")
Conexion.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;Jet OLEDB:Database
Password='pass';DATA SOURCE=" & server.mappath("./clientes/db2.mdb") & ";"
date1= Trim(Request.Form("date1"))
date2= Trim(Request.Form("date2"))
orden1= Trim(Request.Form("orden1"))
orden2= Trim(Request.Form("orden2"))
orden3= Trim(Request.Form("orden3"))
orden4= Trim(Request.Form("orden4"))

'- sql

sql="Select * from clientes where status
in " & status &" And left(agencia,4) = '" & mifiltro & " '
And Fecha Between ( # " & date1 & "#)
And (# " & date2 & "#)
order by " & orden1 &" " & orden2 & ",
" & orden3 &" " & orden4 & " "

set rsclientes=conexion.execute(sql)
do while not rsclientes.eof

%>
Aqui el unico problema que tengo es
que tengo que capturar la fecha (dd/MMd/yyyy)
cosa espero corregir tambien,
pero, el problema es mas bien cuando
el usuario no desea utilizar el rango
de fechas de consulta sino que selecciona
el filtro principal (como de listado de agencias)
y desea todos sus registros sin un rango de
fechas.. entonces aqui es donde recibo
el error de asp que las fechas estan vacias.

Podrian ayudarme al respecto ??

Gracias por su apoyo.
Saludos.





Respuesta Responder a este mensaje
#2 MEVB
18/09/2009 - 17:28 | Informe spam
Hola

Lo mejor es trabajar las fechas en este orden:
AAAA-MM-DD
A = ano
M = mes
d = dia
siempre, MM y DD de 2 dígitos, es decir, enero es 01.

Lo primero es validar que el campo fecha trae un valor...
if len(trim(request.form(fecha))) = 0 then
'entra si esta vacío
end if

Partiendo de eso, pues asignar un valor inicial ante la fecha vacía, p.e.
date1 = "1900-01-01"
date2 = "2199-12-31"
o date2 = (year(date)+1) & "-12-31"
La otra opción es omitir el WHERE correspondiente a la fecha vacía en el
SQL.

Según estas 2 opciones, puedes usar el IF de arriba antes del SQL o
mezclarlo en el SQL.

Saludos
MV


"J Lara" escribió en el mensaje
news:
Hola amigos.. buenos dias..
tengo un formulario donde hago unas
consultas a access y estoy tratando de
manejar dos combos con fechas,
estos funcionan OK de acuerdo al siguiente
codigo:
<%
private sub listar_datos
Set Conexion=Createobject("ADODB.Connection")
Conexion.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;Jet OLEDB:Database
Password='pass';DATA SOURCE=" & server.mappath("./clientes/db2.mdb") & ";"
date1= Trim(Request.Form("date1"))
date2= Trim(Request.Form("date2"))
orden1= Trim(Request.Form("orden1"))
orden2= Trim(Request.Form("orden2"))
orden3= Trim(Request.Form("orden3"))
orden4= Trim(Request.Form("orden4"))

'- sql

sql="Select * from clientes where status
in " & status &" And left(agencia,4) = '" & mifiltro & " '
And Fecha Between ( # " & date1 & "#)
And (# " & date2 & "#)
order by " & orden1 &" " & orden2 & ",
" & orden3 &" " & orden4 & " "

set rsclientes=conexion.execute(sql)
do while not rsclientes.eof

%>
Aqui el unico problema que tengo es
que tengo que capturar la fecha (dd/MMd/yyyy)
cosa espero corregir tambien,
pero, el problema es mas bien cuando
el usuario no desea utilizar el rango
de fechas de consulta sino que selecciona
el filtro principal (como de listado de agencias)
y desea todos sus registros sin un rango de
fechas.. entonces aqui es donde recibo
el error de asp que las fechas estan vacias.

Podrian ayudarme al respecto ??

Gracias por su apoyo.
Saludos.

Respuesta Responder a este mensaje
#3 J Lara
18/09/2009 - 18:40 | Informe spam
Gracias MEVB, espero tomar la opcion del if
antes del sql..
te mantendre informado.

Gracias por tu apoyo.

Saludos.



"MEVB" wrote:

Hola

Lo mejor es trabajar las fechas en este orden:
AAAA-MM-DD
A = ano
M = mes
d = dia
siempre, MM y DD de 2 dígitos, es decir, enero es 01.

Lo primero es validar que el campo fecha trae un valor...
if len(trim(request.form(fecha))) = 0 then
'entra si esta vacío
end if

Partiendo de eso, pues asignar un valor inicial ante la fecha vacía, p.e.
date1 = "1900-01-01"
date2 = "2199-12-31"
o date2 = (year(date)+1) & "-12-31"
La otra opción es omitir el WHERE correspondiente a la fecha vacía en el
SQL.

Según estas 2 opciones, puedes usar el IF de arriba antes del SQL o
mezclarlo en el SQL.

Saludos
MV


"J Lara" escribió en el mensaje
news:
> Hola amigos.. buenos dias..
> tengo un formulario donde hago unas
> consultas a access y estoy tratando de
> manejar dos combos con fechas,
> estos funcionan OK de acuerdo al siguiente
> codigo:
> <%
> private sub listar_datos
> Set Conexion=Createobject("ADODB.Connection")
> Conexion.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;Jet OLEDB:Database
> Password='pass';DATA SOURCE=" & server.mappath("./clientes/db2.mdb") & ";"
> date1= Trim(Request.Form("date1"))
> date2= Trim(Request.Form("date2"))
> orden1= Trim(Request.Form("orden1"))
> orden2= Trim(Request.Form("orden2"))
> orden3= Trim(Request.Form("orden3"))
> orden4= Trim(Request.Form("orden4"))
>
> '- sql
>
> sql="Select * from clientes where status
> in " & status &" And left(agencia,4) = '" & mifiltro & " '
> And Fecha Between ( # " & date1 & "#)
> And (# " & date2 & "#)
> order by " & orden1 &" " & orden2 & ",
> " & orden3 &" " & orden4 & " "
>
> set rsclientes=conexion.execute(sql)
> do while not rsclientes.eof
>
> %>
> Aqui el unico problema que tengo es
> que tengo que capturar la fecha (dd/MMd/yyyy)
> cosa espero corregir tambien,
> pero, el problema es mas bien cuando
> el usuario no desea utilizar el rango
> de fechas de consulta sino que selecciona
> el filtro principal (como de listado de agencias)
> y desea todos sus registros sin un rango de
> fechas.. entonces aqui es donde recibo
> el error de asp que las fechas estan vacias.
>
> Podrian ayudarme al respecto ??
>
> Gracias por su apoyo.
> Saludos.
>



Respuesta Responder a este mensaje
#4 J Lara
18/09/2009 - 20:57 | Informe spam
MEVB, agrege antes del SQL
un if para detectar si las fechas
estan vacias y les agrege fechas
iniciales y finales, pero
no me respeta ninguna fecha
me envia el total de registros
del filtro principal (Agencia) aunque
no me da ningun error no pesca
las fechas.
El codigo quedo asi:
<%
private sub listar_datos
Set Conexion=Createobject("ADODB.Connection")
Conexion.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;Jet OLEDB:Database
Password='pass';DATA SOURCE=" & server.mappath("./clientes/db2.mdb") & ";"
date1= Trim(Request.Form("date1"))
date2= Trim(Request.Form("date2"))
orden1= Trim(Request.Form("orden1"))
orden2= Trim(Request.Form("orden2"))
orden3= Trim(Request.Form("orden3"))
orden4= Trim(Request.Form("orden4"))

'codigo agregado para detectar fechas vacias y asignarles valor

if len(trim(request.form(date1))) or len(trim(request.form(date2))) = 0 then
date1="1900-01-01"
date2="2199-01-01"
End if


'- sql

sql="Select * from clientes where status
in " & status &" And left(agencia,4) = '" & mifiltro & " '
And Fecha Between ( # " & date1 & "#)
And (# " & date2 & "#)
order by " & orden1 &" " & orden2 & ",
" & orden3 &" " & orden4 & " "

set rsclientes=conexion.execute(sql)
do while not rsclientes.eof

%>


"J Lara" wrote:

Gracias MEVB, espero tomar la opcion del if
antes del sql..
te mantendre informado.

Gracias por tu apoyo.

Saludos.



"MEVB" wrote:

> Hola
>
> Lo mejor es trabajar las fechas en este orden:
> AAAA-MM-DD
> A = ano
> M = mes
> d = dia
> siempre, MM y DD de 2 dígitos, es decir, enero es 01.
>
> Lo primero es validar que el campo fecha trae un valor...
> if len(trim(request.form(fecha))) = 0 then
> 'entra si esta vacío
> end if
>
> Partiendo de eso, pues asignar un valor inicial ante la fecha vacía, p.e.
> date1 = "1900-01-01"
> date2 = "2199-12-31"
> o date2 = (year(date)+1) & "-12-31"
> La otra opción es omitir el WHERE correspondiente a la fecha vacía en el
> SQL.
>
> Según estas 2 opciones, puedes usar el IF de arriba antes del SQL o
> mezclarlo en el SQL.
>
> Saludos
> MV
>
>
> "J Lara" escribió en el mensaje
> news:
> > Hola amigos.. buenos dias..
> > tengo un formulario donde hago unas
> > consultas a access y estoy tratando de
> > manejar dos combos con fechas,
> > estos funcionan OK de acuerdo al siguiente
> > codigo:
> > <%
> > private sub listar_datos
> > Set Conexion=Createobject("ADODB.Connection")
> > Conexion.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;Jet OLEDB:Database
> > Password='pass';DATA SOURCE=" & server.mappath("./clientes/db2.mdb") & ";"
> > date1= Trim(Request.Form("date1"))
> > date2= Trim(Request.Form("date2"))
> > orden1= Trim(Request.Form("orden1"))
> > orden2= Trim(Request.Form("orden2"))
> > orden3= Trim(Request.Form("orden3"))
> > orden4= Trim(Request.Form("orden4"))
> >
> > '- sql
> >
> > sql="Select * from clientes where status
> > in " & status &" And left(agencia,4) = '" & mifiltro & " '
> > And Fecha Between ( # " & date1 & "#)
> > And (# " & date2 & "#)
> > order by " & orden1 &" " & orden2 & ",
> > " & orden3 &" " & orden4 & " "
> >
> > set rsclientes=conexion.execute(sql)
> > do while not rsclientes.eof
> >
> > %>
> > Aqui el unico problema que tengo es
> > que tengo que capturar la fecha (dd/MMd/yyyy)
> > cosa espero corregir tambien,
> > pero, el problema es mas bien cuando
> > el usuario no desea utilizar el rango
> > de fechas de consulta sino que selecciona
> > el filtro principal (como de listado de agencias)
> > y desea todos sus registros sin un rango de
> > fechas.. entonces aqui es donde recibo
> > el error de asp que las fechas estan vacias.
> >
> > Podrian ayudarme al respecto ??
> >
> > Gracias por su apoyo.
> > Saludos.
> >
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida