2013-04-16 71 views
0

我只是想知道如果有人願意給我一些建議。VB .NET DataGridView SQL訂單列表

我有一個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次,然後纔會越過它之前的記錄。

我希望這是有道理的。我真的很感激,如果有人願意指出我正確的方向,以什麼功能,查詢和任何邏輯的想法,我怎樣才能改善這個當前的系統。我將不勝感激。

謝謝你們!

+0

啊! Sql注入警報!不要使用字符串連接來將值替換爲像這樣的查詢。 _Ever._ –

回答

1

將自動增量主鍵添加到您的數據表中。通過您剛剛添加的主鍵爲您的SQL添加一個order by子句。

1

只是出於好奇 - 爲什麼數字需要一致?難道你不能讓計數器遞增,然後當你向用戶顯示一個你當時創建的計數器時。

您有記錄1,2,3,6,9,10,15 下一頁記錄插入會16. 當顯示記錄給用戶,顯示器1,2,3,4,5, 6,7,8

您是否真的需要向客戶展示實際的等級?這個數字對他們很重要嗎?