26. juli 2004 - 13:12
Der er
11 kommentarer og 1 løsning
"Type mismatch: Ubound" i function
Nedenstående giver fejlen: Type mismatch: 'Ubound' og henviser til linien "For m = 1 to Ubound(arrPageID)" Jeg kan ikke se, hvad der skal gøres anderledes. Kan I? Sub WriteMenus 'henter data Set rsPages = MyConn.Execute("Select PageID,Title,ParentPageID from Pages") Do 'laver strenge arrPageID = arrTitle & "#" & rsPages("PageID") arrTitle = arrTitle & "#" & rsPages("Title") arrParentID = arrParentID & "#" & rsPages("ParentPageID") rsPages.MoveNext Loop while not rsPages.eof 'Laver arrays arrPageID = Split(arrPageID,"#") arrTitle = Split(arrTitle,"#") arrParentID = Split(arrParentID,"#") 'skriver fil på serveren Set FSO = Server.CreateObject("Scripting.FileSystemObject") TheFile = Server.Mappath("../admin/write/Menu/LoggedOutMenu.txt") Set File = FSO.OpenTextFile(TheFile, 2) 'bruger den rekursive funktion WriteLines til at 'skrive sidetitler med ParentPageID = 0 og deres undersider WriteLines(0) Set fso = nothing rsPages.Close Set rsPages = Nothing End Sub Function WriteLines(intID) For m = 1 to Ubound(arrPageID) 'Hvis underside til den side som funktionen er kaldt med If Cint(arrParentID(m)) = Cint(intID) Then File.WriteLine(""& arrTitle(m) &"") 'ser om der er undersider WriteLines(arrPageID(m)) End If Next End Function Call WriteMenus
Annonceindlæg fra XFlow
Ubound finder størrelsen på et array, og arrPageID er nok ikke et array så prøv uden Ubound: For m = 1 to arrPageID
Hmm, så sker der absolut intet... browseren siger ikke et kvæk, og der bliver heller ikke skrevet noget i txt-filen på serveren arrPageID er vel et array, når jeg har sagt arrPageID = Split(arrPageID,"#")?? :-)
Ja det rigtig. Så er fejlen her: arrPageID = arrTitle & "#" & rsPages("PageID") Der skal stå arrPageID og ikke arrTitle. arrPageID = arrPageID & "#" & rsPages("PageID") og så behold det med Ubound :)
OK, det var en dum slåfejl fra min side :-) Men siden melder stadig: Type mismatch: 'Ubound' Hmmm....
Prøv at dim dine globale variable uden for funktionen sådan compileren ikke tror det er lokale variable i funktionen. dim arrPageID, arrTitle, arrParentID
det prøver jeg lige... I mellemtiden kan jeg fortælle, at det faktisk virker, hvis jeg ikke har WriteMenus i en sub-routine. Er det ikke mærkeligt?
Nej :) For der kan den se variablene. Når du kommer ud af WriteMenus "ødelægges" variablene fordi de er lokale i funktionen
Sub WriteMenus dim arrPageID, arrTitle, arrParentID 'henter data Set rsPages = MyConn.Execute("Select PageID,Title,ParentPageID from Pages") etc. etc........ - giver desværre ikke nogen forskel. Stadig Type mismatch
skriver jeg dim'erne et forkert sted?
26. juli 2004 - 13:46
#10
Ja nu har du sikret de er lokale i funktionen. De skal stå uden for funktionerne <% dim arrPageID, arrTitle, arrParentID Sub WriteMenus .. end sub Sub xxxx .. end sub
26. juli 2004 - 13:53
#11
Det er så lækkert...! Da jeg så også fik "File" med i dim-rækken, så spillede det hele! :-) Tusind tak! Smider du et svar?
26. juli 2004 - 13:54
#12
Ok :)
Kurser inden for grundlæggende programmering