việc chèn DL vào theo thứ tự nào là do kiến trúc của SQL và việc bạn đặt Primary key ở columm nào. Cho dù thứ tụ bị đảo lộn bạn vẫn có thể select ra theo trật tự được.
Hiện h em đang làm modun tạo mã thẻ gồm serial và code.
Vấn đề tạo thì không có vấn đề gì nhưng mà khi tạo khoảng 50 thẻ cùng 1 lúc thì thứ tự bị đảo lộn. SQL không chèn các cột dữ liệu mới vào cuối bảng mà chèn rất lộn xộn ko đúng thứ tự. Em đã cho sleep 50 roài mà vẫn ko có tiến triển
Ví dụ như ảnh phía dưới
Có bác nào biết cách khắc phục không chỉ dùm em với
việc chèn DL vào theo thứ tự nào là do kiến trúc của SQL và việc bạn đặt Primary key ở columm nào. Cho dù thứ tụ bị đảo lộn bạn vẫn có thể select ra theo trật tự được.
Mà code bạn viết như thế nào ha?
khóa chính là cột "stt" nó có thuộc tính identity.Visual C# Code:
sqlcom.CommandText = "SELECT * FROM the"; sqlcom.CommandType = CommandType.Text; objds = library.execommand(sqlcom); objds.Tables[0].TableName = "the"; objtable = objds.Tables["the"]; { Thread.Sleep(50); sqlcom2.CommandText = "create_card"; sqlcom2.CommandType = CommandType.StoredProcedure; }
Mình cần sau khi tạo mã thẻ thì ghi ra 1 file excel để biết các thẻ mình đã tạo, câu lẹnh để select các thẻ vừa tạo là "SELECT * FROM the WHERE stt BETWEEN "+"'"+numberstart+"'" +" AND '"+numberend+"'" "
Ko cần quan tâm đến table hiển thị thế nào, lúc cần thì sắp xếp lại thôi. Stt là khóa thì ko cần set cho nó, nó có thể tự động tăng cũng được.
Men talk of killing time, while time quietly kills them.
Time is what we want most, but what we use worst.
------------------------------
YinYang's Programming Blog
Bạn không cần tạo parameter @stt trong stored procedure create_card, mà đổi nó thành biến và viểt trong stored procedure đó đại khái như sau:
SQL Code:
CREATE PROCEDURE create_card @serial nvarchar(12) AS BEGIN DECLARE @stt INT SELECT @stt = MAX(stt) + 1 FROM the -- code cũ END