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
Solved

vb.net 2005 Visual Studio Array help

Posted on 2006-10-29
7
703 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
Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

 
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

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

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 …
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…

839 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