Avatar billede knutbl Nybegynder
04. september 2001 - 16:52 Der er 7 kommentarer og
1 løsning

HVA er feil + IF-THEN...

Jeg skal ha en liten spalte på forsiden av min band-site hvor bandets neste konsert skal skrives ut fra en database. Databasen inneholder både eldre og nyere konserter enn den jeg skal ha skrevet ut; - Den jeg vil ha er den som er NÆRMEST dagens dato.
I TILLEGG vil jeg ha en IF-THEN setning som skriver \"There are no upcoming concerts...come back soon...\" dersom det ikke er noen konserter som matcher kriteriet \"større eller lik dagens dato\".
DETTE er mitt første forsøk, uten IF-THEN-setningen. Jeg får feilmeldingen under, og vil gjerne vite hvordan jeg løser dette OG if-then-setningen:

Microsoft OLE DB Provider for ODBC Drivers error \'80040e07\'
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
/test.asp, line 15

Her er scriptet (linje 15 er \"set rs\"-delen):

<b>NEXT CONCERT:</b>
<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath (\"webmaster/allconcerts.mdb\")

strSql = \"SELECT TOP 1 * FROM concerts WHERE (concertdate = \'\" & date & \"\') ORDER  BY concertdate DESC\"
Set rs = Conn.Execute(strSql)
Do
%>
<%
Response.Write rs(\"concertdate\") & \" - \"
%>
<%
Response.Write rs(\"city\") & \" - \"
%>
<%
Response.Write rs(\"location\") & \"<br>\"
%>
<%Response.Write rs(\"info\") %>
<%
rs.moveNext
Loop while not rs.eof
conn.close
set conn = nothing
%>
</html>
Avatar billede vandhunden Nybegynder
04. september 2001 - 16:55 #1
Det er noget med date i linie 14 så.
Avatar billede knutbl Nybegynder
04. september 2001 - 17:18 #2
OK. Jeg har endret hele oppsettet, og alt fungerer nå fint. Jeg gjorde det slik:
<%
dddDate=date()
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath (\"webmaster/allconcerts.mdb\")
set rs = conn.execute(\"Select TOP 1 * from concerts where concertdate>= #\" & dddDate & \"# order by concertdate\")

MEN: Den som fikser et IF-THEN statement som skriver følgende melding: \"There are no upcoming concerts...come back soon...\" dersom det ikke er noen konserter som matcher kriteriet \"større eller lik dagens dato\" FÅR POINTSENE...

KnB
Avatar billede 2-maz Nybegynder
04. september 2001 - 19:55 #3
<b>NEXT CONCERT:</b>
<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath (\"webmaster/allconcerts.mdb\")

strSql = \"SELECT TOP 1 * FROM concerts WHERE concertdate = \'\" & date & \"\' ORDER BY concertdate\"
Set rs = Conn.Execute(strSql)
Do
%>
<%
Response.Write rs(\"concertdate\") & \" - \"
%>
<%
Response.Write rs(\"city\") & \" - \"
%>
<%
Response.Write rs(\"location\") & \"<br>\"
%>
<%Response.Write rs(\"info\") %>
<%
rs.moveNext
Loop while not rs.eof
conn.close
set conn = nothing
%>
</html>

------------


Avatar billede knutbl Nybegynder
04. september 2001 - 21:37 #4
2-Maz: Som du ser hadde jeg allerede funnet  løsningen på problem nr 1 når du svarte. Som du også ser, er det nå problem 2 jeg ønsker svar på, altså IF-THEN-delen. Den som gir meg et hint/ en løsning på dette, får pointsene.

KnB
Avatar billede knutbl Nybegynder
04. september 2001 - 21:41 #5
2-maz: Hva er egentlig forskjellen mellom din løsning og min opprinnelige kode???
KnB
Avatar billede eagleeye Praktikant
05. september 2001 - 00:14 #6
Hej her er lidt som måske kan hjælpe dig. Du må selv indsættet lidt formatering af teksten, mth <center> <b> <i> og font.
<body>
<%
strSQL = \"SELECT * FROM concerts WHERE concertdate>=#\"&datostr&\"# ORDER BY concertdate;\"
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
%>
  Next Consert is: <br>
  Date : <%=rs(\"concertdate\")%><br>
  City : <%=rs(\"city\")%><br>
  Location : <%=rs(\"location\")%><br>
  Information : <%=rs(\"info\")%><br>
<%else%>
  There are no upcoming concerts...come back soon... <br>
<%end if%>
</body>

Hvis du tid på konserten kan du benytte dette i stedet for den første SQL sætning:
strSQL = \"SELECT * FROM concerts \"
strSQL = strSQL & \"WHERE (concertdate=#\"&datostr&\"# AND tid>=#\"&timestr&\"#) OR concertdate>#\"&datostr&\"# \"
strSQL = strSQL & \"ORDER BY concertdate;\"

Håber det hjælper dig lidt på vej. Jeg har selv brugt det til at finde den næste kamp for et fodboldhold. Så hvis det ikke helt virker så skriv så gør jeg lige lidt mere ud af det. Dette eksemple er klippet sammen på kort tid.

Jeg ved ikke hvordan du har gemt dato og evt. tid i databasen men jeg bruge dette for  \"datostr\" og \"timestr\":

datostr = month(date()) & \"-\" & day(date()) & \"-\" & year(date())
timestr = time()

Jeg har haft problem med at jeg var nød til at sætte månede før dag i SQL (mm-dd-yyyy) kaldet selv om dato feltet i databasen dd-mm-yyyy. Det skyldes måske jeg benytter en Dansk version af Access??
Avatar billede eagleeye Praktikant
05. september 2001 - 00:17 #7
Jeg kan se du selv har løst problemmet med SQL sætningen så du må hellere benytte den du selv har lavet. Så bare glem den SQL sætning jeg skrev.
Avatar billede knutbl Nybegynder
05. september 2001 - 06:36 #8
Eagleeye:
Jeg bruker din if-setning, og det var nettopp det jeg var ute etter, så pointsene er dine.
Takk for hjelpen!
KnB
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