Just nu i M3-nätverket
Gå till innehåll

Självuppdaterande dropdown-box


Spökplumpen

Rekommendera Poster

Spökplumpen

Jag hittade en kod på nätet som jag inte får att fungera. Meningen med koden är att den i en dropdown-box skall skapa nuvarande årtal och så många år tillbaka i tiden man själv vill. Sedan när det blir ett nytt år uppdateras årtalen. Finns det någon som får den att fungera? Här är originalkoden:

 

Private Sub CreateYear(lngHowManyBack, lngSetValue)
   'Create the Option Header
   Response.Write "<select name=""fYear"">"

   'Get current Year
   Dim lngYear
   lngYear = Year(Now)

   'Loop through and create the selector from the current
   '  year going back as far as lngHowManyBack
   'strSetVlaue if set will automatically select that year
   Dim i, lngNewYear
   For i = 0 to lngHowManyBack
       'Set the new year
       lngNewYear = lngYear - i

       'Check for match
       If lngNewYear = lngSetValue Then
            Response.Write "<option selected=""selected"" value=""" & _
                 lngNewYear & """>" & lngNewYear & "</option>" & vbCrLf
       Else
            Response.Write "<option value=""" & lngNewYear & """>" & _
                 lngNewYear & "</option>" & vbCrLf
       End If
   Next

   'Complete the selection
   Response.Write "</select>"
End Sub

 

Länk till kommentar
Dela på andra webbplatser

Hej!

Vad är det som inte fungerar? Vad jag kan se så verkar koden kunna göra precis det du säger att den ska göra och jag kan inte se några fel i den. Den skapar en dropdown och fyller den med det antal år bakåt som du specificerar... Och så kan du speca vilket år som ska vara valt från start...

 

Vad händer? Händer inte?

/H

 

 

Länk till kommentar
Dela på andra webbplatser

Startår är year(Now), dvs det år som datuminställningen på servern säger att det är.

När du kallar på metoden skickar du med hur många år bakåt du vill gå och om du vill, vilket år som ska vara markerat...

Dvs.

 

CreateYear(10, 2000) borde ge dig en selectlista med start 2006 (om datumet på servern säger det) och ner till 1996 (10 år bakåt). Dessutom kommer 2000 vara det år som är valt i listan. Visst förbehåll för hur man kallar på funktioner i VBScript, det var ett tag sedan jag satt med det...

/H

 

Länk till kommentar
Dela på andra webbplatser

Micke_skane
Visst förbehåll för hur man kallar på funktioner i VBScript

[color="#0000ff"]Call[/color] CreateYear(10, 2000)

 

Om du inte vill använda Call så får du plocka bort paranteserna.

CreateYear 10, 2000

 

Detta gäller både för Function eller Sub.

 

[inlägget ändrat 2006-03-23 07:16:28 av Micke_skane]

Länk till kommentar
Dela på andra webbplatser

Micke_skane
Bra att du har koll Micke

Ja, det kan finnas sådana stunder med i livet :)

Tycker du har koll på så mycket annat!

 

Länk till kommentar
Dela på andra webbplatser

Spökplumpen

Blir det alltså så här man kallar på funktionen då?

 

<SCRIPT language=vbscript event= for=Årtal> 
<!--    
CreateYear 10, 2000
--> 
</SCRIPT>

 

Vad skall man ha för "event" för att boxen skall fyllas med årtalen direkt när sidan öppnas?

 

Länk till kommentar
Dela på andra webbplatser

Micke_skane

Använd bara:

<&
[color="#0000ff"]Call[/color] CreateYear(10,2000)

[color="#0000ff"]Private[/color] [color="#0000ff"]Sub[/color] CreateYear(lngHowManyBack, lngSetValue)
...
[color="#0000ff"]End[/color] [color="#0000ff"]Sub[/color]

&>

 

Då skapas ju din Select.

 

 

[inlägget ändrat 2006-03-23 20:39:23 av Micke_skane]

Länk till kommentar
Dela på andra webbplatser

Spökplumpen

Det fungerar fortfarande inte. Jag får meddelandet "Programsats förväntas" (vid första raden av koden).

 

Länk till kommentar
Dela på andra webbplatser

Du kan inte skapa suben efter anropet... den måste vara skapad innan anropet.

<%

Private Sub Test()

...

End sub

 

Call Test( )

%>

 

Länk till kommentar
Dela på andra webbplatser

Spökplumpen

Jag prövade att flytta ner anropet, men får fortsättningsvis samma meddelande (Programsats förväntas).

 

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Exakt hur ser din testkod ut just nu?

 

(Obs! Det spelar ingen roll i VBScript om anropet ligger före deklarationen av suben)

 

Länk till kommentar
Dela på andra webbplatser

Spökplumpen

<%
Private Sub CreateYear(lngHowManyBack, lngSetValue)
   'Create the Option Header
   Response.Write "<select name=""Årtal"">"

   'Get current Year
   Dim lngYear
   lngYear = Year(Now)

   'Loop through and create the selector from the current
   '  year going back as far as lngHowManyBack
   'strSetVlaue if set will automatically select that year
   Dim i, lngNewYear
   For i = 0 to lngHowManyBack
       'Set the new year
       lngNewYear = lngYear - i

       'Check for match
       If lngNewYear = lngSetValue Then
            Response.Write "<option selected=""selected"" value=""" & _
                 lngNewYear & """>" & lngNewYear & "</option>" & vbCrLf
       Else
            Response.Write "<option value=""" & lngNewYear & """>" & _
                 lngNewYear & "</option>" & vbCrLf
       End If
   Next

   'Complete the selection
   Response.Write "</select>"
End Sub

CreateYear 10, 2000
%>

 

Länk till kommentar
Dela på andra webbplatser

Posta resten av sidan också.

Använd LOG-knapparna.

 

(ber om ursäkt för mitt felaktiga svar, jag sitter med annan syntax i huvudet just nu)

 

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Kontrollera även att du inte har ett <% eller %> för mycket i din kod, då detta faktiskt skulle ge just det felmeddelandet du får.

 

Ex. är följande felaktigt

 

<%

' Någon annan aspkod

<%

' Påbörjar ny asp-sektion utan att stänga den föregående

response.write "test"

%>

 

%>

 

Länk till kommentar
Dela på andra webbplatser

Spökplumpen

Okej, här kommer hela sidan. Jag slapp felmeddelandet, men några årtal fylls inte i dropdown-boxen.

 

[log]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML xmlns:o = "urn:schemas-microsoft-com:office:office" xmlns:x =

"urn:schemas-microsoft-com:office:excel" xmlns:a =

"urn:schemas-microsoft-com:office:access" xmlns:dt =

"uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"><HEAD><TITLE>Evenemang</TITLE><LINK

href="./Sida_files/filelist.xml" type=text/xml rel=File-List>

<META content=Access.Application name=ProgId>

<META name=VBSForEventHandlers VALUE="TRUE">

<META http-equiv=Content-Type content="text/html; charset=windows-1252">

<STYLE id=MSODAPDEFAULTS type=text/css rel="stylesheet">.mstheme-label {

FONT-SIZE: 8pt; FONT-FAMILY: Tahoma

}

TEXTAREA {

FONT-SIZE: 8pt; FONT-FAMILY: Tahoma

}

.msoboundhtml {

FONT-SIZE: 8pt; FONT-FAMILY: Tahoma

}

HR {

COLOR: black

}

SELECT {

FONT-SIZE: 8pt; FONT-FAMILY: Tahoma

}

INPUT {

FONT-SIZE: 8pt; FONT-FAMILY: Tahoma

}

BODY {

FONT-SIZE: 10pt; FONT-FAMILY: Tahoma

}

MARQUEE {

FONT-SIZE: 8pt; FONT-FAMILY: Tahoma

}

LEGEND {

FONT-SIZE: 8pt; FONT-FAMILY: Tahoma

}

.msoHyperlinkDisplayText {

FONT-SIZE: 8pt; FONT-FAMILY: Tahoma

}

BUTTON {

FONT-SIZE: 8pt; FONT-FAMILY: Tahoma

}

.MsoShowDesignGrid {

BEHAVIOR: url(#DEFAULT#MsoShowDesignGrid)

}

</STYLE>

 

<OBJECT id=MSODSC codeBase="file:D:\Office 2K\msowc.cab#version=9,0,0,2710"

classid=CLSID:0002E530-0000-0000-C000-000000000046><PARAM NAME="XMLData" VALUE="<xml xmlns:a=&quot;urn:schemas-microsoft-com:office:access&quot;>&#13;&#10; <a:DataSourceControl>&#13;&#10; <a:OWCVersion>9.0.0.2710</a:OWCVersion>&#13;&#10; <a:ConnectionString>Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=K:\Hemsida\Spelningar.mdb;Mode=Share Deny None;Jet OLEDB:System database=&amp;quot;&amp;quot;;Jet OLEDB:Database Password=&amp;quot;&amp;quot;</a:ConnectionString>&#13;&#10; <a:MaxRecords>10000</a:MaxRecords>&#13;&#10; <a:GridX>10</a:GridX>&#13;&#10; <a:GridY>10</a:GridY>&#13;&#10; <a:ElementExtension>&#13;&#10; <a:ElementID>HändelserNavigation</a:ElementID>&#13;&#10; <a:ConsumesRecordset/>&#13;&#10; </a:ElementExtension>&#13;&#10; <a:ElementExtension>&#13;&#10; <a:ElementID>Händelse</a:ElementID>&#13;&#10; <a:ControlSource>Händelse</a:ControlSource>&#13;&#10; <a:ChildLabel>Händelse_Label</a:ChildLabel>&#13;&#10; </a:ElementExtension>&#13;&#10; <a:ElementExtension>&#13;&#10; <a:ElementID>DropdownList0</a:ElementID>&#13;&#10; <a:ChildLabel>DropdownList0_Label</a:ChildLabel>&#13;&#10; </a:ElementExtension>&#13;&#10; <a:GroupLevel>&#13;&#10; <a:RecordSource>Händelser</a:RecordSource>&#13;&#10; <a:DefaultSort>[Händelse] ASC</a:DefaultSort>&#13;&#10; <a:HeaderElementId>HeaderHändelser</a:HeaderElementId>&#13;&#10; <a:FooterElementId></a:FooterElementId>&#13;&#10; <a:CaptionElementId></a:CaptionElementId>&#13;&#10; <a:RecordNavigationElementId>NavigationSectionHändelser</a:RecordNavigationElementId>&#13;&#10; <a:DataPageSize>1</a:DataPageSize>&#13;&#10; </a:GroupLevel>&#13;&#10; <a:Datamodel version=&quot;0816&quot;>&#13;&#10; <a:SchemaRowsource id=&quot;Händelser&quot; type=&quot;dscTable&quot;>&#13;&#10; <a:SchemaField id=&quot;Nr&quot; datatype=&quot;3&quot; size=&quot;0&quot; iskey=&quot;1&quot;/>&#13;&#10; <a:SchemaField id=&quot;Händelse&quot; datatype=&quot;202&quot; size=&quot;50&quot;/>&#13;&#10; <a:SchemaField id=&quot;Årtal_1&quot; datatype=&quot;7&quot; size=&quot;0&quot;/>&#13;&#10; <a:SchemaField id=&quot;Årtal_2&quot; datatype=&quot;202&quot; size=&quot;50&quot;/>&#13;&#10; </a:SchemaRowsource>&#13;&#10; <a:RecordsetDef id=&quot;Händelser&quot;>&#13;&#10; <a:PageField id=&quot;Nr&quot;/>&#13;&#10; <a:PageField id=&quot;Händelse&quot;/>&#13;&#10; </a:RecordsetDef>&#13;&#10; </a:Datamodel>&#13;&#10; </a:DataSourceControl>&#13;&#10;</xml>'&quot;"></OBJECT>

<META content="MSHTML 6.00.2900.2802" name=GENERATOR><!--[if gte mso 9]><xml>

<o:DocumentProperties>

<o:Author>User</o:Author>

<o:LastAuthor>User</o:LastAuthor>

<o:Revision>1</o:Revision>

<o:TotalTime>0</o:TotalTime>

<o:Created>2006-03-24T16:14:55Z</o:Created>

<o:LastSaved>2006-03-24T16:17:21Z</o:LastSaved>

<o:Version>9.2720</o:Version>

</o:DocumentProperties>

<o:OfficeDocumentSettings>

<o:DownloadComponents/>

<o:LocationOfComponents HRef="file:///D:/Office%25202K/msowc.cab"/>

</o:OfficeDocumentSettings>

</xml><![endif]-->

<%

Private Sub CreateYear(lngHowManyBack, lngSetValue)

'Create the Option Header

Response.Write "<select name=""Årtal"">"

 

'Get current Year

Dim lngYear

lngYear = Year(Now)

 

'Loop through and create the selector from the current

' year going back as far as lngHowManyBack

'strSetVlaue if set will automatically select that year

Dim i, lngNewYear

For i = 0 to lngHowManyBack

'Set the new year

lngNewYear = lngYear - i

 

'Check for match

If lngNewYear = lngSetValue Then

Response.Write "<option selected=""selected"" value=""" & _

