Avatar billede axl_rose Nybegynder
12. maj 2006 - 08:32 Der er 81 kommentarer og
1 løsning

Vise data afhængig af dato

Hej
Som titlen siger, skal jeg have lavet en kode. Som selv tjekker dags dato og finder den nærmeste søndag.

Altså Hvis det i dag er Tirsdag så tjekker koden hvad dag det er og så viser det som kommer den nærmeste søndag.

Hvordan gøres det? - I ASP!
Avatar billede eagleeye Praktikant
12. maj 2006 - 08:52 #1
Beskrivelsen er det næste søndag den skal finde,
undtagen hvis det er søndag så vises dagen?


Du kan bruge date Serial til at samle datoen. Søndag er i ASP dag 1 og lørdag dag 7, så if sætningen tjekker på om det er søndag og er det ikke sødag ligge 8 - uge dagen til for at finde antal dage i næste søndag:



offsetToSunday = 0
if weekDay(Date) <> vbSunday then offsetToSunday = 8-WeekDay(Date)
dato = DateSerial(Year(date), Month(date), Day(Date) + offsetToSunday)
Avatar billede axl_rose Nybegynder
12. maj 2006 - 09:05 #2
Dvs.
Det skal egentlig så sådan her ud:
<%
offsetToSunday = 0
if weekDay(Date) <> vbSunday then offsetToSunday = 8-WeekDay(Date)
dato = DateSerial(Year(date), Month(date), Day(Date) + offsetToSunday)

Response.Write "" & navn & ""
Response.Write "" & logo & ""
Response.Write "" & besked & ""

end if
%>
Avatar billede axl_rose Nybegynder
12. maj 2006 - 09:06 #3
Den sætning tjekker linien igennem og tilbagesender kun de dataer der må vises den søndag.
Avatar billede eagleeye Praktikant
12. maj 2006 - 09:10 #4
Jeg tror ikke helt med på hvad du mener?


dato indeholden datoen for næste søndag

Så du kan bruge den i en SQL sætning til at finde poster i en dato for dag eks:


offsetToSunday = 0
if weekDay(Date) <> vbSunday then offsetToSunday = 8-WeekDay(Date)
dato = DateSerial(Year(date), Month(date), Day(Date) + offsetToSunday)

datoSQL = year(dato) & "-" &month(dato) & "-" & day(dato)

SQL = "Select * FROM tabelnavn wher datoKolonne = #" & datoSQL & "#"

'Så lave et recordset og udskrive posterne:
Set rs =Conn.Execute(SQL)
do while not rs.EOF
  ..Udksirve her

  rs.MoveNext
loop



Eller du kan lave en if sætning direkte på datoen med

if dato = datoVariable then
  'udskrive data for søndaen her
end if
Avatar billede eagleeye Praktikant
12. maj 2006 - 09:11 #5
jeg kan se jeg bliver nød til at smutte en del timer.. men kigger ind senere eller er der jo nok andre som ser spørgsmålet :)
Avatar billede axl_rose Nybegynder
12. maj 2006 - 09:15 #6
Okay, men jeg prøver mig frem med dine eksempler. Mange tak indtil nu :-)
Avatar billede axl_rose Nybegynder
12. maj 2006 - 10:27 #7
Jeg kan ikke få det til at virke det viser ingenting på siden.

Det kunne være du kunne give et eksempel?
Avatar billede eagleeye Praktikant
12. maj 2006 - 15:38 #8
Eks med database, her en Access database og med en datoKolonne  som skal være af typen dato/klokkeslæt, Conn skal være en connection til databasefilen:



offsetToSunday = 0
if weekDay(Date) <> vbSunday then offsetToSunday = 8-WeekDay(Date)
dato = DateSerial(Year(date), Month(date), Day(Date) + offsetToSunday)

datoSQL = year(dato) & "-" &month(dato) & "-" & day(dato)

SQL = "Select * FROM tabelnavn wher datoKolonne = #" & datoSQL & "#"

'Så lave et recordset og udskrive posterne:
Set rs =Conn.Execute(SQL)
do while not rs.EOF
  ..Udksirve her

  rs.MoveNext
loop



hvilken type eksempel skal det være?
Avatar billede axl_rose Nybegynder
12. maj 2006 - 18:18 #9
Det er den jeg har brugt, men den udskriver ingen resultater...:

<%
offsetToSunday = 0
if weekDay(Date) <> vbSunday then offsetToSunday = 8-WeekDay(Date)
dato = DateSerial(Year(date), Month(date), Day(date) + offsetToSunday)

datoSQL = year(dato) & "-" &month(dato) & "-" & day(dato)

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("blablabla; password=")
Conn.Open DSN
SQL = "Select * FROM blabla where butiksaabning = #" & datoSQL & "#"
Set rs = Conn.Execute(SQL)
do while not rs.EOF

