DataTableColumn.AutoIncrementSeed value
-
Hello Ladies and Gentleman, I have a problem with the DataTableColumn.AutoIncrementSeed value. I am loading a set of Tables from my SQL Server DB to a DataSet by using SqlDataAdapter Fill method (I am using the MissingSchemaAction.AddWithKey property). So I have a master detail scenario in my DataSet with 3 different tables, PrimaryKeys (all with autoincrement = true) and ForeignKeys. The Problem is, when I insert new rows into the DataTables I want them to have ID's starting from -1 with an AutoIncrementStep = -1. The AutoIncrementStep is working fine. Nevertheless I can not change the AutoIncrementSeed :confused: Even if I set its value to -1 (I checked in the debugger, the value is -1), after adding a new row, the seed starts at the last ID's value read from the DataBase while filling the DataTables. Am I missing something, or is this just impossible to change? I would be really grateful for help. Greets, Arek
-
Hello Ladies and Gentleman, I have a problem with the DataTableColumn.AutoIncrementSeed value. I am loading a set of Tables from my SQL Server DB to a DataSet by using SqlDataAdapter Fill method (I am using the MissingSchemaAction.AddWithKey property). So I have a master detail scenario in my DataSet with 3 different tables, PrimaryKeys (all with autoincrement = true) and ForeignKeys. The Problem is, when I insert new rows into the DataTables I want them to have ID's starting from -1 with an AutoIncrementStep = -1. The AutoIncrementStep is working fine. Nevertheless I can not change the AutoIncrementSeed :confused: Even if I set its value to -1 (I checked in the debugger, the value is -1), after adding a new row, the seed starts at the last ID's value read from the DataBase while filling the DataTables. Am I missing something, or is this just impossible to change? I would be really grateful for help. Greets, Arek
Hi, To add auto increment column in the DataTable, we can set the AutoIncrement property of the DataColumn object as true and specify the seed value after adding that field into the DataTable object. // create columns for the DataTable DataTable dTable = new DataTable(); DataColumn auto = new DataColumn("AutoID", typeof(System.Int32)); dTable.Columns.Add(auto); // specify it as auto increment field auto.AutoIncrement = true; auto.AutoIncrementSeed = 1; auto.ReadOnly = true;
-
Hi, To add auto increment column in the DataTable, we can set the AutoIncrement property of the DataColumn object as true and specify the seed value after adding that field into the DataTable object. // create columns for the DataTable DataTable dTable = new DataTable(); DataColumn auto = new DataColumn("AutoID", typeof(System.Int32)); dTable.Columns.Add(auto); // specify it as auto increment field auto.AutoIncrement = true; auto.AutoIncrementSeed = 1; auto.ReadOnly = true;
Hi S.Dhanasekaran thank you for your reply, I really appreciate. Why do I have to create a DataColumn by myself? When I use SQLDataAdapter Fill() method, it does the same for me. After using the Fill method of the SQLDataAdapter I do sth like this: dataS = new DataSet(); ... dataS.Tables.Add(dataTable); dataS.Tables["MyTable"].Columns["MyID"].AutoIncrement = true; dataS.Tables["MyTable"].Columns["MyID"].AutoIncrementStep = -1; dataS.Tables["MyTable"].Columns["MyID"].AutoIncrementSeed = 0; dataS.Tables["MyTable"].Columns["MyID"].AutoIncrement = true; dataS.Tables["MyTable"].Columns["MyID"].ReadOnly = true; When i check the debugger, the AutoIncrementSeed is "-1" and the AutoIncrementStep is also "-1". But for example, when I have now 4 rows with MyIDs = {1, 2, 3, 4} and I add manually a new row to the DataSet, the value of MyID should be -1, but it is 3. And I have completely no clue why is that :confused:
-
Hello Ladies and Gentleman, I have a problem with the DataTableColumn.AutoIncrementSeed value. I am loading a set of Tables from my SQL Server DB to a DataSet by using SqlDataAdapter Fill method (I am using the MissingSchemaAction.AddWithKey property). So I have a master detail scenario in my DataSet with 3 different tables, PrimaryKeys (all with autoincrement = true) and ForeignKeys. The Problem is, when I insert new rows into the DataTables I want them to have ID's starting from -1 with an AutoIncrementStep = -1. The AutoIncrementStep is working fine. Nevertheless I can not change the AutoIncrementSeed :confused: Even if I set its value to -1 (I checked in the debugger, the value is -1), after adding a new row, the seed starts at the last ID's value read from the DataBase while filling the DataTables. Am I missing something, or is this just impossible to change? I would be really grateful for help. Greets, Arek
You cannot use negative numbers as the autoincrement value. Negative numbers are used by the DataAdpaters to add new records to the dataset that haven't been added to the backing database yet. The first new record you add will have an ID of -1, the next new record will be -2, and so on. Those are the temporary values used to uniquely identify each new record. They will get actual IDs once the changes are written to the database.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
2006, 2007, 2008
But no longer in 2009... -
You cannot use negative numbers as the autoincrement value. Negative numbers are used by the DataAdpaters to add new records to the dataset that haven't been added to the backing database yet. The first new record you add will have an ID of -1, the next new record will be -2, and so on. Those are the temporary values used to uniquely identify each new record. They will get actual IDs once the changes are written to the database.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
2006, 2007, 2008
But no longer in 2009...Hi Dave, thanks for you reply. Exactly that is what I want to achieve. I don't know the real ID values of the rows before I don't insert them to the Database. So in my case new DataTable rows are temporary and I want them to have negative ID (PrimaryKey) numbers. After I make an insert to the Database, they will receive the identity values from Database tables. The step is negative and if I add enough rows it also gets negative, but it always starts from the last rows ID value, though I set the increment seed value to "0".