webForumDet fria alternativet

'End' förväntas

ASP

15 svar · 669 visningar · startad av J07

Medlem sedan maj 2007172 inlägg
Frågan#1

Får detta felet. Har prövat med en xtra End if både innan ElseIf raden och efter ElseIf blocket men om jag lägger till End if så står det att function förväntas istället.

Kompileringsfel i Microsoft VBScript (0x800A03F6)
'End' förväntas.
/stalbolaget/extranet/ssi/common_functions.ssi, line 129
ElseIf (Cstr(i_item) = "1b") Then

Medlem sedan juni 200032 967 inlägg
#2

Du måste visa mycket mer kod, eftersom det är koden runtomkring som gör att det inte fungerar.

Medlem sedan sep. 2006867 inlägg
#3

Skicka med hela koden så kan vi förhoppningsvis hitta den felande biten åt dig!

/r Äsch :)

Medlem sedan maj 2007172 inlägg
#4

End förväntas och raden i fetstilt står då angiven också:

Function getPrice(i_item, i_selectedAltId, i_priceIndex)

 Dim myDate
 myDate = (RS_reportInfo.Fields.Item("weight_date").Value)   
   
 dim alt1, alt2, alt3, altValue
 dim price
 
 price = 0 
 '

 If (Cstr(i_item) = "1") Then
'
If myDate < CDate("2007-05-01") Then

  alt1 = 1
  alt2 = 2
  alt3 = 3
  '

  if (i_selectedAltId = 1) then
   altValue = alt1
  elseIf (i_selectedAltId = 2) then
   altValue = alt1 + alt2
  elseIf (i_selectedAltId = 3) then
   altValue = alt1 + alt3
  end if  
  
Else

  alt1 = 2
  alt2 = 2
  alt3 = 3
  '
  if (i_selectedAltId = 1) then
   altValue = alt1
  elseIf (i_selectedAltId = 2) then
   altValue = alt1 + alt2
  elseIf (i_selectedAltId = 3) then
   altValue = alt1 + alt3
  end if  

End if 

  If (hasValue(i_priceIndex)) then
   '

   price = round(CDbl(i_priceIndex) + altValue,0)
  End if
 End if

'--------------------------------------------------------------------------	

	[B]ElseIf (Cstr(i_item) = "1b") Then[/B]	
		'
		alt1 = 1
		alt2 = 3
		alt3 = 5
		'
	
		if (i_selectedAltId = 1) then
			altValue = alt1
		elseIf (i_selectedAltId = 2) then
			altValue = alt2
		elseIf (i_selectedAltId = 3) then
			altValue = alt3
		end if
		
		If (hasValue(i_priceIndex)) then
			'
			' Calculate price		
			price = round((CDbl(i_priceIndex) * 1) + altValue, 2)
		End if
Medlem sedan juni 200032 967 inlägg
#5

Koden är rätt hyggligt indenterad, men om du indenterar den ordentligt så ser du nog att du har ett end if som inte hör hemma där det ligger (den som ligger närmast ovanför den långa linjen.)

Medlem sedan maj 2007172 inlägg
#6

Tack det stämmer! men sen fick jag: Objekt krävs.: 'RS_reportInfo'
....men det är en annan historia

Medlem sedan okt. 20041 556 inlägg
#7

Detta :

Dim myDate
myDate = (RS_reportInfo.Fields.Item("weight_date").Value)

Skulle jag inte haft med i funktionen.
Lägg in myDate här: Function getPrice(i_item, i_selectedAltId, i_priceIndex, myDate) och ta med den när du kallar på funktionen i stället. :)

Medlem sedan maj 2007172 inlägg
#8

Går det inte att ha: myDate = (RS_reportInfo.Fields.Item("weight_date").Value) i en funktion? det verkar inte så när jag testar

Medlem sedan juni 200032 967 inlägg
#9

Det beror på hur funktionen ser ut, och var du skapar recordsetet.

I övrigt: du kan förkorta

RS_reportInfo.Fields.Item("weight_date").Value

till:

RS_reportInfo("weight_date")

Parenteserna runt uttrycket är också onödiga.

Medlem sedan maj 2007172 inlägg
#10

Detta är en funktion som är inkluderad som ssi fil till en annan sida.
Något blir fel när datum ska kollas...verkar som weight_date ignoreras?

Function getPrice(i_item, i_selectedAltId, i_priceIndex)
 Dim myDate
 myDate = RS_reportInfo("weight_date")
   
 dim alt1, alt2, alt3, altValue
 dim price
 
 price = 0 

 If (Cstr(i_item) = "1") Then

If myDate < CDate("2007-05-01") Then

  alt1 = 1
  alt2 = 2
  alt3 = 3

  if (i_selectedAltId = 1) then
   altValue = alt1
  elseIf (i_selectedAltId = 2) then
   altValue = alt1 + alt2
  elseIf (i_selectedAltId = 3) then
   altValue = alt1 + alt3
  end if  
  
Else

  alt1 = 2
  alt2 = 2
  alt3 = 4

  if (i_selectedAltId = 1) then
   altValue = alt1
  elseIf (i_selectedAltId = 2) then
   altValue = alt1 + alt2
  elseIf (i_selectedAltId = 3) then
   altValue = alt1 + alt3
  end if  

End if 

  If (hasValue(i_priceIndex)) then

   price = round(CDbl(i_priceIndex) + altValue,0)
  End if
Medlem sedan juni 20019 519 inlägg
#11

för att en funktion "kan" inte innehålla någon data(missuppfattar inte mig nu någon)
Men en funktion för mig är en "mall" eller har en funktion att göra. Nu försöker du lägga in ett Recordset "weight_date" vilket inte din funktion känner till alls vad det är för något.

Jag hade ändrat din funktion:

Function getPrice(i_item, i_selectedAltId, i_priceIndex[b],myDate[/b])

och inkludera RS_reportInfo("weight_date") i parametern "myDate

Medlem sedan sep. 2006867 inlägg
#12

/r oj ok såg voigts svar...

Jag tor du måste göra en convert på myDate också, har för mig att vbscript struntar i typen på wheight_date. Skriv alltså

myDate = CDate(RS_reportInfo("weight_date"))

och håll tummarna :)

Medlem sedan juni 200032 967 inlägg
#13

Jag tycker det känns konstigt att du ropar på recordset som inte skapas i funktionen. Har du deklarerat (med dim) recordsetet innan du kör funktionen? Får du något felmeddelande? Vad innehåller weight_date?

Medlem sedan okt. 20041 556 inlägg
#14

Du måste deklarera ditt recordset utanför funktionen, och det är garanterat inte bra i detta fall speciellt om du har din databasanslutning öppen. Därför så borde du lägga värdet utanför, och ta med det när du kallar på funktionen.

Medlem sedan maj 2007172 inlägg
#15

Om jag lägger detta i asp filen :

 <%
Dim RS_reportInfo
Dim RS_reportInfo_numRows

Set RS_reportInfo = Server.CreateObject("ADODB.Recordset")
RS_reportInfo.ActiveConnection = MM_DSN_s_STRING
RS_reportInfo.Source = "SELECT *  FROM rep"
RS_reportInfo.CursorType = 0
RS_reportInfo.CursorLocation = 2
RS_reportInfo.LockType = 1
RS_reportInfo.Open()

RS_reportInfo_numRows = 0

Dim myDate
 myDate = CDate(RS_reportInfo("weight_date"))
 %>

..och sen inkluderar ssi filen där jag kollar med

If myDate < CDate("2007-05-01") Then

Men jag får sammma resultat som tidigare....If myDate ignoreras fortfarande

Medlem sedan juni 20019 519 inlägg
#16

Ge oss mer kod... ditt flöde är för mig mycket oklart.. du ger en ½ skriven funktion.. myDate i din ssi fil är den bara där eller du ta även in det i din funktion?

267 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)