butiksId = "" & rs("butiksId") & ""
butiksnavn = "" & rs("butiksnavn") & ""
butiksaabning = "" & rs("butiksaabning") & ""
butikslogo = "" & rs("butikslogo") & ""

  Response.Write "" & rs("butiksnavn") & ""

  rs.MoveNext
loop

Conn.Close
Set Conn = Nothing
%>
Avatar billede axl_rose Nybegynder
13. maj 2006 - 08:32 #10
Skal datokolonnen være dato/klokkeslæt. Det er fordi at der er flere datoer i F.eks

14-05-2006,15-05-2006,17-05-2006,14-06-2006
Avatar billede axl_rose Nybegynder
13. maj 2006 - 08:37 #11
Problemet er at den ikke viser noget :

Response.Write "<li>" & rs("butiksnavn") & "</li><br>"
Man ser de små sorte dots, men ingen tekst....
Avatar billede axl_rose Nybegynder
13. maj 2006 - 08:38 #12
WUHUUU!!! Det virker nu :-)!!!!
Avatar billede axl_rose Nybegynder
13. maj 2006 - 08:40 #13
Mit spørgsmål er så:

Skal datokolonnen være dato/klokkeslæt. Det er fordi at der er flere datoer i F.eks

14-05-2006,15-05-2006,17-05-2006,14-06-2006

Kan den godt søge i en kolonnen mellem flere forskellige datoer og udvælge den rigtige
Avatar billede axl_rose Nybegynder
13. maj 2006 - 08:44 #14
OG er det muligt at sætte tidspunkt på også f.eks

14-05-2006 - 10:00 - 13:00,21-05-2006 - 10:00 - 13:00,28-05-2006 - 10:00 - 13:00
Avatar billede axl_rose Nybegynder
13. maj 2006 - 10:08 #15
<%
Dim SQL, arrtid
offsetToSunday = 0
if weekDay(Date) <> vbSunday then offsetToSunday = 8-WeekDay(Date)
dato = DateSerial(Year(date), Month(date), Day(Date) + offsetToSunday)

datoSQL = year(dato) & "-" &month(dato) & "-" & day(dato)
Conn.Open DSN

SQL = "Select * FROM xxxx where xxxx = #" & datoSQL & "#"


'Så lave et recordset og udskrive posterne:
Set rs =Conn.Execute(SQL)

Do while not rs.EOF
butiksId = "" & rs("butiksId") & ""
butiksnavn = "" & rs("butiksnavn") & ""
butiksaabning = "" & rs("butiksaabning") & ""
butikslogo = "" & rs("butikslogo") & ""

arrtid = Split(SQL,",")

Response.Write "<p>Åbningstider:"
  Response.Write "<ul>"

  ' Her bruges en løkke til at genneløbe arrFrugt
  For t = 0 to 4
      Response.Write "<li>" & arrtid(t)
  Next

  Response.Write "</ul>"
 
      rs.MoveNext
loop
%>
Avatar billede eagleeye Praktikant
13. maj 2006 - 10:48 #16
Ja hvis du vil gemme en dato bør det være i en kolonne af typen Dato/klokkeslæt


men gemmer du flere datoer i samme kolnne?

så skal du ud i noget instr:

if inStr(datoer, dato) > 0 then
  'Datoen findes
end if


du kan også bruge inStr direkte i SQL sætningen.
så skal man bare bruge samme format dd-mm-yyyy så den kan findes:


offsetToSunday = 0
if weekDay(Date) <> vbSunday then offsetToSunday = 8-WeekDay(Date)
dato = DateSerial(Year(date), Month(date), Day(Date) + offsetToSunday)

datoSQL = year(dato) & "-" &month(dato) & "-" & day(dato)
Conn.Open DSN

SQL = "Select * FROM xxxx where instr(1, xxxx, " & dato & ") > 0"
Avatar billede eagleeye Praktikant
13. maj 2006 - 11:09 #17
men der kan kun være en dato i en dato/klokklesæt så hvis du vil havde flere datoer i samme kolonne kan det kun være i en tekst kolonne og så skal det gøres med instr.



hvis du har det på denne måde:

14-05-2006 - 10:00 - 13:00,21-05-2006 - 10:00 - 13:00,28-05-2006 - 10:00 - 13:00

Bliver det og så med instr til at finde datoen og så finde klokken efter datoen



offsetToSunday = 0
if weekDay(Date) <> vbSunday then offsetToSunday = 8-WeekDay(Date)
dato = DateSerial(Year(date), Month(date), Day(Date) + offsetToSunday)

