30/09/2018, 17:49

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 đỡ.

Phạm Hoàng Tuấn viết 20:04 ngày 30/09/2018

Không biết trong 2 hàm startThread();startThread2(); bạn có thay đổi giá trị của của dt không ???

r0ysy0301 viết 20:05 ngày 30/09/2018

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.

r0ysy0301 viết 20:01 ngày 30/09/2018

Up, các bạn xem giúp mình với.

Phạm Hoàng Tuấn viết 19:57 ngày 30/09/2018

Mình ngĩ là khi bạn Update giá trị trên girdview thì giá trị của DataTable 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 sao

r0ysy0301 viết 19:57 ngày 30/09/2018

Cả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.

Nguyễn Văn Khoa viết 20:02 ngày 30/09/2018

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

Khánh Hưng Nguyễn viết 19:51 ngày 30/09/2018

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ở.

Bài liên quan
0