webForumDet fria alternativet

varför hämtar den inte från databas

ASP

25 svar · 265 visningar · startad av Gimbo

Medlem sedan dec. 20001 626 inlägg
Frågan#1

Kan någon hjälpa mig med denna kod, som är gjord skriven från ASP på 3veckor, alltså det den inte gör är att den inte hämtar uppgifterna från databasen och insätter dessa i kalender rutorna:

<% diverse kod blablabl %>
<html>
<head>
<title>Min kalender</title>
<link rel="stylesheet" href="stil.css" type="text/css">
</head>
<body leftmargin="0" topmargin="0">
<table align="center"  bordercolor="#000000" border="1" cellspacing="0" width="600" height="400">
  <tr height="50" bgcolor="#f0f0f0" bordercolor="#f0f0f0"> 
    <th  bgcolor="#f0f0f0" bordercolor="#f0f0f0"> <font size="1" face="verdana"> 
      <a href="kalender.asp?datum=<%=strTidigareManad%>" onfocus="this.blur()">Förra</a> 
      </font> </th>
    <th colspan="5" bgcolor="#f0f0f0" bordercolor="#f0f0f0"> <font size="6" face="verdana"> 
      <%
Response.Write Manader(Month(dbDatum))
 Response.Write " " & Year(dbDatum)
%>
      </font> </th>
    <th  bgcolor="#f0f0f0"  bordercolor="#f0f0f0"> <font size="1" face="verdana"> 
      <a href="kalender.asp?datum=<%=strKommandeManad%>" onfocus="this.blur()">Nästa</a> 
      </font> </th>
  </tr>
  <tr height="10" bgcolor="#dfefdf"> 
    <th><font face="verdana" size="1">Måndag</font></th>
    <th><font face="verdana" size="1">Tisdag</font></th>
    <th><font face="verdana" size="1">Onsdag</font></th>
    <th><font face="verdana" size="1">Torsdag</font></th>
    <th><font face="verdana" size="1">Fredag</font></th>
    <th><font face="verdana" size="1">Lördag</font></th>
    <th><font face="verdana" size="1" color="red">Söndag</font></th>
  </tr>

<%

Dim Conn
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("..\db_tillf.mdb")
 

Dim SQL
SQL = "SELECT Dag, Handelse FROM kal WHERE Manad = '"& Month(dbDatum)&"'  AND Ar = '"& Year(dbDatum) &"' ORDER BY Dag Desc"

Dim Recset
Set Recset = Server.CreateObject("ADODB.Recordset") 
Recset.Open SQL, Conn, 1, 2

%>
  <%
 
Dim iAntalInbokningar
iAntalInbokningar = 0

Dim iRaderLoop, iKolumnerLoop
 For iRaderLoop = 1 to iRader
   Response.Write "<tr>"
   For iKolumnerLoop = 1 to iKolumner
     If aDagar((iRaderLoop-1)*7 + iKolumnerLoop) > 0 Then
       Response.Write "<td valign=top bgcolor=#f6faf6 align=right width=""14%"" & height=" & FormatPercent(1/iRader,0) & ">"
       Response.Write "<table cellspacing=0 cellpadding=0 border=0 " & "width=""100%"">"

       Response.Write "<tr><td align=right valign=top><b>"
       Response.Write "<font face=verdana size=""1""><b>"
       Response.Write aDagar((iRaderLoop-1)*7 + iKolumnerLoop)
       Response.Write "</b></font>"
       Response.Write "</b></td></tr>"

   If Not Recset.EOF Then
     If Recset("Dag") = aDagar((iRaderLoop-1)*7 + iKolumnerLoop) Then
       Response.Write "<tr  height=""100%""><td valign=top align=center>"
       Response.Write "<font size=1 face=verdana>"

       Response.Write Recset("Handelse")
       Recset.MoveNext

       iAntalInbokningar  = iAntalInbokningar + 1

       Response.Write "</font>"        
       Response.Write "</td></tr>"

     End If
    End If

    Response.Write "</table>"
    Response.Write "</td>"
    Else
        Response.Write "<td  bgcolor=#ffffff>&nbsp;</td>"
    End If
  Next

  Response.Write "</tr>"
