将变量插入datatable vb.net的相应列中

将变量插入datatable vb.net的相应列中,vb.net,datatable,Vb.net,Datatable,我正在解析固定长度文本文件的每一行。我正在从这个文本文件中检索13个值,并将它们插入到多个数据类型的变量中。最终,我需要将这些值添加到datatable中的一行,但问题是我不知道如何做到这一点。我尝试在列中循环,并尝试在正确的列中插入正确的变量如何将下面的每个变量添加到数据表中的相应列中,所有变量都在同一行中? 以下是我的变量: Dim vendorName As String 'a Dim vendorNum As Integer 'b Dim CheckNum As String 'c -

我正在解析固定长度文本文件的每一行。我正在从这个文本文件中检索13个值,并将它们插入到多个数据类型的变量中。最终,我需要将这些值添加到datatable中的一行,但问题是我不知道如何做到这一点。我尝试在列中循环,并尝试在正确的列中插入正确的变量
如何将下面的每个变量添加到数据表中的相应列中,所有变量都在同一行中?

以下是我的变量:

Dim vendorName As String 'a
Dim vendorNum As Integer 'b
Dim CheckNum As String 'c - with checkNum and batch no combined
Dim depositDate As String 'd
Const crAccount As Integer = 102006 'e
Dim totCount As Integer ' f
Const blank As String = "" 'g
Const num As Integer = 1 'h
Dim qtr As Integer 'i
Dim custName As String 'j
Dim acctNum As Integer 'k
Dim headerAmount(headerCounter) As Double ' '// Not in the list
Dim detailAmount As Double 'l

Dim state As String 'm
Dim batchNo As String 'n -set this to string to retrieve the 00 or 01 or however many batches there is.
Dim checkNo As String 'o
以下是我的专栏:

    dt.Columns.Add("Vendor #")
    dt.Columns.Add("Vendor Name")
    dt.Columns.Add("Check #")
    dt.Columns.Add("Date")
    dt.Columns.Add("102006")
    dt.Columns.Add("#")
    dt.Columns.Add("Blank")
    dt.Columns.Add("1")
    dt.Columns.Add("12QTR")
    dt.Columns.Add("Client Name")
    dt.Columns.Add("Acct No")
    dt.Columns.Add("Amt")
    dt.Columns.Add("State")
    dt.Columns.Add("Batch No")
    dt.Columns.Add("Check Number")
这是我尝试过的循环,但它将每个变量添加到自己的行中:

 For Each col As DataColumn In dt.Columns
                If col.ColumnName = "Vendor #" Then
                    dt.Rows.Add(vendorNum)
                ElseIf col.ColumnName = "Vendor Name" Then
                    dt.Rows.Add(vendorName)
                ElseIf col.ColumnName = "Check #" Then
                    dt.Rows.Add(checkNo)
                ElseIf col.ColumnName = "Date" Then
                    dt.Rows.Add(depositDate)
                ElseIf col.ColumnName = "102006" Then
                    dt.Rows.Add(crAccount)
                ElseIf col.ColumnName = "#" Then
                    dt.Rows.Add(totCount)
                ElseIf col.ColumnName = "Blank" Then
                    dt.Rows.Add(blank)
                ElseIf col.ColumnName = "1" Then
                    dt.Rows.Add(num)
                ElseIf col.ColumnName = "12QTR" Then
                    dt.Rows.Add(qtr)
                ElseIf col.ColumnName = "Client Name" Then
                    dt.Rows.Add(custName)
                ElseIf col.ColumnName = "Acct No" Then
                    dt.Rows.Add(acctNum)
                ElseIf col.ColumnName = "Amt" Then
                    dt.Rows.Add(detailAmount)
                ElseIf col.ColumnName = "State" Then
                    dt.Rows.Add(state)
                ElseIf col.ColumnName = "Batch No" Then
                    dt.Rows.Add(batchNo)
                ElseIf col.ColumnName = "Check Number" Then
                    dt.Rows.Add(CheckNum)
                End If
                'dt.Rows.Add(vendorNum & vendorName & checkNo & depositDate & 
                'crAccount & totCount & blank & num & qtr & custName & acctNum 
                '& detailAmount & state & batchNo & CheckNum)
                '// I also tried concatenating each of the parameters together
                ' and when I do this it is only trying to insert in the Vendor # column.
            Next

这似乎不太难,但我找不到任何这样的例子。任何帮助都将不胜感激。谢谢

因为您希望它们都在一行中,所以只需调用
.Add()
-方法一次。
.Add()
-方法接受数组作为输入。数组中的元素的顺序必须与对应的ColumnHeader的顺序相同

附言: 我以前从未听说过DataTable。我主要使用
DataSet
bindingslist(of T)
并将它们绑定到
DataGridView
(如果需要的话)


您可以创建一个属性为
vendorName、vendorNum、
的类,并将该类的实例添加到绑定列表中。然后设置DataGridView的
dataSource
属性就是剩下的全部工作。

这允许我在特定列上插入该值。只是需要一个数据行

因此,如果在vb.net中使用列名称的静态列表创建datatable,则可以将datarow创建为新的[insert datatable name here]。行,将要添加值的列关联起来,并将其设置为所需的变量

下面是我问题中示例的代码:

Dim dr As DataRow = dt.NewRow()
dr("Vendor #") = vendorNum
dr("Vendor Name") = vendorName
dr("Check #") = CheckNum
dr("Date") = depositDate
dr("102006") = crAccount
dr("#") = totCount
dr("Blank") = blank
dr("1") = num
dr("12QTR") = qtr
dr("Client Name") = custName
dr("Acct No") = acctNum
dr("Amt") = detailAmount
dr("State") = state
dr("Batch No") = batchNo
dr("Check Number") = checkNo
dt.Rows.Add(dr)

因此,它类似于我在代码底部注释掉的行,
dt.Rows.Add(vendorNum&vendorName&checkNo&depositDate&crAccount&totCount&blank&num&qtr&custName&acctNum&detailAmount&state&batchNo&CheckNum)
但我只需要先将这些元素添加到数组中?是的。但是您必须使用对象数组,因为您有不同类型的变量。我建议改为使用类型化数据集,并将其绑定到DataGridView(如果需要GUI)如果我创建类型化数据集,我将如何向其中插入15个变量?我处理数据集的唯一方法是创建xsd,并将datatables添加到dataset.By。但是如果你只有一排,那么这肯定是过火了。您也可以将变量包装在类中,并将该类的实例推送到BindingList(of T)中。谢谢您的响应。在查看大量数据时,我会记住这一点。这似乎比我熟悉的datatable方法更有效,但正如您所说的,这太过分了。