Vấn đề duyệt tất cả các dòng trên cơ sở dữ liệu trong C#
Mình đang bị vướng vấn đề này hơn 1 tuần nay không biết hỏi ai.
Mình nói sơ về cái mình đang viết và vấn đề mình gặp phải.
Mình có 1 form Setting để thêm xóa sửa thiết lập gì đó. 1 form Main sẽ lấy những thiết lập này. Xem những camera nào, những đầu đọc thẻ từ (giống trong siêu thị) nào được đánh dấu là cổng ra. Thì nó chỉ có 1 nhiệm vụ duy nhất là thực hiện hàm startThread2() của mình, trong hàm đó đại khái là update lại dữ liệu rồi check lại thông tin, nếu đúng thì ok cho qua.
Ngược lại, nếu là cổng vào thì nó thực hiện 1 hàm khác.
Form đó dạng ntn:
Mình viết 2 hàm xử lý gọi là startThread, startThread2.
Mình muốn nó check điều kiện trong database của mình rồi mới thực hiện lệnh đó.
Đây là trong Form Main.
Code đại khái như thế này:
SettingBus settingBus = new SettingBus(); //Chứa class để truy vấn tới hàm GetByAll lấy tất cả trong lớp DAO
DataTable dt = settingBus.Setting_GetByAll(); //select * from table Setting
foreach (DataRow row in dt.Rows)
{
SettingDTO setting= new SettingDTO(row);
if(setting.ChonCong== "Cổng Vào")
{
startThread();
}
if(setting.ChonCong== "Cổng Ra")
{
startThread2;
}
}
Thứ 1:
Nếu chỉ có 2 dòng dữ liệu nó chạy ok, còn nếu có 4 dòng dữ liệu thì nó chỉ lấy thằng đầu tiên và thằng cuối cùng thôi.
Thứ 2:
Nếu mà như vậy, thì nó đọc 1 dòng rồi nó check điều kiện, thực thi cái hàm startThread đó.
Nếu có n dòng nó cũng check n điều kiện rồi thực thi n cái startThead đó.
Mà trong cái startThread đó mình viết khá dài, đại khái là mình mong muốn là lúc mình check cái đó, chẳng hạn nếu dòng nào là “Cổng Vào” nó sẽ gom tất cả dòng dữ liệu có chứa cái ChonCong = Cổng Vào đó, rồi thực thi 1 lần duy nhất cái startThread luôn.
Mình hỏi hơi dài, mong các bạn giúp đỡ.
Không biết trong 2 hàm
startThread();
vàstartThread2()
; bạn có thay đổi giá trị của củadt
không ???2 hàm đó mình không thay đổi giá trị nào hết bạn à.
Nếu đúng điều kiện thì mình chỉ check 1 vài thứ nữa rồi insert(startThread2) hoặc update(startThread) dữ liệu thôi.
Up, các bạn xem giúp mình với.
Mình ngĩ là khi bạn
Update giá trị trên girdview
thì giá trị củaDataTable dt
cũng sẽ thay đổi theo. Nói thật, chỉ có thể biết được vậy thôi, bạn thử debug xem saoCảm ơn bạn rất nhiều. Vấn đề này mình vẫn chưa giải quyết được triệt để nên đang xem cách khác.
Cái ChonCong chỉ có 2 kiểu là cổng vào, cổng ra sao bạn không để kiểu dữ liệu nó là bit thử đi
Theo ý kiến mình, khả năng là startThread() chưa thực hiện xong nhiệm vụ nên đến các dòng tiếp theo nó vẫn chưa sẵn sang chạy hàm này. Tại thread đang xử lý nhiệm vụ dang dở.