Solved

vb.net 2005 Visual Studio Array help

Posted on 2006-10-29
7
701 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:Mamtha1982
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
VMware Disaster Recovery and Data Protection

In this expert guide, you’ll learn about the components of a Modern Data Center. You will use cases for the value-added capabilities of Veeam®, including combining backup and replication for VMware disaster recovery and using replication for data center migration.

 
LVL 12

Expert Comment

by:Mamtha1982
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:
Mamtha1982 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

VMware Disaster Recovery and Data Protection

In this expert guide, you’ll learn about the components of a Modern Data Center. You will use cases for the value-added capabilities of Veeam®, including combining backup and replication for VMware disaster recovery and using replication for data center migration.

Question has a verified solution.

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

Article by: Kraeven
Introduction Remote Share is a simple remote sharing tool, enabling you to see, add and remove remote or local shares. The application is written in VB.NET targeting the .NET framework 2.0. The source code and the compiled programs have been in…
Microsoft Reports are based on a report definition, which is an XML file that describes data and layout for the report, with a different extension. You can create a client-side report definition language (*.rdlc) file with Visual Studio, and build g…
This Micro Tutorial will teach you how to censor certain areas of your screen. The example in this video will show a little boy's face being blurred. This will be demonstrated using Adobe Premiere Pro CS6.
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

831 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