Next

Recset.Close
Set Recset = Nothing

Conn.Close
Set Conn = Nothing

%>

</table>
<br>
<form method="get" action="kalender.asp">
  <center>
    <select size="1" name="Datum">
      <option value="<%=DateSerial(Year(dbDatum), 1, 1)%>"
<% If Month(dbDatum) = 1 Then Response.Write "selected"%>> Januari </option>
      <option value="<%=DateSerial(Year(dbDatum), 2, 1)%>"
<% If Month(dbDatum) = 2 Then Response.Write "selected"%>> Februari </option>
      <option value="<%=DateSerial(Year(dbDatum), 3, 1)%>"
<% If Month(dbDatum) = 3 Then Response.Write "selected"%>> Mars </option>
      <option value="<%=DateSerial(Year(dbDatum), 4, 1)%>"
<% If Month(dbDatum) = 4 Then Response.Write "selected"%>> April </option>
      <option value="<%=DateSerial(Year(dbDatum), 5, 1)%>"
<% If Month(dbDatum) = 5 Then Response.Write "selected"%>> Maj </option>
      <option value="<%=DateSerial(Year(dbDatum), 6, 1)%>"
<% If Month(dbDatum) = 6 Then Response.Write "selected"%>> Juni </option>
      <option value="<%=DateSerial(Year(dbDatum), 7, 1)%>"
<% If Month(dbDatum) = 7 Then Response.Write "selected"%>> Juli </option>
      <option value="<%=DateSerial(Year(dbDatum), 8, 1)%>"
<% If Month(dbDatum) =8 Then Response.Write "selected"%>> Augusti </option>
      <option value="<%=DateSerial(Year(dbDatum), 9, 1)%>"
<% If Month(dbDatum) = 9 Then Response.Write "selected"%>> September </option>
      <option value="<%=DateSerial(Year(dbDatum), 10, 1)%>"
<% If Month(dbDatum) = 10 Then Response.Write "selected"%>> Oktober </option>
      <option value="<%=DateSerial(Year(dbDatum), 11, 1)%>"
<% If Month(dbDatum) = 11 Then Response.Write "selected"%>> November </option>
      <option value="<%=DateSerial(Year(dbDatum), 12, 1)%>"
<% If Month(dbDatum) = 12 Then Response.Write "selected"%>> December </option>
    </select>
    <input type="submit" value="Visa månad">
  </center>
</form>
<div align="center"> <font face="Verdana, Arial, Helvetica, sans-serif" size="1"><b> 
  <a href="loggain.asp" onfocus="this.blur()">Admin</a> </b></font></div>
</body>
</html>
Medlem sedan dec. 200012 464 inlägg
#2

Variablerna iRader och iKolumner får aldrig några värden och därför så kommer man aldrig in i looparna

For iRaderLoop = 1 to iRader
'respektive
For iKolumnerLoop = 1 to iKolumner

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20001 626 inlägg
#3

Hmmm, men hur ska jag göra för att bli kvitt problemet??

Medlem sedan dec. 200012 464 inlägg
#4

Nu vet jag inte exakt vad dom betyder men du kan ju testa och sätta lite värden och se vad det får för resultat

iRader = 5
iKolumn = 7
For iRaderLoop = 1 to iRader
Response.Write "<tr>"
For iKolumnerLoop = 1 to iKolumner

t.ex.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20001 626 inlägg
#5

får ett felmeddelande som lyder:

Körningsfel i Microsoft VBScript fel '800a01f4' 
Odefinierad variabel: 'iKolumn' 

/kalender/kalender.asp, rad 128

väldigt skumt problem, för den skriver till databasen när jag lägger till en händelse, kan det ha ngt med att jag har access97 som databas?

Medlem sedan dec. 200012 464 inlägg
#6

Felmeddelandet som du fick beror på att jag skrev fel