str  = rs("datokolonne")
iDato = inStr(1,str,dato)
if iDato> 0 then
'dato findes
slutTid = instr(iDato,str,",")
if slutTid = 0 then slutTid = len(str)
tidPunkt  = mid(str, iDato+15, sluttid + iDato+15)

  'Så har du start og slut i tidPunkt.
slipt på " - " og du har startog slut i et array
end if
Avatar billede axl_rose Nybegynder
13. maj 2006 - 13:31 #18
Så det bliver således:
SQL = "Select * FROM bu_001_data where butiksaabning = #" & datoSQL & "#"
'Så lave et recordset og udskrive posterne:
Set rs =Conn.Execute(SQL)


Do while not rs.EOF
butiksId = "" & rs("butiksId") & ""
butiksnavn = "" & rs("butiksnavn") & ""
butiksaabning = "" & rs("butiksaabning") & ""
butikslogo = "" & rs("butikslogo") & ""

offsetToSunday = 0
if weekDay(Date) <> vbSunday then offsetToSunday = 8-WeekDay(Date)
dato = DateSerial(Year(date), Month(date), Day(Date) + offsetToSunday)

str  = rs("datokolonne")
iDato = inStr(1,str,dato)
if iDato> 0 then
'dato findes
slutTid = instr(iDato,str,",")
if slutTid = 0 then slutTid = len(str)
tidPunkt  = mid(str, iDato+15, sluttid + iDato+15)

  'Så har du start og slut i tidPunkt.
'slipt på " - " og du har startog slut i et array
end if
Avatar billede eagleeye Praktikant
13. maj 2006 - 16:34 #19
hvad ligger der i kolonnen butiksaabning ?
Avatar billede eagleeye Praktikant
13. maj 2006 - 16:40 #20
hvis det er den kkolonne som indeholder:
14-05-2006 - 10:00 - 13:00,21-05-2006 - 10:00 - 13:00,28-05-2006 - 10:00 - 13:00


Så det i stil med:


SQL = "Select * FROM bu_001_data"
'Så lave et recordset og udskrive posterne:
Set rs =Conn.Execute(SQL)


offsetToSunday = 0
if weekDay(Date) <> vbSunday then offsetToSunday = 8-WeekDay(Date)
dato = DateSerial(Year(date), Month(date), Day(Date) + offsetToSunday)


Do while not rs.EOF
str  = rs("butiksaabning")
iDato = inStr(1,str,dato)
if iDato> 0 then

  butiksId = "" & rs("butiksId") & ""
  butiksnavn = "" & rs("butiksnavn") & ""
  butiksaabning = "" & rs("butiksaabning") & ""
  butikslogo = "" & rs("butikslogo") & ""
 
  slutTid = instr(iDato,str,",")
  if slutTid = 0 then slutTid = len(str)
  tidPunkt  = mid(str, iDato+15, sluttid + iDato+15)
  tidArr = split(tidPunkt, "-")
 
  StartTidspunkt = trim(tidArr(0))
  StopTidspunkt = trim(tidArr(1))


  'UDSKRIV data her

end if
rs.MoveNext
loop
Avatar billede axl_rose Nybegynder
13. maj 2006 - 16:48 #21
Hvordan udskriver jeg dataen har flg:

Response.Write "<li>" & butiksnavn & "</li><br>"
Response.Write "Tid" & butiksaabning & "<br>"

Der hvor der står:

udskriv data her



den kolonne indeholder :
14-05-2006 - 10:00 - 13:00,21-05-2006 - 10:00 - 13:00,28-05-2006 - 10:00 - 13:00
og skal bare splittes ved kommaet
Avatar billede eagleeye Praktikant
13. maj 2006 - 17:00 #22
Ja du udskriver på den måde:

Response.Write "<li>" & butiksnavn & "</li><br>"
Response.Write "Tid" & butiksaabning & "<br>"
Avatar billede axl_rose Nybegynder
13. maj 2006 - 17:17 #23
Den viser intet i Tid: der ingeting derfeter!
Avatar billede eagleeye Praktikant
13. maj 2006 - 17:36 #24
Prøv at rette denne linie:

iDato = inStr(1,str,dato)


Til dette:

iDato = inStr(1,str,replace(dato, "/", "-"))
Avatar billede axl_rose Nybegynder
13. maj 2006 - 17:43 #25
Nej desværre hjalp ikke...
Avatar billede eagleeye Praktikant
13. maj 2006 - 18:06 #26
Så prøv at udskrive den dato den regner ud:


offsetToSunday = 0
if weekDay(Date) <> vbSunday then offsetToSunday = 8-WeekDay(Date)
dato = DateSerial(Year(date), Month(date), Day(Date) + offsetToSunday)

response.write dato




