VB .NET DataGridView SQL订单列表

时间:2013-04-16 14:45:10

标签: .net sql vb.net

我只是想知道是否有人愿意给我一些建议。

我有一个DataGridView,它包含从我的SQL数据库中提取的数据。我想知道如何重新排序DataGridView中的行。

目前我正在使用排名系统。我的数据库中有一个名为ListOrder的字段,表示它在我的DGV中显示的顺序的排名,我使用ORDER BY ListOrder以正确的顺序显示它。

每次向数据库添加新记录时,我都会使用计数查询,然后使用+ 1来记录新记录。因此,例如,如果我的表中有10条记录,则计数为10,然后加上+ 1,因此对于新记录,它将等于11。这样做的问题是,如果我删除了表中的记录,则排名变得不正确。另一个例子是我删除了第一个在我的表中留下9的记录,但因为我使用count,它会在表中计数9然后加上+ 1,这给它一个值10,这意味着我可以有2包含我的ListOrder为10的数据库中的记录。(希望有意义)我理解我也可以使用MAX查询,但这仍然给我一个类似的问题。

当我删除记录时,我需要它来重新计算所有记录并将它们保留在同一顺序中。

以下是我用来在表格中上下移动记录的代码:

v_SelectRow = dgvLine1.CurrentRow.Index
dbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\planner.mdb;")
dbConnection.Open()

strSQL = "UPDATE [Line1Orders] SET [ListOrder] = ListOrder-1  WHERE ([DateTime] = '" & dgvLine1.Item(8, v_SelectRow).Value & "')"

dbCommand = New OleDbCommand(strSQL, dbConnection)
dbCount = dbCommand.ExecuteNonQuery
dbConnection.Close()

由于计数查询,我遇到的另一个问题是,当我从表中删除示例4,5,6的记录时,ListOrder值为7的下一条记录需要向上移动3次才能它将超过它之前的记录。

我希望这是有道理的。我真的很感激,如果有人愿意指出我正确的方向,我将如何改进当前系统的功能,查询和任何逻辑思路。我将不胜感激。

谢谢你们!

2 个答案:

答案 0 :(得分:1)

出于好奇 - 为什么数字需要保持一致?你不能保持计数器递增,然后当你向用户显示一个计数器时,你会显示你当时创建的计数器。

您有记录1,2,3,6,9,10,15 您插入的下一条记录将是16。 向用户显示记录时,显示1,2,3,4,5,6,7,8

您真的需要向客户显示实际排名吗?这个数字对他们来说很重要。

答案 1 :(得分:1)

将自动增量主键添加到数据表中。将order by子句添加到SQL中,以便按刚刚添加的主键进行排序。