iRader = 5
iKolumner = 7
For iRaderLoop = 1 to iRader
Response.Write "<tr>"
For iKolumnerLoop = 1 to iKolumner

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20001 626 inlägg
#7

Det e sak samma, den läser fortfarande in info från databasen, vet du vart jag tror felet ligger, jag tror det ligger i databasen, för det här scriptet e gjort av "ASP på 3veckor" och jag hade scriptet fördigt men inte databasen så jag gjorde min egna databas, och så här ser det ut när den ska läsa in värdena från databasen:

<%

Dim Conn
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("kalender.mdb")
 
Dim SQL
SQL = "SELECT Dag, Handelse FROM kalender WHERE Manad = "& Month(dbDatum)&"  AND Ar = "& Year(dbDatum) &" ORDER BY Dag ASC"

Dim Recset
Set Recset = Server.CreateObject("ADODB.Recordset") 
Recset.Open SQL, Conn, 1, 2

%>

och så här ser det ut när den ska skriva till databasen:


<%

' *******************************************************
' Databaskoppling
' *******************************************************
Dim Conn, SQL
Set Conn	= Server.CreateObject("ADODB.Connection")

Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("..\db_tillf.mdb") & ";pwd=;"

SQL = "INSERT INTO kal ([Ar],[Manad],[Dag],[Handelse]) VALUES('" & Request.Form("Ar") & "','" & Request.Form("Manad") & "','" & Request.Form("Dag") & "','" & Request.Form("Handelse") & "')"
Conn.Execute(SQL)

Conn.Close
Set Conn = Nothing

Response.Redirect "admin.asp"

och så här ser min databas ut:

ID|räknare
Ar|Text
Manad|Text
Dag|Text
Handelse|Text

Och om du kollar på denna rad så ser du att den inte har ' innan "-tecknet dvs månad och dag raderna, ska inte sättas till datum/tid för då skulle det ju va en # innan, så jag undrar vad det ska va för värden på de raderna i databasen, hänger du med LarsG??

Medlem sedan dec. 200012 464 inlägg
#8

Det verkar vara bättre om du ändrar datatypen för Ar Manad och Dag till tal

I så fall får du byta insert-satsen till

SQL = "INSERT INTO kal ([Ar],[Manad],[Dag],[Handelse]) VALUES(" & Request.Form("Ar") & "," & Request.Form("Manad") & "," & Request.Form("Dag") & ",'" & replace(Request.Form("Handelse"),"'","''") & "')"
Conn.Execute(SQL)

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20001 626 inlägg
#9

Tack LarsG nu fungera det :-) men det va skumt att det inte fungera i början då den inte läste in värdena från databasen... men men hur som helst nu fungerar det

Medlem sedan dec. 20001 626 inlägg
#10

jag fundera på att vidare utveckla detta kalender script och göra så att folk kan klicka på det som visas i kalender rutan och det öppnas ett popup fönster där det står allt som finns i databas raden, för nu e det så att det inte står allt det man skriver in, skulle vilja att 68 tecken skrevs in i kalender rutan, och sedan skall en mer info länk dyka upp där man kan läsa om allt som står i databasen, kan någon hjälpa mig? så här ser raden där det skrivs till en kalender ruta:

<%

Dim Conn
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("..\db_tillf.mdb")
 

Dim SQL
SQL = "SELECT Dag, Handelse FROM kal WHERE Manad = "& Month(dbDatum)&"  AND Ar = "& Year(dbDatum) &" ORDER BY Dag ASC"

Dim Recset
Set Recset = Server.CreateObject("ADODB.Recordset") 
Recset.Open SQL, Conn, 1, 2

%>
  <%
 
Dim iAntalInbokningar
iAntalInbokningar = 0

