ASP - sigo con problemas sistema de reservas

 
Vista:

sigo con problemas sistema de reservas

Publicado por roberto (5 intervenciones) el 10/11/2005 14:02:42
Muy buenas. A ver, creo que me estoy liando con el tema de las
reservas y las consultas. Os planteo todo lo que tengo hasta ahora,
por si vosotros creéis que existe otra forma mejor de hacerlo. El
tema es el siguiente.:

Tengo una base de datos, llamada `reservas.mdb' con cuatro tablas. La
tabla `Reservas', la tabla `Dias', la tabla `Meses' y la
tabla `Anualidad'. Cada una de estas tablas tiene los siguientes
campos:
Tabla Dias:
Campo IDDia---Autonumérico
Campo dia—Recoge los 31 dias de un mes (1, 2, 3, …, 31)

Tabla Meses:
Campo IDMes—Autonumérico
Campo Mes---Recoge los 12 meses del año, del 1 al 12.(los recoge en
números)

Tabla Anualidad:
Campo IDAnualidad—Autonúmerico
Campo Anualidad—Recoge los años. Yo he puesto hasta el 2010
(2005,2006,2007,2008,2009,2010)

Tabla Reservas:
Campo IDReservas—Autonumérico
Campo DiaEntrada—Recoge el valor del dia de entrada en la habitación
Campo MesEntrada-- Recoge el valor del mes de entrada en la habitación
Campo AnualidadEntrada-- Recoge el valor del año de entrada en la
habitación
Campo DiaSalida-- Recoge el valor del dia de salida en la habitación
Campo MesSalida-- Recoge el valor del mes de salida en la habitación
Campo AnualidadSalida-- Recoge el valor del año de salida en la
habitación

A su vez, tengo un formulario para comprobar si existe disponibilidad
de la habitación en una determinada fecha o no. Si estuviera
disponible, esa fecha en la que está interesado el visitante la
incorpora a la base de datos y esa habitación ya está reservada. En
caso de que esa fecha no estuviera disponible, manda el mensaje de
habitación no disponible.

Así pues, mis páginas son las siguientes:

Página formulario.asp

<TABLE cellSpacing=0 cellPadding=0 border=0 align="center">
<TBODY>
<TR>
<TD class="text2"> </TD></TR>
<!-- tabla de consulta -->
<table cellpadding=4 cellspacing=2 border=0 bgcolor="#c6d2e2">
<tr>
<td colspan="2" class="style4"><b>Prueba del Módulo de Reservas
Online</b></td>
</tr>
<form method=post name="NuevoEnlace" action="adact.asp"
onSubmit="return Chequear();" onReset="return Limpiar();">
<tr bgcolor="#FFFFFF">
<td class="txt4">Del</td>
<TD class="txt4">

<%
Dim conn, ConnectString, rsdia

ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.Mappath("reservas.mdb") & ";Persist Security Info=False"
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnectString
%>
<%
sql = "SELECT Dias.* FROM Dias ORDER BY dia ASC"
Set rsdia = Server.CreateObject("ADODB.Recordset")
rsdia.Open sql, conn, 3, 3
%>
<table>
<tr>
<TD class="txt4">
<select name="DiaEntrada" class="txt6">
<option value="">Dia
<option value="">-----
<%if not rsdia.EOF then
rsdia.Movefirst
do until rsdia.EOF
%> <option value="<%=rsdia("dia")%>"><%=rsdia("dia")%></option>
<% rsdia.Movenext
loop
rsdia.Movefirst
end if
%></select>

</td></tr></table></DIV>
</TD>
<TD class="txt4">

<%
ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.Mappath("reservas.mdb") & ";Persist Security Info=False"
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnectString
%>
<%
sql = "SELECT Meses.* FROM Meses"
Set rsmes = Server.CreateObject("ADODB.Recordset")
rsmes.Open sql, conn, 3, 3
%>
<table>
<tr>
<TD class="txt4">
<select name="MesEntrada" class="mes">
<option value="">Mes
<option value="">-------------------
<%if not rsmes.EOF then
rsmes.Movefirst
do until rsmes.EOF
%> <option value="<%=rsmes("mes")%>"><%=rsmes("mes")%></option>
<% rsmes.Movenext
loop
rsmes.Movefirst
end if
%></select>

</td></tr></table></DIV>
</TD>
<TD class="txt4">

<%
ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.Mappath("reservas.mdb") & ";Persist Security Info=False"
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnectString
%>
<%
sql = "SELECT Anualidad.* FROM Anualidad ORDER BY Anualidad ASC"
Set rsanualidad = Server.CreateObject("ADODB.Recordset")
rsanualidad.Open sql, conn, 3, 3
%>
<table>
<tr>
<TD class="txt4">
<select name="AnualidadEntrada" class="mes">
<option value="">Año
<option value="">-------------------
<%if not rsanualidad.EOF then
rsanualidad.Movefirst
do until rsanualidad.EOF
%> <option value="<%=rsanualidad("Anualidad")%>"><%=rsanualidad
("Anualidad")%></option>
<% rsanualidad.Movenext
loop
rsanualidad.Movefirst
end if
%></select>

</td></tr></table></DIV>
</TD></tr>
<tr bgcolor="#FFFFFF">
<td class="txt4">Al</td>
<TD class="txt4">

<%
ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.Mappath("reservas.mdb") & ";Persist Security Info=False"
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnectString
%>
<%
sql = "SELECT Dias.* FROM Dias ORDER BY dia ASC"
Set rsdia = Server.CreateObject("ADODB.Recordset")
rsdia.Open sql, conn, 3, 3
%>
<table>
<tr>
<TD class="txt4">
<select name="DiaSalida" class="txt6">
<option value="">Dia
<option value="">-------------------
<%if not rsdia.EOF then
rsdia.Movefirst
do until rsdia.EOF
%> <option value="<%=rsdia("dia")%>"><%=rsdia("dia")%></option>
<% rsdia.Movenext
loop
rsdia.Movefirst
end if
%></select>

</td></tr></table></DIV>
</TD>
<TD class="txt4">

<%
ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.Mappath("reservas.mdb") & ";Persist Security Info=False"
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnectString
%>
<%
sql = "SELECT Meses.* FROM Meses"
Set rsmes = Server.CreateObject("ADODB.Recordset")
rsmes.Open sql, conn, 3, 3
%>
<table>
<tr>
<TD class="txt4">
<select name="MesSalida" class="mes">
<option value="">Mes
<option value="">-------------------
<%if not rsmes.EOF then
rsmes.Movefirst
do until rsmes.EOF
%> <option value="<%=rsmes("mes")%>"><%=rsmes("mes")%></option>
<% rsmes.Movenext
loop
rsmes.Movefirst
end if
%></select>

</td></tr></table></DIV>
</TD>
<TD class="txt4">

<%
ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.Mappath("reservas.mdb") & ";Persist Security Info=False"
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnectString
%>
<%
sql = "SELECT Anualidad.* FROM Anualidad ORDER BY Anualidad ASC"
Set rsanualidad = Server.CreateObject("ADODB.Recordset")
rsanualidad.Open sql, conn, 3, 3
%>
<table>
<tr>
<TD class="txt4">
<select name="AnualidadSalida" class="mes">
<option value="">Año
<option value="">-------------------
<%if not rsanualidad.EOF then
rsanualidad.Movefirst
do until rsanualidad.EOF
%> <option value="<%=rsanualidad("Anualidad")%>"><%=rsanualidad
("Anualidad")%></option>
<% rsanualidad.Movenext
loop
rsanualidad.Movefirst
end if
%></select>

</td></tr></table></DIV>
</TD></tr>


<tr bgcolor="#FFFFFF">
<style>
.inputSubmit
{
color: #9EA7B4;
background-color: #FFFFFF;
border-color : #000000;
border-top : 1px solid;
border-bottom : 1px solid;
border-left : 1px solid;
border-right : 1px solid;
font-family : Verdana,tahoma,Arial;
font-size : 10px;
font-weight: bold;
}
</style>
<td colspan=2>
<DIV ALIGN="center"> <input type="submit" value="Aceptar"
class="inputSubmit"> <input type="reset" value="Limpiar Formulario"
class="inputSubmit">
</DIV> </td>
</tr>
</table></DIV>









Página adact.asp

<%
dim Diaentrada, Mesentrada, Anualidadentrada, Diasalida, Messalida,
Anualidadsalida

DiaEntrada = Request.Form("DiaEntrada")
MesEntrada = Request.Form("MesEntrada")
AnualidadEntrada = Request.Form("AnualidadEntrada")
DiaSalida = Request.Form("DiaSalida")
MesSalida = Request.Form("MesSalida")
AnualidadSalida = Request.Form("AnualidadSalida")
dim cnn,rsreservas
' Creamos la conexión a la base de datos sin DSN
set cnn = Server.CreateObject("ADODB.Connection")
set rsreservas = Server.CreateObject("ADODB.RecordSet")
cnn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
Server.MapPath("reservas.mdb"))
sqltext = "SELECT * FROM Reservas where (DiaEntrada
between "&DiaEntrada&" and "&DiaSalida&") and (DiaSalida
between "&DiaEntrada&" and "&DiaSalida&")"
rsreservas.Open sqltext,cnn,3,3
if not rsreservas.EOF then
%>
habitación no disponible
<%
else
%>
habitacion disponible
<%
end if%>
--------------
bien. Aquí es donde me encuentro con los problemas. En este archivo
adact.asp, hago una consulta a la base de datos reservas indicándoles
que si la fecha de entrada o de salida que introducen está
comprendida entre las fechas de entradas o salidas que hay en la base
de datos, me de el mensaje de HABITACIÓN NO DISPONIBLE, y en caso
contrario, que de el mensaje de HABITACIÓN DISPONIBLE. hasta ahí
correcto. el problema es que no sé como meter que no sólo sea el día,
sino que sea también el mes y el año. es decir, ahora mismo con lo
que tengo, si meto 01/01/2005 al 03/01/2005, y en la base de datos
está reservada del 01/01/2005 al 02/01/2005, me da el mensaje de
HABITACIÓN NO DISPONIBLE. pero si meto del 01/02/2005 al 03/02/2005,
también me da HABITACIÓN NO DISPONIBLE, pues obviamente yo no estoy
considerando en la consulta el mes ni el año. como puedo hacer esto?
no sé si me explico o si lo estoy orientando bien. gracias por
vuestra ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:sigo con problemas sistema de reservas

Publicado por Michael Grey (61 intervenciones) el 10/11/2005 17:10:23
Roberto:
1. En vez de usar 3 tablas, dias meses anualidad, porque no creas la listas así:
Dias: del 1 - 31
Mes: Enero (1)- Febrero (2)- ... - Diciembre (12)
Anualidad: 2000 - 20xx

2. No lei el resto del código, pero el Objeto Connection (en el caso de tu código 'conn') lo debes crear 1 sola vez, lo utilizas en toda la página, y al final lo destruyes.

3. Idem para el Recordset. Lo creas y lo usas. Utilizas:
rs.Open ...

rs.Close
rs.Open ....

rs.Close

'y al final lo destruyes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar