Solved

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

Posted on 2007-04-04
8
196 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
  • 5
  • 3
8 Comments
 
LVL 23

Expert Comment

by:Jens Fiederer
Comment Utility
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
Comment Utility
Dim myTable As DataTable = myDs.Tables(0)
?
0
 

Author Comment

by:mathieu_cupryk
Comment Utility
Dim myDs As DataSet = New DataSet()
           
0
 

Author Comment

by:mathieu_cupryk
Comment Utility
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
What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

 
LVL 23

Expert Comment

by:Jens Fiederer
Comment Utility
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
Comment Utility
This will be my last message to you.

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

Author Comment

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

Author Comment

by:mathieu_cupryk
Comment Utility
Excellent Excellent Job!!!
0

Featured Post

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

Summary: Persistence is the capability of an application to store the state of objects and recover it when necessary. This article compares the two common types of serialization in aspects of data access, readability, and runtime cost. A ready-to…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

744 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

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now