• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

bắt lỗi trùng khóa chính

Nơi trao đổi về các vấn đề trong lập trình Windows Forms, Console dùng cú pháp ngôn ngữ Visual Basic .NET và C#

Điều hành viên: tungblt, vuathongtin

nanroto
Bài viết: 1
Ngày tham gia: T.Tư 05/04/2017 11:41 am

bắt lỗi trùng khóa chính

Gửi bàigửi bởi nanroto » T.Tư 05/04/2017 11:48 am

em có 1 hàm này khi thêm mới thì nó tự thông báo mã sinh viên đã có thì dùng hàm gì mọi người. em cảm ơn trước
  1. {
  2.             kiemtra();
  3.             if (kt == true)
  4.             {
  5.                     DataRow row = dt.NewRow();
  6.                     row["MaSinhVien"] = textBox1.Text;
  7.                     row["TenSinhVien"] = textBox2.Text;
  8.                     if (comboBox1.Text == "Nam")
  9.                         row["GioiTinh"] = 1;
  10.                     else if (comboBox1.Text == "Nữ")
  11.                         row["GioiTinh"] = 0;
  12.                     row["NgaySinh"] = dateTimePicker1.Value;
  13.                     row["DanToc"] = textBox3.Text;
  14.                     row["TonGiao"] = textBox4.Text;
  15.                     row["NgheNghiep"] = textBox5.Text;
  16.                     dt.Rows.Add(row);
  17.                     SqlCommand commandInsert = new SqlCommand();
  18.                     commandInsert.Connection = con;
  19.                     commandInsert.CommandType = CommandType.Text;
  20.                     commandInsert.CommandText = @"Insert NguoiDan(MaSinhVien, TenSinhVien, GioiTinh, NgaySinh, DanToc, TonGiao, NgheNghiep)
  21.                            Values(@MaSinhVien, @TenSinhVien, @GioiTinh, @NgaySinh, @DanToc, @TonGiao, @NgheNghiep)";
  22.                     commandInsert.Parameters.Add("MaSinhVien", SqlDbType.VarChar, 6, "MaSinhVien");
  23.                     commandInsert.Parameters.Add("TenSinhVien", SqlDbType.NVarChar, 50, "TenSinhVien");
  24.                     commandInsert.Parameters.Add("GioiTinh", SqlDbType.Int, 50, "GioiTinh");
  25.                     commandInsert.Parameters.Add("NgaySinh", SqlDbType.DateTime, 50, "NgaySinh");
  26.                     commandInsert.Parameters.Add("DanToc", SqlDbType.NVarChar, 30, "DanToc");
  27.                     commandInsert.Parameters.Add("TonGiao", SqlDbType.NVarChar, 50, "TonGiao");
  28.                     commandInsert.Parameters.Add("NgheNghiep", SqlDbType.NVarChar, 50, "NgheNghiep");
  29.                     da.InsertCommand = commandInsert;                  
  30.                     da.Update(dt);                        
  31.             {
  32.                     MessageBox.Show("Bạn đã thêm thành công!", "Thông Báo");
  33.             }
  34.                     Close();
  35.                     disconnect();
  36.                     Dispose();


cái hàm kiểm trà mấy thứ đơn giản khác của em đây
  1.  {
  2.             kt = true;
  3.             if (textBox2.Text == "")
  4.             {
  5.                 MessageBox.Show("Bạn chưa nhập tên của sinh viên!", "Thông Báo", MessageBoxButtons.OK);
  6.                 kt = false;
  7.             }
  8.             else if (textBox3.Text == "")
  9.             {
  10.                 MessageBox.Show("Bạn chưa nhập dân tộc của sinh viên!", "Thông Báo", MessageBoxButtons.OK);
  11.                 kt = false;
  12.             }
  13.             else if (textBox4.Text == "")
  14.             {
  15.                 MessageBox.Show("Bạn chưa nhập tôn giáo của sinh viên!", "Thông Báo", MessageBoxButtons.OK);
  16.                 kt = false;
  17.             }
  18.             else if (textBox5.Text == "")
  19.             {
  20.                 MessageBox.Show("Bạn chưa nhập nghề nghiệp của sinh viên!", "Thông Báo", MessageBoxButtons.OK);
  21.                 kt = false;
  22.             }      
  23.             return kt;
  24.         }



Hình đại diện của người dùng
Kasper
Guru
Guru
Bài viết: 1061
Ngày tham gia: T.Sáu 16/05/2008 10:54 am
Has thanked: 2 time
Been thanked: 76 time
Liên hệ:

Re: bắt lỗi trùng khóa chính

Gửi bàigửi bởi Kasper » T.Tư 05/04/2017 4:03 pm

Nếu bạn không sử dụng khóa chính là trường Auto number thì chỉ có cách là trước khi insert 1 Item bạn phải kết nối CSDL rồi truy vấn xem MSSV mà người dùng đã nhập có trong CSDL hay chưa, nếu có thì thông báo gì đó, nếu chưa thì tiến hành Insert.
Lành tợ tòng, ác tợ hoa,
Nhà hòa muôn việc đều nên.

phuocmih
Bài viết: 7
Ngày tham gia: T.Sáu 15/11/2013 11:50 am

Re: bắt lỗi trùng khóa chính

Gửi bàigửi bởi phuocmih » T.Sáu 07/04/2017 1:46 pm

Của bạn đây

Mã: Chọn hết

Dim sStr As String
        Dim da As New SqlDataAdapter("select*from KHACHHANG where MAKH='" & Trim(TxtMaKH.Text) & "'", Conn)
        Dim dt As New DataTable
        da.Fill(dt)
        If NutMoi = True Then ' Nếu Thêm mới
            If dt.Rows.Count > 0 Then
                MessageBox.Show("Mã số đã được sử dụng. Vui lòng kiểm tra lại !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                Exit Sub
                TxtMaKH.Focus()
            Else
                sStr = "INSERT INTO KHACHHANG VALUES('" & Trim(TxtMaKH.Text) & "',N'" & Trim(TxtTenKH.Text) & "', N'" & Trim(TxtDiaChi.Text) & "',N'" & Trim(TxtDaiDien.Text) & "','" & Trim(TxtDienThoai.Text) & "')"
            End If
        Else 'Ngược lại nếu người dùng nhấn nút sửa
            If dt.Rows.Count > 0 And (OldCode <> Trim(TxtMaKH.Text)) Then
                MessageBox.Show("Mã số đã được sử dụng. Vui lòng kiểm tra lại !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                Exit Sub
                TxtMaKH.Focus()
            Else
                sStr = "UPDATE KHACHHANG SET MAKH='" & Trim(TxtMaKH.Text) & "',TENKH=N'" & Trim(TxtTenKH.Text) & "',DIACHI= N'" & Trim(TxtDiaChi.Text) & "',DAIDIEN=N'" & Trim(TxtDaiDien.Text) & "',DIENTHOAI='" & Trim(TxtDienThoai.Text) & "'  WHERE MAKH='" & OldCode & "'"
            End If
        End If

Trước đó khai báo 1 cái biên Boolean là NutMoi để kiểm tra xem người dùng nhấn nút "Thêm Mới" hay nut "Sửa"
Cái OldCode là cái ID được lưu tạm khi người dùng nhấn nút "Sửa" để khi Update thì Update đúng cái Bản ghi đã lấy ra sửa
@Mr Kasper: Forum đang chết dần hả Mr Kas :((

Hình đại diện của người dùng
Kasper
Guru
Guru
Bài viết: 1061
Ngày tham gia: T.Sáu 16/05/2008 10:54 am
Has thanked: 2 time
Been thanked: 76 time
Liên hệ:

Re: bắt lỗi trùng khóa chính

Gửi bàigửi bởi Kasper » T.Hai 17/04/2017 9:18 am

@Mr Kasper: Forum đang chết dần hả Mr Kas

Dạo này 4rum hơi chìm.
Lành tợ tòng, ác tợ hoa,
Nhà hòa muôn việc đều nên.


Quay về “Visual Basic .NET và C# (VB.NET & C#)”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.3 khách