og tjek det er den rigtige dato den regner sig frem til..
og kolonnene indeholdte datoer i dette format??
14-05-2006 - 10:00 - 13:00,21-05-2006 - 10:00 - 13:00,28-05-2006 - 10:00 - 13:00
Avatar billede axl_rose Nybegynder
13. maj 2006 - 20:07 #27
Okay, det prøver jeg lige tror det er det...!


har nemlig en | mellem dato og klokkeslæt altså f.eks
14-05-2006 | 10:00 - 13:00
Avatar billede axl_rose Nybegynder
13. maj 2006 - 20:08 #28
De ser nu flg ud i min db:
14-05-2006 - 10:00 - 17:00,21-05-2006 - 09:00 - 17:00,28-05-2006 - 14:00 - 20:00

Men virker stadig ikke kan det være mellemrummet?
Avatar billede axl_rose Nybegynder
13. maj 2006 - 20:28 #29
Kan det være fordi at dato udskriften ikke er delt med en - men istedet et ,

dato = DateSerial(Year(date), Month(date), Day(Date) + offsetToSunday)
Avatar billede axl_rose Nybegynder
14. maj 2006 - 10:52 #30
Der en fejl i når jeg udskriver tidpunkt får jeg flg:
:00 - 13:00,21-05-2006 - 10:00 - 13

Dvs. den ikke tager dato og første tal med fra tid og den deler/splitter ikke ved kommaet!
Avatar billede axl_rose Nybegynder
14. maj 2006 - 11:05 #31
Har nemlig prøvet og udskrive dette:
Response.Write StartTidspunkt & "<br>"
Response.Write "<br>"
Response.Write StopTidspunkt

Det giver flg:
:00

13:00,21

Det viser jo at den ikke stopper ved kommeaet og at den ikke har de første cifre med!
Avatar billede eagleeye Praktikant
14. maj 2006 - 18:49 #32
Prøv at rette så datoen får 0 ved entelt tal:


offsetToSunday = 0
if weekDay(Date) <> vbSunday then offsetToSunday = 8-WeekDay(Date)
dato = DateSerial(Year(date), Month(date), Day(Date) + offsetToSunday)

dato = Right("0" & day(dato),2) & "-" & Right("0" & month(dato),2) & "-" year(dato)
Avatar billede axl_rose Nybegynder
15. maj 2006 - 18:46 #33
Det hjalp egentlig ikke...? hvad kan det være?
Avatar billede axl_rose Nybegynder
15. maj 2006 - 18:48 #34
Hvis man udskriver:

Response.Write dato

får man 21-05-2006

Men hvis jeg skriver:
Response.Write butiksaabning

kommer der intet?!
Avatar billede eagleeye Praktikant
15. maj 2006 - 19:30 #35
ideen var at den skulle formater dato som dd-mm-yyyy og så skal datoerne i butiksaabning stå i formatet dd-mm-yyyy så de to formater er ens.

Når den eks tjekker for "12/5/2006" med "12-05-2006" vil de to ikke være ens når de sammenlignes som strenge med instr, så derfor dato-foramtet i begge variable være ens.


Har du en linie som?:

butiksaabning = rs("butiksaabning")
Avatar billede axl_rose Nybegynder
15. maj 2006 - 19:33 #36
Linien i rs("butiksaabning") ser f.eks således her ud:

21-05-2006
Avatar billede eagleeye Praktikant
15. maj 2006 - 19:37 #37
ok men du skriver hvis du skriver: Response.Write butiksaabning

kommer der intet?!


Så kunne det tyde på der ikke er lagt noget ind i variablen butiksaabning.
Avatar billede axl_rose Nybegynder
15. maj 2006 - 19:40 #38
Får denne fejl hvis jeg tilføjer en ny dato til databasen der ser således ud

21/05-2006 så kommer denne fejl:
Microsoft VBScript runtime error '800a0009'

Subscript out of range: '[number: 0]'

/fil.asp, line 38
Avatar billede axl_rose Nybegynder
15. maj 2006 - 19:41 #39
rs("butiksaabning") = 14-05-2006 - 10:00 - 13:00,21-05-2006 - 10:00 - 13:00 og selvfølgelig flere dette var bare en af linier
Avatar billede axl_rose Nybegynder
15. maj 2006 - 19:43 #40
Mente 21/05-2006 = 21/05/2006
Avatar billede eagleeye Praktikant
15. maj 2006 - 19:44 #41
kan der være en butiksaabning som er tom ?

Kan du evt. vise hvordan koden er lige nu.
Avatar billede axl_rose Nybegynder
15. maj 2006 - 19:46 #42
jA OK.. :-)

Her er koden:
<%
Conn.Open DSN
SQL = "Select * FROM bu_001_data"
'Så lave et recordset og udskrive posterne:
Set rs =Conn.Execute(SQL)


