?
Solved

vb.net 2005 Visual Studio Array help

Posted on 2006-10-29
7
Medium Priority
?
713 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
  • 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
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
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 2000 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

New feature and membership benefit!

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

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’s quite interesting for me as I worked with Excel using vb.net for some time. Here are some topics which I know want to share with others whom this might help. First of all if you are working with Excel then you need to Download the Following …
Integration Management Part 2
Please read the paragraph below before following the instructions in the video — there are important caveats in the paragraph that I did not mention in the video. If your PaperPort 12 or PaperPort 14 is failing to start, or crashing, or hanging, …
Suggested Courses

862 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