Solved

Urgent!!! Urgent! Only one row is being added to table.

Posted on 2007-04-04
8
240 Views
Last Modified: 2010-04-16
When I trace the below code. I see that there are at least there rows for a MaxPeriod of

3. But the table just keeps adding the a new row to the same place.

For Index As Integer = 0 To MaxPeriod - 1

' Get date period

StoredProcName = dbName & ".dbo.usp_GetDatePeriodFromTo"

cmd = dbManager.GetStoredProcCommand(StoredProcName)

dbManager.AddInParameter(cmd, "@YEARMONTH", DbType.String, DtPeriod)



DtPeriod = IncrementDate(DtPeriod, DateIndex)

' Put the yearmonth, start date ,and end date in a dataset

Dim myDs As DataSet = dbManager.ExecuteDataSet(cmd)

' check myTable first

Dim myRow As DataRow


Dim myTable As DataTable = myDs.Tables(0)

If myTable.Rows.Count >= Index Then

myRow = myTable.Rows(Index)

End If

Dim row As DataRow = myTable.NewRow()

row.ItemArray = myRow.ItemArray



Next

Return retVal



0
Comment
Question by:mathieu_cupryk
[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
  • 5
  • 3
8 Comments
 
LVL 23

Expert Comment

by:Jens Fiederer
ID: 18849906
Like I said in our other thread,

You keep recreating the table every time through the loop.

If you want to ADD to the table, create a table OUTSIDE the loop and add rows INSIDE.
0
 

Author Comment

by:mathieu_cupryk
ID: 18850001
Dim myTable As DataTable = myDs.Tables(0)
?
0
 

Author Comment

by:mathieu_cupryk
ID: 18850012
Dim myDs As DataSet = New DataSet()
           
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!

 

Author Comment

by:mathieu_cupryk
ID: 18850018
How about this?

 Public Function GetBusinessCalendarPeriod(ByVal dbName As String, ByVal DatePeriod As String, ByVal txtMaxPeriod As String) As DataTable

            Dim retVal As New DataTable("BusinessCalendars")
            Dim DtPeriod As String = DatePeriod
            Dim MaxPeriod As Integer = Int32.Parse(txtMaxPeriod)
            Dim cmd As DbCommand
            Dim tmpds As DataSet = New DataSet()
            Dim StoredProcName As String = String.Empty
            Dim DateIndex As Integer = 1

            Dim myDs As DataSet = New DataSet()
           
            'We get the divisions
            For Index As Integer = 0 To MaxPeriod - 1
                ' Get date period

                StoredProcName = dbName & ".dbo.usp_GetDatePeriodFromTo"
                cmd = dbManager.GetStoredProcCommand(StoredProcName)
                dbManager.AddInParameter(cmd, "@YEARMONTH", DbType.String, DtPeriod)


                DtPeriod = IncrementDate(DtPeriod, DateIndex)
                ' Put the yearmonth, start date ,and end date in a dataset
                myDs = dbManager.ExecuteDataSet(cmd)

               ' check myTable first
                Dim myRow As DataRow
               
                Dim myTable As DataTable = myDs.Tables(0)

                If myTable.Rows.Count >= Index Then
                    myRow = myTable.Rows(Index)
                End If

                Dim row As DataRow = myTable.NewRow()

                row.ItemArray = myRow.ItemArray


            Next
            Return retVal

        End Function
0
 
LVL 23

Expert Comment

by:Jens Fiederer
ID: 18850408
I was expecting something more like:

    Public Function GetBusinessCalendarPeriod(ByVal dbName As String, ByVal DatePeriod As String, ByVal txtMaxPeriod As String) As DataTable
        Dim retVal As New DataTable("BusinessCalendars")
        retVal.Columns.Add("yearmonth")
        retVal.Columns.Add("startdate")
        retVal.Columns.Add("enddate")
        Dim DtPeriod As String = DatePeriod
        Dim MaxPeriod As Integer = Int32.Parse(txtMaxPeriod)
        Dim StoredProcName As String = dbName & ".dbo.usp_GetDatePeriodFromTo"

        'We get the divisions

        For Index As Integer = 0 To MaxPeriod - 1
            ' Get date period
            DtPeriod = IncrementDate(DtPeriod, Index + 1)
            'Dim cmd As DbCommand = dbManager.GetStoredProcCommand(StoredProcName)
             dbManager.AddInParameter(cmd, "@YEARMONTH", DbType.String, DtPeriod)

            Dim row As DataRow = retVal.NewRow()        ' Create new row as the index in the for increases

            'Put the yearmonth, start date ,and end date in a dataset
            Dim tmpds As Dataset = dbManager.ExecuteDataSet(cmd)        ' This will put it in a dataset
            row.ItemArray = tmpds.Tables(0).Rows(0).ItemArray
            retVal.Rows.Add(row)
        Next

        Return retVal
    End Function
0
 
LVL 23

Accepted Solution

by:
Jens Fiederer earned 500 total points
ID: 18850430
This will be my last message to you.

A "C" is like a slap in the face.
0
 

Author Comment

by:mathieu_cupryk
ID: 18850447
why did u put    'Dim cmd As DbCommand = dbManager.GetStoredProcCommand(StoredProcName)
        in comments?
0
 

Author Comment

by:mathieu_cupryk
ID: 18851024
Excellent Excellent Job!!!
0

Featured Post

Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

Question has a verified solution.

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

Introduction This article series is supposed to shed some light on the use of IDisposable and objects that inherit from it. In essence, a more apt title for this article would be: using (IDisposable) {}. I’m just not sure how many people would ge…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Monitoring a network: why having a policy is the best policy? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the enormous benefits of having a policy-based approach when monitoring medium and large networks. Software utilized in this v…
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 …

695 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