Cập nhật một dòng dữ liệu

Một phần của tài liệu Ebook bài tập thực hành chuyên đề visual studio NET (Trang 121 - 123)

Khi người dùng nhấn Button Update (cập nhật), ta sẽ lấy chỉ mục được chọn trên ListBox, và lấy ra dòng dữ liệu DataRow trong bảng ứng với chỉ mục trên. Sau đó cập nhật DataSet với dòng dữ liệu mới này nếu sau khi kiểm tra thấy chúng không có lỗi nào cả. Chi tiết về quá trình thực hiện cập nhật:

Đầu tiên ta sẽ lấy về dòng dữ liệu người dùng muốn thay đổi từ đối tượng dataTable mà ta đã khai báo làm biến thành viên ngay từ đầu:

Hiển thị chuỗi thông báo cập nhật dòng dữ liệu đó cho người dùng biết. Để làm điều này ta sẽ gọi phương thức tình DoEvents() của đối tượng Application, hàm này sẽ giúp sơn mới lại màn hình với thông điệp hay các thay đổi khác.

lblMessage.Text = "Updating " + targetRow["CompanyName"]; Application.DoEvents();

Gọi hàm BeginEdit() của đối tượng DataRow, để chuyển dòng dữ liệu sang chế độ hiệu chỉnh ( Edit ) và EndEdit()để kết thúc chế độ hiệu chỉnh dòng.

targetRow.BeginEdit();

targetRow["CompanyName"] = txtCustomerName.Text; targetRow.EndEdit();

Lấy về các thay đổi trên đối tượng DataSet để kiểm tra xem các thay đổi có xảy ra bất kỳ lỗi nào không. Ở đây ta sẽ dùng một biến cờ có kiểu true/false để xác định là có lỗi là true, không có lỗi là false.Kiểm tra lỗi bằng cách dùng hai vòng lặp tuần tự trên bảng và dòng của DataSet mới lấy về ở trên, ta dùng thuộc tính

HasErrors để kiểm tra lỗi trên bảng, phương thức GetErrors()để lấy về các dòng có lỗi trong bảng.

DataSet DataSetChanged;

DataSetChanged = DataSet.GetChanges(DataRowState.Modified); bool okayFlag = true;

if (DataSetChanged.HasErrors) {

okayFlag = false;

string msg = "Error in row with customer ID ";

foreach (DataTable theTable in DataSetChanged.Tables) {

if (theTable.HasErrors) {

DataRow[] errorRows = theTable.GetErrors( ); foreach (DataRow theRow in errorRows) msg = msg + theRow["CustomerID"]; }

lblMessage.Text = msg; }

Nếu biến cờ okagFlag là true,thì ta sẽ trộn DataSet ban đầu với DataSet thay đổi thành một, sau đó cập nhật DataSet sau khi trộn này vào cơ sở dữ liệu.

if (okayFlag) {

DataSet.Merge(DataSetChanged);

DataAdapter.Update(DataSet,"Customers");

Tiếp theo hiển thị câu lệnh truy vấn cho người dùng biết, và cập nhật những thay đổi cho DataSet đầu tiên, rồi hiển thị dữ liệu mới lên đối tượng ListBox.

lblMessage.Text = DataAdapter.UpdateCommand.CommandText; Application.DoEvents( );

DataSet.AcceptChanges( ); PopulateLB( );

Nếu cờ okayFlag là false, có nghĩa là có lỗi trong quá trình hiệu chỉnh dữ liệu, ta sẽ từ chối các thay đổi trên DataSet.

else

DataSet.RejectChanges( );

Một phần của tài liệu Ebook bài tập thực hành chuyên đề visual studio NET (Trang 121 - 123)

w