Cho mình hỏi chút về kết nối giữa VS2008 và access

Liên hệ QC

thunga25

Thành viên hoạt động
Tham gia
12/5/12
Bài viết
118
Được thích
8
Mình đang gặp vấn đề như thế này,mình đang làm chương trình quay số theo mã nhân viên(lấy trong table Nhanvien cua access), tức là mỗi lần bấm button sẽ chọn ra 1 mã bất kỳ, không được trùng lại, để không bị trùng thì mình xóa những mã đã được chọn trong table Nhanvien. Nhưng khi xóa thì cái dt vẫn không xóa đi những mã đã bị xóa,mà có lúc vẫn chọn ra mã nhân viên đã xóa rồi, bạn nào biết cách làm mới dt mỗi khi bấm button không, chỉ giúp mình với.
khi mình kết nối với acsess như câu lệnh bên dưới:
Mã:
Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoad.Click
        'Tạo command để lấy dữ liệu ra ngoài
        Dim command As New OleDbCommand()
        command.Connection = con ' Kết nối
        command.CommandType = CommandType.Text  'loại lệnh sử dụng là Text hay là một query trong access
        command.CommandText = "Select * From Nhanvien"
da.SelectCommand = command ‘ gán command cho da
        da.Fill(dt)  'Nạp dữ liệu vào Table
 
    End Sub

và lệnh xóa trong table :
Mã:
Dim lenhxoa As String        
lenhxoa = "Delete * from  Nhanvien where Ma_NV = '" & txt_MaNVT.Text & "'"  
Dim Bo_lenhxoa As New OleDbCommand(lenhxoa, con)
Bo_lenhxoa.ExecuteNonQuery()
 
Lần chỉnh sửa cuối:
khó hiểu quá . DANH_SACH_NV là đối tượng nào ? có quan hệ gì với bảng Nhanvien ?
theo tôi nghĩ thì đối tượng DataTable của .Net có phương thức Xóa dòng riêng rồi , đâu cần phải truy vấn đến Access nhiều lần .

 
Nếu mà bạn muốn xóa chỉ trong một phiên mở phần mềm (không lưu lại) thì dùng method dt.Rows.Remove hoặc dt.Rows.RemoveAt để xóa đi row đã dùng tới. Còn muốn xóa và lưu luôn thì dùng cái query delete. Muốn kiểm tra delete có thành công hay không thì kiểm tra số row đã bỉ xử (Bo_lenhxoa.ExecuteNonQuery() trả về số dòng tương tác). Lớn hơn 0 thì có dòng đã ra đi. Bằng 0 nghĩa là chả xóa được dòng nào, lúc đó thì nên kiểm tra lại query với dữ liệu xem.
 
Lần chỉnh sửa cuối:
Sau cái lệnh xoá, gọi sub btnLoad_Click. Nó sẽ load lại cái dataTable.
 
khó hiểu quá . DANH_SACH_NV là đối tượng nào ? có quan hệ gì với bảng Nhanvien ?
theo tôi nghĩ thì đối tượng DataTable của .Net có phương thức Xóa dòng riêng rồi , đâu cần phải truy vấn đến Access nhiều lần .

Xin lỗi mình nhầm, là bảng Nhanvien, theo bạn phương thức xóa dòng của .Net là gì vậy? tại mình đã xóa bằng cầu lệnh trên thì chỉ khi close form đó đi mở lại thì các mã nhân viên đã xóa mới bị mất đi, còn không close form đi thì các mã nhân viên đó vẫn xuất hiện
 
Web KT

Bài viết mới nhất

Back
Top Bottom