offsetToSunday = 0
if weekDay(Date) <> vbSunday then offsetToSunday = 8-WeekDay(Date)
dato = DateSerial(Year(date), Month(date), Day(Date) + offsetToSunday)

dato = Right("0" & day(dato),2) & "-" & Right("0" & month(dato),2) & "-" & year(dato)

Do while not rs.EOF
str  = "" & rs("butiksaabning") & ""
iDato = inStr(1,str,replace(dato, ",", "-"))
if iDato > 0 then

  butiksId = "" & rs("butiksId") & ""
  butiksnavn = "" & rs("butiksnavn") & ""
  butikslogo = "" & rs("butikslogo") & ""
 
  slutTid = instr(iDato,str,",")
  if slutTid = 0 then slutTid = len(str)
  tidPunkt  = mid(str, iDato+15, sluttid + iDato+15)
  tidArr= split(tidPunkt, "/")
 
  StartTidspunkt = trim(tidArr(0))
  StopTidspunkt = trim(tidArr(1))


'Response.Write "<img src=" & butikslogo & "><br><br><br>"
'Response.Write "<br>"
'Response.Write "<li>" & butiksnavn & "</li><br>"
Response.Write "<br>"
'Response.Write "Hvad er næste søndags dato: " & dato & "<br>"
'Response.Write "<br>"
'Response.Write "Vi har åbent fra Kl.<b> " & butiksaabning & "</b><br>"
'Response.Write StartTidspunkt & "<br>"
Response.Write "<br>"
'Response.Write StopTidspunkt
Response.Write butiksaabning & "<br>"
Response.Write dato
end if
rs.MoveNext
loop

Conn.Close
Set Conn = Nothing
%>

og i dbasen ser kolonnen således ud:
butiksaabning
14-05-2006 / 10:00 - 13:00,21-05-2006 - 10:00 - 13:00
14-05-2006 | 13:00 - 17:00,21-05-2006 - 10:00 - 17:00
14-05-2006  13:00 - 17:00,21-05-2006 - 10:00 - 13:00
14-05-2006 - 13:34 - 17:31,21-05-2006 - 10:00 - 13:00
21-05-2006
21/05/2006
Avatar billede eagleeye Praktikant
15. maj 2006 - 19:53 #43
Ok prøv at rette det til dette:



<%
Conn.Open DSN
SQL = "Select * FROM bu_001_data"
'Så lave et recordset og udskrive posterne:
Set rs =Conn.Execute(SQL)


offsetToSunday = 0
if weekDay(Date) <> vbSunday then offsetToSunday = 8-WeekDay(Date)
dato = DateSerial(Year(date), Month(date), Day(Date) + offsetToSunday)

dato = Right("0" & day(dato),2) & "-" & Right("0" & month(dato),2) & "-" & year(dato)

Do while not rs.EOF
str  = "" & rs("butiksaabning") & ""
str = replace(str, "/","-") 'Der var en dato med / og ikke - så sikre - når der testes
iDato = inStr(1, str, dato)
if iDato > 0 then
  butiksId = "" & rs("butiksId") & ""
  butiksnavn = "" & rs("butiksnavn") & ""
  butikslogo = "" & rs("butikslogo") & ""
 
  slutTid = instr(iDato,str,",")
  if slutTid = 0 then slutTid = len(str)
  tidPunkt  = mid(str, iDato+15, sluttid + iDato+15)

  tidArr= split(tidPunkt, "-") 'Skal spilte på - da der - imellem de to tidspunkter
 
  if ubound(tidArr) >= 1 then
    StartTidspunkt = trim(tidArr(0))
    StopTidspunkt = trim(tidArr(1))
  else
    'hvis der ikke er angivet et tidspunkt skriv hvad den så skal skrive her.
    StartTidspunkt = ""
    StopTidspunkt = ""
  end if


'Response.Write "<img src=" & butikslogo & "><br><br><br>"
'Response.Write "<br>"
'Response.Write "<li>" & butiksnavn & "</li><br>"
Response.Write "<br>"
'Response.Write "Hvad er næste søndags dato: " & dato & "<br>"
'Response.Write "<br>"
'Response.Write "Vi har åbent fra Kl.<b> " & butiksaabning & "</b><br>"
'Response.Write StartTidspunkt & "<br>"
Response.Write "<br>"
'Response.Write StopTidspunkt
Response.Write butiksaabning & "<br>"
Response.Write dato
end if
rs.MoveNext
loop

Conn.Close
Set Conn = Nothing
%>
Avatar billede axl_rose Nybegynder
15. maj 2006 - 19:57 #44
Har desværre ikke hjulpet har ryddet op i dben så der er :
14-05-2006 - 10:00 - 13:00,21-05-2006 - 10:00 - 13:00
14-05-2006 - 13:00 - 17:00,21-05-2006 - 10:00 - 17:00
14-05-2006 - 13:00 - 17:00,21-05-2006 - 10:00 - 13:00
14-05-2006 - 13:34 - 17:31,21-05-2006 - 10:00 - 13:00

