Toggle Theme Editor
Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Charcoal

[C#] Hỏi về cách xử lý trạng thái trong c#

Discussion in 'Ngôn ngữ lập trình khác (Pascal, C#, VB, ...)' started by vanchuong, 24/11/13.

  1. vanchuong

    vanchuong Member

    Em đang làm chương trình quản lý khách sạn! Em muốn kiểm tra trạng thái phòng nào đã được đặt rồi thì hiển thị lên label trên giao diện chính là đã đăng ký, hoặc phòng đã có người ở...(Có ảnh kèm theo: Lable TrangThai hiển thị trên từng phòng để khách hàng xem)
    Nếu đã được đăng ký trước thì lable hiển thị chữ Đã Đăng Ký. Kiểm tra ở table DatPhong và TrangThai = "Rồi".
    Anh chị chỉ giùm em cách làm được không ạ! em cảm ơn!
     

    Attached Files:

  2. SITUVN

    SITUVN Well-Known Member

    Có gì khó lắm à?
     
  3. vanchuong

    vanchuong Member

    Anh cho em hỏi thêm cái này. đây là câu lệnh select của em.
    Code:
    try
    {
    connectData();
    cmd = new SqlCommand("SELECT TrangThai from Phong where TenPhong='"+LabelTenPhong.Text+"'", conn);
    dr = cmd.ExecuteReader();
    if (dr.HasRows)
    {
    dr.Read();
    labeltrangthai.Text = dr["TrangThai"].ToString();
    }
    }
    catch (Exception ex)
    {
    throw new Exception(ex.Message);
    }
    finally
    {
    conn.Close();
    }
    
    Em chỉ làm đơn giản như thế này thì Label trạng thái hiển thị được. Nhưng em muốn nó kiểm tra hết tất cả các label(TDN01, TDN02...CDN01, CD02...) Nếu Trạng thái là "Rồi" thì lable đó sẽ chuyển sang màu đỏ. Trạng thái này có trong table Phong. Tên Phòng là tên Label như hình vẽ! Anh chỉ giúp em với. ví dụ như hình vẽ này:
     

    Attached Files:

  4. SITUVN

    SITUVN Well-Known Member

    Thì kiểm tra cái trạng thái đó. Nếu nó rồi thì chỉnh thuộc tính Label.ForeColor sang màu đỏ.
     
  5. vanchuong

    vanchuong Member

    Câu lệnh: labeltrangthai.Text = dr["TrangThai"].ToString(); là ví dụ của em thôi! nó hiển thị trạng thái có hoặc không.
    Còn ở đây em muốn nó kiểm tra trạng thái với tên phòng tương ứng theo tên label CDN01,CND02......Nếu kiểm tra CDN01 có trạng thái 'có' thì sẽ có màu đỏ và tương tự cái khác.
     
  6. vanchuong

    vanchuong Member

    ví dụ: label CDN01 (CND01 cũng là tên Phòng) có trạng thái là có thì sẽ có màu đỏ chẳng hạn. thì câu lệnh kiểm tra nó sẽ như thế nào?
     
  7. SITUVN

    SITUVN Well-Known Member

    Tức là bạn đã cố định những nhãn đó như lblVIP01, lblVIP02...?

    Vậy thì mệt, bạn phải kiểm tra từng nhãn rồi gán trạng thái của nó vào. Có càng nhiều phòng thì càng phải kiểm tra nhiều, mã viết cũng nhiều theo số phòng.

    Bạn làm vậy thì mình cũng chiều, nhưng viết mã cứng là không nên.

    PHP:
    public void KTPhong(Label phong) {
        try {
            
    connectData();
            
    cmd = new SqlCommand("SELECT TrangThai from Phong where TenPhong='"+phong.Text+"'"conn);
            
    dr cmd.ExecuteReader();
            if (
    dr.Read()) {
                
    phong.ForeColor dr["TrangThai"].ToString() == "có" Color.Red ColorBlue// chỉ vầy
            
    }
        } catch (
    Exception ex) {
            throw new 
    Exception(ex.Message);
        } 
    finally {
            
    conn.Close();
        }
    }

    // kiểm tra phòng nào thì đưa tham số là nhãn của phòng đó vào.
     
  8. vanchuong

    vanchuong Member

    Hồi trước em có làm thế này, không phải viết mã cứng như anh nói:
    Code:
    DataTable dtTenPH = db.ExecuteQuery("select P.TenPH,P.TrangThai from TblPhong P order by TenPH DESC", CommandType.Text);
    int hang = dtTenPH.Rows.Count - 1;
    .......
    ...
    string trangthai=dtTenPH.Rows[hang]["TrangThai"].ToString();
                                if(trangthai=="Có")
                                {
                                    Màu đỏ chẳng hạn
                                }
                                if(trangthai=="không")
                                {
                                    xanh
                                }
    
    Nhưng bài em làm không có sự kiện dr.Rows.
    xem code đó anh có ý tưởng gì ko ạ?
     
  9. SITUVN

    SITUVN Well-Known Member

    Bạn làm như vậy thì được rồi, cái khó của bạn là..?
     
  10. vanchuong

    vanchuong Member

    Bài em làm là dùng cmd, còn cái em post sau là dùng datatable db.ExecuteQuery. Nên cái không có sự kiện dr.rows như bài sau!
    khó là chỗ đó!
     
  11. SITUVN

    SITUVN Well-Known Member

    Reader là để đọc từng dòng, còn DataTable là để lưu. Sao bạn không dùng DataTable luôn mà chuyển qua DataReader làm gì?

    Càng xem thì càng thấy bạn làm lằng nhằng quá.
     
    vanchuong likes this.
  12. vanchuong

    vanchuong Member

    Tất cả các form của em đều dùng DataReader cả! giờ chuyển form này có được ko anh? anh có thể cho em ví dụ sử dụng DataTable với trường hợp này em tham khảo được ko ạ?
     

Chia sẻ trang này

Loading...