Dim iRaderLoop, iKolumnerLoop
iRader = 5
iKolumner = 7
For iRaderLoop = 1 to iRader
Response.Write "<tr>"
For iKolumnerLoop = 1 to iKolumner
     If aDagar((iRaderLoop-1)*7 + iKolumnerLoop) > 0 Then
       Response.Write "<td valign=top bgcolor=#f6faf6 align=right width=""14%"" & height=" & FormatPercent(1/iRader,0) & ">"
       Response.Write "<table cellspacing=0 cellpadding=0 border=0 " & "width=""100%"">"

       Response.Write "<tr><td align=right valign=top><b>"
       Response.Write "<font face=verdana size=""1""><b>"
       Response.Write aDagar((iRaderLoop-1)*7 + iKolumnerLoop)
       Response.Write "</b></font>"
       Response.Write "</b></td></tr>"

   If Not Recset.EOF Then
     If Recset("Dag") = aDagar((iRaderLoop-1)*7 + iKolumnerLoop) Then
       Response.Write "<tr  height=""100%""><td valign=top align=left>"
       Response.Write "<font size=1 face=verdana>"

       Response.Write Recset("Handelse")
       Recset.MoveNext

       iAntalInbokningar  = iAntalInbokningar + 1

       Response.Write "</font>"        
       Response.Write "</td></tr>"

     End If
    End If

    Response.Write "</table>"
    Response.Write "</td>"
    Else
        Response.Write "<td  bgcolor=#ffffff>&nbsp;</td>"
    End If
  Next

  Response.Write "</tr>"
Next

Recset.Close
Set Recset = Nothing

Conn.Close
Set Conn = Nothing

%>

och det är från kolumnen Handelse man läser in informationen i kalender rutan...

Popup rutans script e inget problem, den tänker jag köra med javascript men problemet är hur man begränsar antalet bokstäver och infår en mer info knapp som länkas till den specifika aktiviteten, någon som kan hjälpa mig?

Medlem sedan dec. 200012 464 inlägg
#11

Om du byter denna

Response.Write Recset("Handelse")

till

Dim handelse
handelse = recset("Handelse")
response.write left(handelse,64)

if len(handelse) > 64 then
'kod för popup
%>
<type input='SUBMIT' onclick=javascript:xxx value='Mer'>
<%
end if

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20001 626 inlägg
#12

LarsG, men hur ska knappen veta att det är just den texten som ska öppnas i en ny ruta?

hur ska kodningen för pop up länken vara?

jag har försökt trixa o fixa den i dagar nu men inte lyckats, snälla tror du att du kan hjälpa mig...

Medlem sedan dec. 200012 464 inlägg
#13

Jag kan inte javascript, tyvärr.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20001 626 inlägg
#14

Någon annan som kan hjälpa mig med det+ eller ngn so kan hjälpa mig med att fixa det här problemet?

Men Lars, hur skulle du fixa det med asp? alltså det måste inte vara jva, bara jag får det gjort...

Medlem sedan juni 200032 967 inlägg
#15

ASP blir det svårt med, men lite javascript går det väl att fixa. :)

Hur vill du ha det, en alertbox med texten i eller ett nytt litet fönster med en sida som visar texten?

Mvh,

------------------
Don't panic!

Medlem sedan dec. 200012 464 inlägg
#16

Så vitt jag förstår så måste du använda javascript för att öppna ett nytt fönster, så det går inte med enbart ASP.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20001 626 inlägg
#17

en alertbox, det e nämmligen som så att oi kalender rutan så ska det enbart visas 64tecken sen när man klickar på en "mer" knapp så ska hela inehållet synas...

Medlem sedan juni 200032 967 inlägg
#18

Okidoki! :)

Testa detta:

strHandelse = replace(handelse, vbCrLf, "\n")
strHandelse = replace(strHandelse,"'","\'")
<a href="" onclick="alert('<%=strHandelse%>');">Klicka här för mer info!</a>

Jag gjorde om submitknappen från koden ovan till en textlänk, eftersom jag tycker det är smidigare.

Mvh,

------------------
Don't panic!

[Redigerat av @nders den 28 nov 2001]

Medlem sedan dec. 20001 626 inlägg
#19

Men vad ska jag ha mellan "-tecknena i a href taggen??

Medlem sedan dec. 20001 626 inlägg
#20

Kan du visa mig hur hela kodningen för det där ska se ut, skulle verkligen uppskatta det...

268 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)