Vb.net 将datatable中的标识列设置回0(包含在未链接到datatable的DS中)

Vb.net 将datatable中的标识列设置回0(包含在未链接到datatable的DS中),vb.net,datagridview,datatable,Vb.net,Datagridview,Datatable,我正在使用VB.Net和VS 2012。我有一个数据集,它有几个数据表。其中一个数据表的标识列递增1,并以种子0开头。用户流如下所示: 用户打开表单 表单显示datatable1,包括标识列 用户隐藏表单,清除并释放datatable2 用户重新打开表单,重新填充datatable,但标识列现在从它之前停止的位置开始 我需要确保每次清除表时,标识列都会从0重新启动。我该怎么做 编辑:下面是关于datatable/dataset的一些背景知识。数据集有一个包含4列的datatable。一个是种子为

我正在使用VB.Net和VS 2012。我有一个数据集,它有几个数据表。其中一个数据表的标识列递增1,并以种子0开头。用户流如下所示:

  • 用户打开表单
  • 表单显示datatable1,包括标识列
  • 用户隐藏表单,清除并释放datatable2
  • 用户重新打开表单,重新填充datatable,但标识列现在从它之前停止的位置开始
  • 我需要确保每次清除表时,标识列都会从0重新启动。我该怎么做

    编辑:下面是关于datatable/dataset的一些背景知识。数据集有一个包含4列的datatable。一个是种子为0并递增1的列。称为identitycol。数据集未连接到数据库,以下是其填充方式:

        dsVW_BCL_DATA = GlobalVariables.acctInit.BCL_Data(GlobalVariables.intJudgeID, GlobalVariables.AppearanceDate) 'Pull data to a generic created dataset
        ChgltrDataSet.gridsource.Clear() 'clear table in project dataset (chgltrdataset)
        ChgltrDataSet.gridsource_backup.Clear() 'clear backup table in project dataset
        'MUST RESET IDENTITYCOL TO 0 'This is where I feel I should reset the identitycol
        ChgltrDataSet.gridsource.Merge(dsVW_BCL_DATA.Tables(0)) 'Merge existing table gridsource with generic created dataset
        frmFinBatchChrg2.gridFinancial.DataSource = Me.ChgltrDataSet.gridsource 'Set datasource
    
    DBCC CHECKIDENT(“”,重新设定种子,0)


    我知道我回答这个问题太晚了,但我刚刚解决了我的项目中的相同问题,所以有人可能会发现它很有用

    这个问题与数据集中的身份机制实现有关。为了正确重置datatable中的标识列,必须按特定顺序执行。以下代码解决了我的问题:

        myDataSet.Clear()
        myDataSet.myDataTable.Columns("ID").AutoIncrementStep = -1
        myDataSet.myDataTable.Columns("ID").AutoIncrementSeed = -1
        myDataSet.myDataTable.Columns("ID").AutoIncrementStep = 1
        myDataSet.myDataTable.Columns("ID").AutoIncrementSeed = 1 
    
        'Note: "ID" is the column name in the DataTable
    
    正如您所见,命令的顺序非常重要。首先,我们将列的AutoIncrementStep属性设置为-1,然后将AutoIncrementSeed属性设置为-1。之后,我们将它们放回我们想要的位置,但顺序相同


    希望这有帮助

    目前无法访问VS尝试此功能,因此不作为答案发布-如果在重新填充之前使用DataTable.Reset()会怎么样-这样做有效吗?@CHill60 nope:/。当我在重新填充之前这样做时,它告诉我该列不存在。某些数据显示在datagridview中,但仅当我对列重新排序时才会显示。不幸的是,我认为这不能解决这个问题。您是如何使用
    数据集
    数据表
    ,您可以与我们共享吗?@spajce是的,代码在上面您可以修改
    数据表
    数据行
    以启动0。这是t-sql吗?datatable后面没有实际的sql数据库,因此我需要从数据集上的datatable中重置它。我最终摆脱了identity列,并使用了其他方法来解决这个问题,但我会将您的答案标记为正确,只要您可以在vb语言中使用它,并且不需要sql连接