lngNewYear & """>" & lngNewYear & "</option>" & vbCrLf

Else

Response.Write "<option value=""" & lngNewYear & """>" & _

lngNewYear & "</option>" & vbCrLf

End If

Next

 

'Complete the selection

Response.Write "</select>"

End Sub

 

CreateYear 10, 2000

%>

</HEAD>

<BODY style="OVERFLOW: auto" bottomMargin=48 vLink=#800080 link=#800080

leftMargin=24 topMargin=24 rightMargin=24>

<CENTER>

<H1 id=HeadingText style="FONT-WEIGHT: normal">Evenemang&nbsp;</H1></CENTER>

<P>&nbsp;</P>

<DIV class=MicrosoftAccessBanner id=HeaderHändelserBanner

style="BORDER-RIGHT: buttonhighlight 2px outset; BORDER-TOP: buttonhighlight 2px outset; DISPLAY: none; PADDING-LEFT: 1px; FONT-WEIGHT: normal; FONT-SIZE: 8pt; OVERFLOW: hidden; BORDER-LEFT: buttonhighlight 2px outset; WIDTH: 530px; BORDER-BOTTOM: buttonhighlight 2px outset; FONT-FAMILY: Tahoma; HEIGHT: 0.507cm; BACKGROUND-COLOR: buttonface">Header:

Händelser</DIV>

<DIV class=MSOShowDesignGrid id=HeaderHändelser

style="VISIBILITY: hidden; OVERFLOW: hidden; WIDTH: 530px; POSITION: relative; HEIGHT: 23px; BACKGROUND-COLOR: transparent"><SPAN

class=MSTheme-Label id=Händelse_Label title=Händelse

style="PADDING-LEFT: 1px; LEFT: 0.053cm; OVERFLOW: visible; WIDTH: 2.751cm; POSITION: absolute; TOP: 0.053cm; HEIGHT: 0.45cm">Händelse</SPAN><TEXTAREA id=Händelse title=Händelse style="LEFT: 2.804cm; OVERFLOW: hidden; WIDTH: 4.074cm; POSITION: absolute; TOP: 0.053cm; HEIGHT: 0.45cm" tabIndex=1></TEXTAREA><SPAN

class=MSTheme-Label id=DropdownList0_Label title=DropdownList0

style="PADDING-LEFT: 1px; LEFT: 7.46cm; OVERFLOW: visible; WIDTH: 2.539cm; POSITION: absolute; TOP: 0.105cm; HEIGHT: 0.423cm">Årtal</SPAN><SELECT

id=Årtal title=DropdownList0

style="LEFT: 10cm; WIDTH: 2.989cm; POSITION: absolute; TOP: 0.105cm; HEIGHT: 0.396cm"

tabIndex=2><OPTION selected></OPTION></SELECT></DIV>

<DIV class=MicrosoftAccessBanner id=NavigationSectionHändelserBanner

style="BORDER-RIGHT: buttonhighlight 2px outset; BORDER-TOP: buttonhighlight 2px outset; DISPLAY: none; PADDING-LEFT: 1px; FONT-WEIGHT: normal; FONT-SIZE: 8pt; OVERFLOW: hidden; BORDER-LEFT: buttonhighlight 2px outset; WIDTH: 530px; BORDER-BOTTOM: buttonhighlight 2px outset; FONT-FAMILY: Tahoma; HEIGHT: 0.2in; BACKGROUND-COLOR: buttonface">NavigationSection:

Händelser</DIV>

<DIV class=MSOShowDesignGrid id=NavigationSectionHändelser

style="VISIBILITY: hidden; OVERFLOW: hidden; WIDTH: 530px; POSITION: relative; HEIGHT: 35px; BACKGROUND-COLOR: transparent">

<OBJECT id=HändelserNavigation

style="LEFT: 8px; WIDTH: 426px; POSITION: absolute; TOP: 5px"

codeBase="file:D:\Office 2K\msowc.cab#version=9,0,0,2710"

classid=CLSID:0002E531-0000-0000-C000-000000000046><PARAM NAME="_State" VALUE=""><PARAM NAME="RecordSource" VALUE="Händelser"><PARAM NAME="RecordsetLabel" VALUE="Händelser |0 of |2;Händelser |0-|1 of |2"><PARAM NAME="ShowFirstButton" VALUE="-1"><PARAM NAME="ShowPrevButton" VALUE="-1"><PARAM NAME="ShowNextButton" VALUE="-1"><PARAM NAME="ShowLastButton" VALUE="-1"><PARAM NAME="ShowNewButton" VALUE="-1"><PARAM NAME="ShowDelButton" VALUE="-1"><PARAM NAME="ShowSaveButton" VALUE="-1"><PARAM NAME="ShowUndoButton" VALUE="-1"><PARAM NAME="ShowSortAscendingButton" VALUE="-1"><PARAM NAME="ShowSortDecendingButton" VALUE="-1"><PARAM NAME="ShowApplyFilterButton" VALUE="-1"><PARAM NAME="ShowToggleFilterButton" VALUE="-1"><PARAM NAME="ShowHelpButton" VALUE="-1"><PARAM NAME="ShowLabel" VALUE="-1"><PARAM NAME="FontName" VALUE="Tahoma"></OBJECT>

</DIV>

<P>&nbsp;</P></BODY></HTML>[/log]

 

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon
men några årtal fylls inte i dropdown-boxen.

Vilka årtal då? Funktionen skall ju fylla i alla årtal från aktuellt år och tio år tillbaka, med år 2000 markerat. Precis så fungerar det också när jag testar din kod.

 

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Om du i din webbläsare väljer att visa den resulterande html-koden för sidan (ex. View->Source i Internet Explorer), så kommer du möjligtvis längst ned att hitta ett VBScript-felmeddelande. Vilket det kan tänkas vara vet jag inte, för det funkar ju hos mig. Men kontrollera det iallfall.

 

[inlägget ändrat 2006-03-24 17:54:31 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

När jag tittar på din sida, så ligger ditt VBScript i Head-taggarna av HTMLkoden. Där har du även lagt anropet till funktionen...

Längre ner i koden så har du själv skapat en selectbox...? Personligen så hade jag lagt funktionen högre upp i dokumentet, utanför HTMLkoden, men, då kör jag rena asp-sidor, vilket jag misstänker att detta kanske inte är..? Om du skriver anropet till din funktion där selectboxen ska vara i htmlkoden (då får du skriva inom <%%>), så kanske det funkar bättre?

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...