Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Vấn đề chưa biết cách giải quyết trong Winform C#.

  1. #1
    Ngày gia nhập
    11 2008
    Bài viết
    20

    Question Vấn đề chưa biết cách giải quyết trong Winform C#.

    em có 2 vấn đề mong mọi người giúp đỡ:

    1)Em có 2 combobox: phòng ban(cbbpb) và tổ (cbbto), cả 2 em này đều hiện thị tên các phòng ban và các tổ, còn giá trị của nó thì là MaPB và Mato.

    em muốn lựa chọn giá trị trong cbbpb thì combobox tổ sẽ thay đổi: chỉ hiện thị các tổ trong phòng ban đó.

    bảng phong_ban:
    MaPB int
    tenPB varchar(100),
    dienthoai varchar(30),
    bảng TOLAMVIEC:
    Mato int
    tolamviec varchar(30)
    MaPB int

    em viết hàm cho cpppb:

    private void cbbpb_SelectedIndexChanged(object sender, EventArgs e)
    {
    strto = "select * from TOLAMVIEC where MaPB='"+cbbpb.SelectedValue+"'";

    DataTable dttbto = FillDataTable(strto, CommandType.Text);
    cbbto.DataSource = dttbto;
    cbbto.DisplayMember = "tolamviec";
    cbbto.ValueMember = "Mato";
    cbbto.Text = "";
    }

    Em viết như vậy thì nó không báo lỗi gì khi biên dịch.
    Nhưng khi load Form chứa 2 combobox đó thì có lỗi:

    Error: conversion failed when coverting the varchar value ‘System.Data.Datarowview’ to datatype int.

    Nhấp vào OK 2 lần thì hiện Form ra bình thường và thực hiện đúng như ý định ban đầu của mình.
    Em không biết cách nào để bỏ thông báo lỗi ở trên.

    Em đã thử cách khác:

    strto = "select * from TOLAMVIEC where MaPB='"+int.Parse(cbbpb.SelectedValue.ToString())+ "'";

    biên dịch cũng không có lỗi nhưng khi chạy thì nó báo:

    Input string was not in a correct format.

    Em lại thử cách khác:

    strto = "select * from TOLAMVIEC where MaPB='"+ Convert.ToInt32((DataRowView)cbbpb.SelectedValue)+ "'";

    Biên dịch thì không có lỗi nhưng khi chạy thì có lỗi:

    Unable to cast object of type 'System.Data.DataRowView' to type 'System.IConvertible'.

    Em đã thực sự bó tay.Mong mọi người giúp đỡ.

    2)Em có 1 textbox để nhập vào tuổi nhân viên. Em tạo ra
    bảng Tham_so
    tuoiNVtoithieu int
    tuoiNVtoida int
    em để bảng này chỉ có 1 record.

    Em muốn sau khi nhập vào tuổi của nhân viên thì khi nhấp nút Lưu thì nó phải kiểm tra tuổi nhập vào phải lớn hơn tuoiNVtoithieu và nhỏ hơn tuoiNVtoida.

    Em không biết viết code thế nào để làm được yêu cầu trên. Mong mọi người giúp.

  2. #2
    Ngày gia nhập
    11 2007
    Bài viết
    294

    Đang ngồi coding ở quán coffee, tự nhiên rất có nhã hứng ^^!

    1 - Lỗi xảy ra là do việc convert kiểu dữ liệu của bạn.

    Đoạn code đầu của bạn không phải chỗ gây ra lỗi. Trong đoạn đó không có chỗ nào là convert từ kiểu datarowview sang int. Mà lỗi lại do không convert được kiểu datarowview sang int.

    Đoạn code thứ 2 thì lỗi do khi bạn load form lên lần đầu thì giá trị trong combobox là null nên không thể convert sang kiểu int được. Có thể khắc phục bằng kiểu nông dân thế này
    Visual C# Code:
    1. strto = String.Empty;
    2. if(cbbpb.SelectedValue != null && cbbpb.SelectedValue.ToString() != String.Empty)
    3. strto = "select * from TOLAMVIEC where MaPB='"+int.Parse(cbbpb.SelectedValue.ToString())+ "'";
    4. if(strto != String.Empty){
    5. // Load dữ liệu hay làm gì thì tùy ^^!
    6. }

    2 - Bạn muốn check trên form hay check trong database?

    Cheers!
    Is the moon rising...

  3. #3
    Ngày gia nhập
    11 2008
    Bài viết
    20

    Xin cám ơn bác nhiều.
    em sẽ thử

  4. #4
    Ngày gia nhập
    11 2008
    Bài viết
    20

    vấn đề 1 chưa sửa được:
    Em làm theo bác chỉ thì vẫn có thông báo:

    Input string was not in a correct format.

    tại dòng:

    strto = "select * from TOLAMVIEC where MaPB='"+int.Parse(cbbpb.SelectedValue.ToString())+ "'";

  5. #5
    Ngày gia nhập
    01 2008
    Bài viết
    120

    Chào bạn. MÌnh xin góp ý đoạn này :
    Bạn nên chạy F9 để debug cái lỗi đó-> kiểm tra xem nó là kiểu gì nhế

  6. #6
    Ngày gia nhập
    11 2007
    Bài viết
    294

    Mặc định Vấn đề chưa biết cách giải quyết trong Winform C#.

    Bạn kiểm tra lại col mato có row nào có ký tự ko phải số ko nghen ^^!

    Cheers!
    Đã được chỉnh sửa lần cuối bởi darkan : 01-12-2008 lúc 10:04 AM.
    Is the moon rising...

  7. #7
    Ngày gia nhập
    11 2008
    Bài viết
    20

    Em đã thử Debug thì thấy thay vì combobox phòng ban hiện tên các phòng ban thì nó lại hiện lên mã số các phòng ban.
    Không biết lỗi ở đâu nữa.
    Các combobox khác em làm thì nó hiện đúng tên không phải mã.

    Mà các mã tổ của em và các mã khác em đều cho nó tăng tự động nên chắc chắn nó phải là kiểu số

Các đề tài tương tự

  1. Cách giải quyết 2 phương thức khởi tạo có 2 biến đầu vào giống nhau là gì
    Gửi bởi khanhduy.8hpm trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 22-08-2012, 12:28 AM
  2. Graphic Cách tùy biến giao diện Winform tùy thuộc vào nhóm người dùng
    Gửi bởi dailuong trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 19-12-2011, 08:43 PM
  3. dùng GA giả quyết bài toán tối ưu hàm 1 biến như thế nào..
    Gửi bởi princehai trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 07-10-2011, 04:45 PM
  4. Kỹ thuật C++ Winform C++ | Tạo module xử lý giao diện Winform trong C++ như thế nào?
    Gửi bởi likhungma trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 04-10-2011, 05:45 PM
  5. Xóa file trong win ! Nan giải quá , nghĩ cả ngày nay chưa giải quyết được.
    Gửi bởi megaboyvn trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 08-10-2009, 02:21 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn