Ga naar inhoud


ASP vraagje (Database/Timesorting)


Aanbevolen berichten

Geplaatst:

Hallo, vraagje:

 

Ik heb een database dat wordt gebruikt om te plannen. Een HTML pagina laat een tabel zien met wat tijden vanaf 6:00 AM tot 21:00 PM. Mijn database bevat data zoals Id, Klantnummer, Datum, Item, Tijd, Uren en Aantal

Nu wil ik mijn ASP file in de database laten kijken of er op een gegeven datum een reservering is. Maar hij moet tijdsvakken die niet gereserveerd zijn als leeg laten staan.

Sorteren lukt me wel, maar ik wil dat hij er als volgt uitziet:

 

Dus: Als er iets is ingepland op 08:00 AM moet de lijst er zo uitzien:

 

06:00 Nobody

07:00 Nobody

08:00 Clientnr - Hours

09:00 Nobody

etc.. etc..

 

Hopelijk kan iemand me hierbij helpen. Ik kom er zelf niet helmaal uit. Ik kan het wel maken maar dan wordt de source zo groot en omslachtig dan zou ik de volgende tekst steeds moeten herhalen voor elk uur.

 

<%

datum=Request("datum")

if datum="" then datum=date()

activity=Request("activity")

 

Set DBConnection = Server.CreateObject("adodb.connection")

DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "

DSN = DSN & "DBQ=" & Server.Mappath("database.mdb")

DBConnection.Open DSN

SQL = "SELECT * FROM reserveringen where Datum=#"&datum&"# AND Item="&activity&" AND Tijd='6:00:00 AM'

Set rs = DBConnection.Execute(SQL)

%>

<B><Font Size=3><%=datum%><Font Size=2></B><BR>

<BR>

<Table>

<%

On Error Resume Next

do while Not rs.eof

%>

<TR>

<TD>

<%=Server.HTMLEncode(rs.Fields("Tijd").Value)%>

</TD>

<TD>

 

</TD>

<TD>

<%Klantnr=Server.HTMLEncode(rs.Fields("Klantnummer").Value)%>

<%

TSQL = "SELECT * FROM adressenbestand where Klantnummer="&Klantnr

Set Trs = DBConnection.Execute(TSQL)

%>

<%=Server.HTMLEncode(Trs.Fields("Bedrijfsnaam").Value)%> - <%=Server.HTMLEncode(Trs.Fields("Contactpersoon").Value)%> - <%=Server.HTMLEncode(Trs.Fields("Telefoonnummer").Value)%>

<%

Trs.Close

Set Trs = Nothing

%>

</TD>

<TD>

 

</TD>

<TD>

<%=Server.HTMLEncode(rs.Fields("Aantal").Value)%> Personen

</TD>

<TD>

 

</TD>

<TD>

<%=Server.HTMLEncode(rs.Fields("Uren").Value)%> uur

</TD>

</TR>

<%

rs.MoveNext

loop

%>

 

</Table>

<%

rs.Close

Set rs = Nothing

DBConnection.Close

Set DBConnection = Nothing

%>

 

Alvast bedankt,

DroomDoos


Geplaatst:
Citaat:
Ik kan het wel maken maar dan wordt de source zo groot en omslachtig dan zou ik de volgende tekst steeds moeten herhalen voor elk uur.


Kun je dan geen loop maken die dat voor je doet.

for([color:"red"]i[/color]=0; [color:"red"]i[/color]=24, [color:"red"]i[/color]++){

//wat ie dan 24 keer moet doen.

{


Waarbij [color:"red"]i[/color] dan het aantal tabelrijen is of het aantal uren of vind zelf iets waar je op kan schakelen.


Ik ben zelf niet zo'n kenner van ASP maar als ik zo eens je code bekijk moet je hier ergens een while loop in proberen te plakken.
Let niet op de code zal wel niet kloppen maar messchien kun je er wat mee.



SQL = "SELECT * FROM reserveringen where Datum=#"&datum&"# AND Item="&activity&"

while(Set rs = DBConnection.Execute(SQL)){

//plak hier dan je code voor het genereren van je pagina

echo "rs.filedname(mijn naam)"

}

rs zou dan de array zijn die iedere keer andere waarden bevat aan de hand van je tabel gegevens. De while loop loopt dan voor het aantal tabelrijen en stopt automatisch. Let wel er is nu geen where voorwaarde Tijd.
Geplaatst:

Zo zou het moeten werken:

 

 

<%

Dim Conn 'db connection

Dim Rs ' DB recordset

Dim DSNName

Dim Hourcount

Dim zoektime

 

Set Conn = Server.CreateObject("ADODB.Connection")

Set rs = Server.CreateObject("ADODB.Recordset")

 

 

DSNname = "DRIVER={Microsoft Access Driver (*.mdb)}; "

DSNname = DSNname & "DBQ=" & Server.Mappath("/mdbs/schedule.mdb")

Conn.Open DSNname

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

<html>

<head>

<title>Untitled Document</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>

<table width="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="#0000CC">

<% For Hourcount = 6 to 21 %>

<tr>

<td width="20%">

<%

zoektime = formatdatetime(cdate(Hourcount & ":00"), 4)

response.write zoektime

%>

</td>

<td>

<%

Set RS = conn.Execute("select * from schedule where aptime = #" & timevalue(zoektime) & "#")

if not rs.eof then

response.write rs.fields("omschr")

Else

response.write " "

End if

%></td>

<td> </td>

</tr>

<%

next %>

</table>

 

<%

rs.close

conn.close

set conn = nothing

%>

</body>

</html>

 

Bijlage is bewuste asp file.

 

Suc6

Rebel

477198-schedule.zip

Geplaatst:

Bedankt Rebel87, die is super. Dat werkt veel simpeler. <img src="/ubbthreads/images/graemlins/smile.gif" alt="" />

Kan ik hier nu ook nog iets in bakken zodat als ik er een extra tabel tijd bij zet met daarin bijvoorbeeld 2 uur durende afspraak dat hij de gegeven omschrijving een uur later ook nog een keer neerzet?

 

Bedankt voor de moeite.

(p.s. ook een echte asp fan?)

Geplaatst:

Wat je kunt doen is, maak een afspraak start en afspraak duur field in je database.

 

Selecteer met sql statement de fields die groter of gelijk zijn als afspraak start maar kleiner of gelijk zijn dan afspraak start + afspraak duur.

 

bijv.

 

zoektime = 08:00 duur 02:00

selecteer >= 08:00 maar <= (08:00 + 02:00)

 

Toon dan alle records in de table dit kunnen dus ook meerdere overlappende afspraken zijn.

 

Volgens mij zou dit zo moeten werken maar heb dit niet getest.

 

Rebel

Maak een account aan of log in om te reageren

Je moet een lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!

Registreer een nieuwe account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
  • Wie is er online   0 leden

    • Er zijn geen geregistreerde gebruikers deze pagina aan het bekijken
×
×
  • Nieuwe aanmaken...