Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 417
  • Last Modified:

populating an MSFlexgrid

Take a look at the following code, basically all I'm doing is getting a session variable from another page and converting it to a standard variable. Then creating an array to populate an MSFlexGrid.

When I try to run the code as the page loads I get an error message Object Required G was not handled, (G is the name of my MSFlexGrid)

However, if I place this code in a sub, the page loads first and then I execute the code and it works fine - presumably because my MSFlexGrid (G) exists on the page, where as it doesn't in the earlier scenario.

How can I populate this grid when the page loads and remove the need for a click event.

Looking forward to your help.

Matt.

<SCRIPT LANGUAGE=vbscript>
Dim retVar
Dim i
Dim j
Dim SessConv
Dim a
Dim pos
Dim z
Dim w
Dim max    ' max number of elements
Dim count
   
SessConv = "<%=session("ses_search")%>"

    ReDim a(<%=session("ses_FirstDimUBound")%>, <%=session("ses_SecondDimUBound")%>)
    max = (UBound(a, 1) - LBound(a, 1) + 1) * (UBound(a, 2) - LBound(a, 2) + 1)
    count = 0
           
    For I = LBound(a, 2) To UBound(a, 2)
        ' Process 2nd dimension element for each 1st dimension values
        For J = LBound(a, 1) To UBound(a, 1)
            count = count + 1
            If count > max Then
                Exit For
            Else
                pos = InStr(SessConv, "#")
                if pos = 0 then
         a(J, I) = ""
                else
         a(J, I) = Left(SessConv, pos - 1)
                end if                
                SessConv = Mid(SessConv, pos + 1)
            End If
        Next
       
        If count > max Then Exit For
    Next
      
       retVar = a 'at this point retvar contains all the required data in an array

g.Rows = UBound(retVar, 2) + 1 ' code fails here on the 1st ref to g
g.Cols  = UBound(retVar, 1) + 1
g.FixedCols=0
g.FixedRows=1

for z=0 to g.Cols - 1
      g.TextMatrix(0, z) = "Column #" & z
      g.ColAlignment(z) = flexAlignRightCenter
      g.ColWidth(z) = 2000      
next
'g.width = g.ColWidth(0) + g.ColWidth(1) + g.ColWidth(2) + g.ColWidth(3) + g.ColWidth(4) + g.ColWidth(5)


      for z = g.FixedRows to g.Rows - 1
            for w = g.FixedCols to g.Cols - 1
                  g.TextMatrix(z, w) = retVar(w, z)

            next
      next
</SCRIPT>
0
Matt_Unsworth
Asked:
Matt_Unsworth
  • 2
1 Solution
 
fz2hqsCommented:
"Then creating an array to populate an MSFlexGrid" - not in ths code snippet, there is no creating
0
 
Matt_UnsworthAuthor Commented:
Good point, the array is created in the previous page and passed to this page as a string.

The value retvar contains what I want but the problem still stands of populating g, any ideas how I can do this.

I think that g does not exist when I try to populate it in the code above, how can I get around this.

Matt.
0
 
fz2hqsCommented:
If the object is created in the last page, then it is also destroyed at the end of execution of the last page. You need quite simply to create G within this page you can pass values in string form but you will have to create it here

PS - You may want to avoid naming variables like you do, it is far easier for everybody (yourself included) if you try naming things like intLoopCount, grdMyFlexiGrid  - a's b's and z's are meaningless and make reading code difficult
0

Featured Post

New feature and membership benefit!

New feature! Upgrade and increase expert visibility of your issues with Priority Questions.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now