Men viser stadig intet
Avatar billede axl_rose Nybegynder
15. maj 2006 - 19:58 #45
Hvis jeg prøver at udskrive str så får jeg strengen fra butiksaabning, det er derfra det går galt men hvad ved jeg ikke...
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:01 #46
Skal datoerne i databasen skrives således:
21/05-2006 eller skal de skrives med 21-05-2006
Avatar billede eagleeye Praktikant
15. maj 2006 - 20:01 #47
Der skal tilføjes en linie mere:


butiksaabning = rs("butiksaabning")


der hvor de andre felter bliver lagt i variable
Avatar billede eagleeye Praktikant
15. maj 2006 - 20:03 #48
datoen kan skrives som enten 21/05-2006 eller 21-05-2006.
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:04 #49
Ja så står det rigtigt, men det virker stadig ikke har tilføjet den variabel til recordsettet
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:05 #50
Kan det være fordi at - 10:00 - 13:00 ikke regnes med.... eller hvad?? altså at det e kun er datoen den søger efter i databasen for tidspunkt er jo også i db'en
Avatar billede eagleeye Praktikant
15. maj 2006 - 20:05 #51
ok det lyder lidt underligt...
Prøv at tilføje denne linie i toppen af koden så for at sidre den køre dk format:

Session.LCID = 1030
Avatar billede eagleeye Praktikant
15. maj 2006 - 20:06 #52
Ja den kigger kun på datoen.
Avatar billede eagleeye Praktikant
15. maj 2006 - 20:07 #53
og så ud fra datoen finder den start og stop tidspunkt i de to variable hvis der angivet et tidspunkt:

    StartTidspunkt
    StopTidspunkt
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:15 #54
Hvis jeg prøver at lave en response.write på starttidspunkt giver det flg resultat på test siden:

:00
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:17 #55
For når et tidspunkt indsættes i databasen i butiksaabning kolonnen bliver det flg:

21-05-2006 - 10:00 - 13:00,28-05-2006 - 10:00 - 13:00
Avatar billede eagleeye Praktikant
15. maj 2006 - 20:21 #56
ok, men vil du havde det som to variable "10:00" og "13:00" eller som en variable med "10:00 - 13:00" ?
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:21 #57
Bare som en enkelt variabel.. det er vil være fint..
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:23 #58
Hvor splitter koden egentlig de forskelllige dato sæt altså f.eks:

21-05-2006 - 10:00 - 13:00,28-05-2006 - 10:00 - 13:00

skilles ved kommaet der ved 13:00,28-05-2006...
Avatar billede eagleeye Praktikant
15. maj 2006 - 20:25 #59
den finder datoen eksvis den 28-05-2006 og så søger den efter , fra det sted hvor datoen blev fundet, hvis ikke er der komma tages indtil slutningen af strengen. Men det kan være det skal laves lidt om, når der kan være en dato uden tidspunkt.
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:27 #60
Nårh okay. Altså der vil ikke være datoer uden tidspunkter...
Avatar billede eagleeye Praktikant
15. maj 2006 - 20:31 #61
ok så prøv at rette koden til dette så den udskriver variablen tidpunkt:



<%
Conn.Open DSN
SQL = "Select * FROM bu_001_data"
'Så lave et recordset og udskrive posterne:
Set rs =Conn.Execute(SQL)


offsetToSunday = 0
if weekDay(Date) <> vbSunday then offsetToSunday = 8-WeekDay(Date)
dato = DateSerial(Year(date), Month(date), Day(Date) + offsetToSunday)

dato = Right("0" & day(dato),2) & "-" & Right("0" & month(dato),2) & "-" & year(dato)

Do while not rs.EOF
str  = "" & rs("butiksaabning") & ""
str = replace(str, "/","-") 'Der var en dato med / og ikke - så sikre - når der testes
iDato = inStr(1, str, dato)
if iDato > 0 then
  butiksId = "" & rs("butiksId") & ""
  butiksnavn = "" & rs("butiksnavn") & ""
  butikslogo = "" & rs("butikslogo") & ""
  butiksaabning = "" & rs("butiksaabning") & ""
   
  slutTid = instr(iDato,str,",")
  if slutTid = 0 then slutTid = len(str)
  tidPunkt  = mid(str, iDato+12, sluttid - (iDato+10))
  tidPunkt = trim(tidPunkt)
   


