Solved

vb.net 2005 Visual Studio Array help

Posted on 2006-10-29
7
707 Views
Last Modified: 2008-01-09
Good Day

I am having difficulty with my array declaration in my application.  One form has my DataGridView on it.  It has
a button to generate a report.  The form that is loaded from the button click has the Crystal Viewer on it.  So to start,
in the generate button I can load the data from my DataGridView into the arrays using this code:

        Records = DataGridView.RowCount
        Dim ParmArray(Records - 1) As String
        Dim ParmValue(Records - 1) As String

        Dim i As Integer
        For i = 0 To Records - 1
            ParmArray(i) = DataGridView.Rows(i).Cells(1).Value.ToString
            ParmValue(i) = DataGridView.Rows(i).Cells(2).Value.ToString
        Next

In order to share the the Arrays with the second form with the Crystal Viewer so I can build the parameter
list to pass to the report, I put the Array declarations in the Globals module.  When I do that,
the Arrays do not get assigned the RecordCount - 1 value to dimension the array.  
It seems like a pretty straight-forward idea...share arrays between forms.  Is it not possible to do it this way?

Thanks,
Ed
0
Comment
Question by:lbsi
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
7 Comments
 
LVL 48

Expert Comment

by:AlexFM
ID: 17832083
Dim ParmArray() As String         ' class member

In the function:

Redim ParmArray(Records - 1)
0
 
LVL 12

Expert Comment

by:Praveen Kumar
ID: 17832093
Did you use Public when you declared this Array's(in a module)?

Ex:
Public ParamArray() As String

In your DataGrid form, you have to mention the size of array as below

if VS 2005
Array.Resize(ParamAyyay,Records)

If VS 2003
Redim ParamArray(Records)



0
 

Author Comment

by:lbsi
ID: 17832110
Will this allow me to "see" the values I assigned to the Array in the first form from the code in the second form?
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 12

Expert Comment

by:Praveen Kumar
ID: 17832115
yes, but declare that arrays in a module with Public keyword
0
 

Author Comment

by:lbsi
ID: 17833556
Good Morning

Here is what I have:
     1) Public declared Arrays in a module along with the variable to assign the recordcount of the DataGridView to.
     2) Class EnterParms contains the form with the DataGridView and the GenerateReport button where I am putting the
         DataGridView values into the Arrays.  Also, shows the ShowReport form.
     3) I use the ShowReport Load event to get the Array values to process for the parameters which get passed to the
         CrystalReprotViewer.  

***When I step into the code for the EnterParms class, the Arrays are not getting dimensioned when I assign the Record
      variable with the recordcount of the DataGridView.  Is there a better way to do this or am I missing something maybe?

Thanks,
Ed

Public Module Globals
 
    'Declare Arrays and variable to hold record count from DataGridView
    Public Records As Integer
    Public ParmArray(Records - 1) As String
    Public ParmValue(Records - 1) As String

End Module

Public Class EnterParms

        Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGenerateReport.Click

        Records = DataGridView.RowCount
         
        'Get DataGridView values and load into Arrays      
        Dim i As Integer
        For i = 0 To Records - 1
            ParmArray(i) = DataGridView.Rows(i).Cells(1).Value.ToString
            ParmValue(i) = DataGridView.Rows(i).Cells(2).Value.ToString
        Next

        Dim ShowReport As New LBSI_ShowReport
        LBSI_ShowReport.Show()

    End Sub

End Class

Public Class ShowReport

     Private Sub LBSI_ShowReport_Load

            Dim Par As CrystalDecisions.Shared.ParameterValues
            Dim ParD As New CrystalDecisions.Shared.ParameterDiscreteValue()
            Dim i As Integer
            For i = 0 To Records - 1
                ParmName = ParmArray(i)
                ParmVal = ParmValue(i)
                Par = RD.DataDefinition.ParameterFields.Item(ParmName).CurrentValues
                ParD.Value = "" & CStr(ParmVal) & ""
                Par.Add(ParD)
                RD.DataDefinition.ParameterFields.Item(ParmName).ApplyCurrentValues(Par)
            Next

     End Sub
End Class

0
 
LVL 12

Accepted Solution

by:
Praveen Kumar earned 500 total points
ID: 17833610
assuming that you are doing in 2005....

Public Module Globals
 
    'Declare Arrays and variable to hold record count from DataGridView
     Public ParmArray() As String
    Public ParmValue() As String

End Module


Public Class EnterParms

        Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGenerateReport.Click

        Records = DataGridView.RowCount

        ' Here i added
        Array.Resize(ParamArray,Records)
        Array.Resize(ParamArray,Records)

        'Get DataGridView values and load into Arrays      
        Dim i As Integer
        For i = 0 To Records - 1
            ParmArray(i) = DataGridView.Rows(i).Cells(1).Value.ToString
            ParmValue(i) = DataGridView.Rows(i).Cells(2).Value.ToString
        Next

        Dim ShowReport As New LBSI_ShowReport
        LBSI_ShowReport.Show()

    End Sub

End Class


Public Class ShowReport

     Private Sub LBSI_ShowReport_Load

            Dim Par As CrystalDecisions.Shared.ParameterValues
            Dim ParD As New CrystalDecisions.Shared.ParameterDiscreteValue()
            Dim i As Integer

            ' Here no need Records variable, sujest use Length of Array
            For i = 0 To ParamArray.Length - 1
                ParmName = ParmArray(i)
                ParmVal = ParmValue(i)
                Par = RD.DataDefinition.ParameterFields.Item(ParmName).CurrentValues
                ParD.Value = "" & CStr(ParmVal) & ""
                Par.Add(ParD)
                RD.DataDefinition.ParameterFields.Item(ParmName).ApplyCurrentValues(Par)
            Next

     End Sub

End Class

0
 

Author Comment

by:lbsi
ID: 17861430
Thanks...all is well now. :)

Have a Good Day,
Ed
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This tutorial demonstrates one way to create an application that runs without any Forms but still has a GUI presence via an Icon in the System Tray. The magic lies in Inheriting from the ApplicationContext Class and passing that to Application.Ru…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Monitoring a network: how to monitor network services and why? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the philosophy behind service monitoring and why a handshake validation is critical in network monitoring. Software utilized …
This is my first video review of Microsoft Bookings, I will be doing a part two with a bit more information, but wanted to get this out to you folks.

717 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question