'Response.Write "<img src=" & butikslogo & "><br><br><br>"
'Response.Write "<br>"
'Response.Write "<li>" & butiksnavn & "</li><br>"
'Response.Write "<br>"
'Response.Write "Hvad er næste søndags dato: " & dato & "<br>"
'Response.Write "<br>"
'Response.Write "Vi har åbent fra Kl.<b> " & butiksaabning & "</b><br>"
Response.Write tidPunkt & "<br>"
Response.Write "<br>"
'Response.Write StopTidspunkt
'Response.Write butiksaabning & "<br>"
Response.Write dato & "<br>"
end if
rs.MoveNext
loop

Conn.Close
Set Conn = Nothing
%>
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:37 #62
Okay det virker nu. Den udskriver tidspunktet, men skal datoen ikke også være med i eller skal man lave en separat response.write dato for den?
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:39 #63
Microsoft VBScript runtime error '800a0005'

Invalid procedure call or argument: 'mid'

/test.asp, line 37

den der mid skal det ikke være trim?
Avatar billede eagleeye Praktikant
15. maj 2006 - 20:39 #64
Arh nu tror jeg ved hvad du mener :)

Den skal udskrive alt det som står i database (men kun for den dato) eks:
21-05-2006 - 10:00 - 13:00



For lige nu skal den man skvie dato som en variable for sig selv?
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:41 #65
Sorry glem mit forrige spørgsmål og udskrivning af dato.. for det kan jeg jo bare hente i strengen dato.

Men den skriver en fejl ang. argument 'mid'
Avatar billede eagleeye Praktikant
15. maj 2006 - 20:41 #66
Den fejl kommer hvis der ikke er tidspunkt på somm det er lavet lige nu.
Prøv at rette:


  if slutTid = 0 then slutTid = len(str)
  tidPunkt  = mid(str, iDato+12, sluttid - (iDato+10))
  tidPunkt = trim(tidPunkt)


Til dette:


  if slutTid = 0 then slutTid = len(str)
  tidPunkt  = mid(str, iDato, sluttid - iDato)
  tidPunkt = trim(tidPunkt)



Så vil tidPunkt indeholde både dato og klokkeslætet.
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:42 #67
Det virkede hvis jeg lavede response.write tidPunkt, men hvis jeg skriver response.write butiksaabning kommer der stadig intet...
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:43 #68
Altså kan så forstå at det er tidpunkt jeg skal udskrive og derfor ikke butiksaabning...
Avatar billede eagleeye Praktikant
15. maj 2006 - 20:43 #69
Det skal faktisk være sådan her:

  if slutTid = 0 then slutTid = len(str)
  tidPunkt  = mid(str, iDato, (sluttid - iDato)+1)
  tidPunkt = trim(tidPunkt)
Avatar billede eagleeye Praktikant
15. maj 2006 - 20:45 #70
Ja nu vil tidPunkt indeholde datoen for næste søndag + det klokkeslæt som er angivet for datoen, eks:  21-05-2006 - 10:00 - 13:00  (præsis som angivet i databasen)
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:46 #71
Jeg fandt ud af at det var bedre at den kun  skrev tidspunkt ud så jeg rettede tiL:
if slutTid = 0 then slutTid = len(str)
  tidPunkt  = mid(str, iDato+12, (sluttid - iDato)+1)
  tidPunkt = trim(tidPunkt)

Det er den rigtige metode ikke, det virkede ihverrfald
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:47 #72
Wauw.....

Mange tak for din udholdenhed... ;-)!!!

Endelig virker det.... Hvis det har fanget dig er du meget så velkommen i mit projekt..! hvis det var noget for dig?
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:52 #73
Ups der er et problem den splitter ikke de forskellige datoer se her:
10:00 - 17:00,28-05-2006 - 10:00 - 13:00
Avatar billede eagleeye Praktikant
15. maj 2006 - 20:53 #74
Har du stadig linien:

  slutTid = instr(iDato,str,",")



med sådan her:


  slutTid = instr(iDato,str,",")
  if slutTid = 0 then slutTid = len(str)
  tidPunkt  = mid(str, iDato+12, (sluttid - iDato)+1)
  tidPunkt = trim(tidPunkt)
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:56 #75
Det hjalp at sætte det ind ups.. kom til at slette det før, men den viser stadig :
10:00 - 13:00,28-05-2006 -



Her er min kode sårn pt.:
<%
Conn.Open DSN
SQL = "Select * FROM bu_001_data"
'Så lave et recordset og udskrive posterne:
Set rs =Conn.Execute(SQL)


offsetToSunday = 0
if weekDay(Date) <> vbSunday then offsetToSunday = 8-WeekDay(Date)
dato = DateSerial(Year(date), Month(date), Day(Date) + offsetToSunday)

dato = Right("0" & day(dato),2) & "-" & Right("0" & month(dato),2) & "-" & year(dato)

Do while not rs.EOF
str  = "" & rs("butiksaabning") & ""
str = replace(str, "/","-") 'Der var en dato med / og ikke - så sikre - når der testes
iDato = inStr(1, str, dato)
if iDato > 0 then
  butiksId = "" & rs("butiksId") & ""
  butiksnavn = "" & rs("butiksnavn") & ""
  butikslogo = "" & rs("butikslogo") & ""
  butiksaabning = "" & rs("butiksaabning") & ""
 
slutTid = instr(iDato,str,",")
  if slutTid = 0 then slutTid = len(str)
  tidPunkt  = mid(str, iDato+12, (sluttid - iDato)+1)
  tidPunkt = trim(tidPunkt) 
   
   
if slutTid = 0 then slutTid = len(str)
  tidPunkt  = mid(str, iDato+12, (sluttid - iDato)+1)
  tidPunkt = trim(tidPunkt)
   


Response.Write "<img src=" & butikslogo & "><br><br><br>"
Response.Write "<br>"
Response.Write "<li>" & butiksnavn & "</li><br>"
Response.Write "<br>"
Response.Write "Hvad er næste søndags dato: " & dato & "<br>"
Response.Write "<br>"
Response.Write "Vi har åbent fra Kl.<b> " & tidPunkt & "</b><br>"


end if
rs.MoveNext
loop

Conn.Close
Set Conn = Nothing
%>
Avatar billede eagleeye Praktikant
15. maj 2006 - 20:58 #76
ok prøv at rette koden til dette, hvor der ikke er +12 til iDato og tidPunkt udregningen kun er med en gang:



<%
Conn.Open DSN
SQL = "Select * FROM bu_001_data"
'Så lave et recordset og udskrive posterne:
Set rs =Conn.Execute(SQL)


offsetToSunday = 0
if weekDay(Date) <> vbSunday then offsetToSunday = 8-WeekDay(Date)
dato = DateSerial(Year(date), Month(date), Day(Date) + offsetToSunday)

dato = Right("0" & day(dato),2) & "-" & Right("0" & month(dato),2) & "-" & year(dato)

Do while not rs.EOF
str  = "" & rs("butiksaabning") & ""
str = replace(str, "/","-") 'Der var en dato med / og ikke - så sikre - når der testes
iDato = inStr(1, str, dato)
if iDato > 0 then
  butiksId = "" & rs("butiksId") & ""
  butiksnavn = "" & rs("butiksnavn") & ""
  butikslogo = "" & rs("butikslogo") & ""
  butiksaabning = "" & rs("butiksaabning") & ""
 
  slutTid = instr(iDato,str,",")
  if slutTid = 0 then slutTid = len(str)
  tidPunkt  = mid(str, iDato, (sluttid - iDato)+1)
  tidPunkt = trim(tidPunkt) 


Response.Write "<img src=" & butikslogo & "><br><br><br>"
Response.Write "<br>"
Response.Write "<li>" & butiksnavn & "</li><br>"
Response.Write "<br>"
Response.Write "Hvad er næste søndags dato: " & dato & "<br>"
Response.Write "<br>"
Response.Write "Vi har åbent fra Kl.<b> " & tidPunkt & "</b><br>"


end if
rs.MoveNext
loop

Conn.Close
Set Conn = Nothing
%>
Avatar billede axl_rose Nybegynder
15. maj 2006 - 20:59 #77
Jes!!! det hjalp dog er kommeaet der stadigvæk..
Avatar billede eagleeye Praktikant
15. maj 2006 - 21:02 #78
ok disse linier:

  slutTid = instr(iDato,str,",")
  if slutTid = 0 then slutTid = len(str)
  tidPunkt  = mid(str, iDato, (sluttid - iDato)+1)
  tidPunkt = trim(tidPunkt) 



Skal faktisk rettes til dette:

  slutTid = instr(iDato,str,",")
  if slutTid = 0 then slutTid = len(str)+1
  tidPunkt  = mid(str, iDato, sluttid - iDato)
  tidPunkt = trim(tidPunkt)
Avatar billede axl_rose Nybegynder
15. maj 2006 - 21:10 #79
Jeps... :-)!!!!!

Mange mange tak...!!!!!!
Avatar billede axl_rose Nybegynder
15. maj 2006 - 21:11 #80
Hvis det har fanget dig er du meget så velkommen i mit projekt..! hvis det var noget for dig?
Avatar billede eagleeye Praktikant
15. maj 2006 - 21:13 #81
Tak for point ;)
Men jeg vil sige nej tak til at deltage i dit projekt.
Avatar billede axl_rose Nybegynder
15. maj 2006 - 23:11 #82
Hvordan undgår man den skriver datoen altså så den kun skriver tiden??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester