• 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

Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Các bài viết hướng dẫn về Visual Basic .NET và C#

Điều hành viên: tungcan5diop, QUANITGROBEST

Hình đại diện của người dùng
vuathongtin
Điều hành viên
Điều hành viên
Bài viết: 1028
Ngày tham gia: CN 02/05/2010 10:03 pm
Đến từ: Xứ sở DG
Has thanked: 2 time
Been thanked: 105 time
Liên hệ:

Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Gửi bàigửi bởi vuathongtin » T.Năm 08/07/2010 8:35 am

Tên bài viết: Căn Bản Về Kết Nối CSDL Access trong VB.Net
Tác giả: vuathongtin
Cấp độ bài viết: Cơ Bản
Tóm tắt:



Các khái nhiệm :

Datatable : giống như table trong file access, mọi thao tác (thêm, xóa, sửa,.. ) được thực hiện trên datatable rùi mới đưa vào file nguồn ---> datatable là bảng (table) dữ liệu trung gian.
Datatable gồm : datarow, dataset,....
Dữ liệu từ table của file nguồn được kết nối bởi Connection, sau đó đc đổ vào datatable (hoặc các thành phần trong datatable) thông qua DataAdapter.

Lấy ví dụ cho dễ hiểu nha :
Bạn chỉ cần tưởng tượng rằng : bạn có một cái bể nước (DataSource) , một cái máy bơm (DataAdapter) và một cái thùng đựng nước (DataSet). Thì khi lấy nước dùng cái bơm lấy nước từ bể, kiểm tra và lọc nước sau đó lại dùng cái bơm hút lại về cái bể nước. Đó chính là vai trò của cái bơm và DataAdapter tương tự như vậy.


--> Mình chỉ ghi theo những j mình hiểu thôi nên cũng ko chính xác lắm.

CSDL làm ví dụ : http://www.mediafire.com/?ntn0rmtmzdt

1. Khai báo
Namespace chỉ để kết nối Access

hoặc


Biến toàn cục :
  1.    Dim con As New OleDbConnection
  2.     Dim da As New OleDbDataAdapter
  3.     Dim dt As New DataTable


2. Kết nối với CSDL :
  1. Sub ketnoi()
  2.         con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "  data source= " & Application.StartupPath & "\QUAN_LY_SINH_VIEN.mdb"
  3.         con.Open()
  4.     End Sub


--> QUAN_LY_SINH_VIEN.mdb là CSDL cần kết nối
Chú ý : Bạn muốn biết Provider của CSDL bạn dùng là gì bạn nên vào trang http://www.connectionstrings.com/để tìm hiểu


3. Load dữ liệu vào datatable, datagridview,...
  1.  ketnoi()
  2. ' kiểm tra kết nối
  3.        If con.State = ConnectionState.Open Then  ' hoặc : con.State = 1
  4.             MsgBox("Thanh cong")
  5.         End If
  6.  da = New OleDbDataAdapter("Select * from SINHVIEN", con)
  7.  da.Fill(dt)
  8.  DataGridView1.DataSource = dt


4. Next, Previous, Last, First, Count
Cách 1 : Dùng "BindingContext "
  1. ' Next
  2. Me.BindingContext.Item(dt).Position = Me.BindingContext.Item(dt).Position + 1
  3.  
  4. ' Previous
  5. Me.BindingContext.Item(dt).Position = Me.BindingContext.Item(dt).Position - 1
  6.  
  7. ' Last
  8. Me.BindingContext.Item(dt).Position = Me.BindingContext.Item(dt).Count - 1
  9.  
  10. ' First
  11. C1:  DataGridView1.CurrentCell = DataGridView1.Item("tên hàng", 0)
  12. ví dụ :  DataGridView1.CurrentCell = DataGridView1.Item("MSSV", 0)
  13.  
  14. C2: Me.BindingContext.Item(dt).Position = 0
  15.  
  16. 'Trỏ đến vị trí mới nhập
  17.  
  18. DataGridView1.CurrentCell =DataGridView1.Item("Tên cột sẽ chọn trên dòng", "chỉ số dòng mới chèn vào")
  19.  
  20. Ví dụ : trỏ đến dòng thứ 20 của cột MSSV
  21. DataGridView1.CurrentCell = DataGridView1.Item("MSSV", 20)
  22.  
  23. ' Count
  24. lbl_tongso.Text = "Tổng số : " & Me.BindingContext.Item(dt).Count.tostring
  25. hoặc :
  26. lbl_tongso.Text = "Tổng số : " & Me.dt.Rows.Count.tostring
  27. hoặc :
  28. lbl_tongso.Text = "Tổng số : " & Me.dt.DefaultView.Count.tostring
  29.  
  30.  

Chú ý : dt là khai báo của datatable

Cách 2 : Dùng "Bindingsource"
ví dụ : Khi viết code cho button " Next"
  1.    Dim binding As New BindingSource
  2.         binding.DataSource = dt
  3.         DataGridView1.DataSource = binding
  4.         binding.MoveNext()


--> Ý nghĩa : BindingSoure cung cấp các giao thức "MoveNext, MoveFirst,.." , ta chỉ việc khai báo datasource của DataGridView1 gián tiếp với dt thông qua Bindingsource là sử dụng đc các giao thức đó

Những cái kia viết tương tự .....

5. Tìm kiếm
Cách 1 : Dùng SQL " Lọc với điều kiện cho trước"
Cú pháp :

Mã: Chọn hết

Select <tên field> from <tên table> where <điều kiện>

5.1.1. Dùng phép so sánh =
  1. da = New OleDbDataAdapter("Select * from SINHVIEN where MSSV='" & txt_tim.Text & "'", con)
  2. da.Fill(dt)
  3. DataGridView1.DataSource = dt


5.1.2. Dùng Hàm Instr

  1. da = New OleDbDataAdapter("Select * from SINHVIEN where instr(MSSV,'" & txt_tim.Text & "')>0", con)


Hàm InStr() trả về vị trí của ký tự (nhóm ký tự) đầu tiên được truyền vào trong chuối String.


Ví dụ :
InStr(doan_van,"T")
' Ở đây, chữ "T" được tính là chữ "T" của chữ: "Tro".


5.1.3. Dùng toán tử LIKE
Cú pháp :

Mã: Chọn hết

 "Select * from CV where NOIDUNG LIKE '%" & txtTimKiem.Text & "%'"


  1. da = New OleDbDataAdapter("Select * from SINHVIEN where MSSV like '" & txt_tim.Text & "'", con)


Cách 2 : Dùng chức năng "RowFilter" trong datatable
Cú pháp :
  1. dt.DefaultView.RowFilter= chuoiloc ' dt là khai báo của datatable


Ví dụ :
  1. dim chuoiloc as string= string.format ("Ten like '{0}%'",txt_timten.text)
  2.    dt.DefaultView.RowFilter= chuoiloc


Ngoài ra nếu datagridview được kết nối qua một bindingsource thì có thể phương thức "Filter" của BindingSource .
Ví dụ :
  1.   Dim binding As New BindingSource
  2.   binding.DataSource = dt
  3.   DataGridView1.DataSource = binding
  4.  binding.Filter = String.Format("Ten like '{0}%'", txtsearchstr.Text)


6. Thêm
Lấy form tạo người dùng làm ví dụ
tbl_nguoidung : nguoidung, matkhau

6.1. Phương pháp 1 : Chậm mà chắc

B1 : Kiểm tra kết nối và đổ (fill) dữ liệu từ nguồn vào datatable ---> Ta đã có 1 table ( bước này có khi ko dùng đến)

B2 : Khai báo 1 Row (dòng) mới vào dt (datatable), và add dữ liệu vào Row theo cấu trúc row trong (datatable)

  1.  ' Khai báo row mới
  2. Dim row As DataRow = dt.NewRow
  3.  ' Add du lieu vao cau truc Row
  4. row("nguoidung") = txt_tennguoidung.Text
  5. row("matkhau") = txt_matkhau.Text
  6. dt.Rows.Add(row)


B3 : Dùng Command để update vào file nguồn
  1. ' Dung command de update vao database nguon
  2.  Dim commandtao As New OleDb.OleDbCommand()
  3. commandtao.Connection = frm_dangnhap.con
  4. commandtao.CommandType = CommandType.Text ' Loại lenh su dung la Text
  5. commandtao.CommandText = "Insert into tbl_nguoidung values (@nguoidung,@matkhau)"
  6.  
  7. ' Truyen tham so vao cac values
  8. commandtao.Parameters.Add("@nguoidung", OleDb.OleDbType.VarChar, 30, "nguoidung")
  9. commandtao.Parameters.Add("@matkhau", OleDb.OleDbType.VarChar, 20, "matkhau")
  10.  
  11. ' Dùng da để thực thi những thay đổi vào file nguồn
  12. da.InsertCommand = commandtao
  13. da.Update(dt)
  14.  


6.2 . Phương pháp 2 : Nhanh cho mau thấy, không cần biết hậu quả :P

B1, B2 : tương tự phương pháp 1
B3 : Dùng CommandBuilder để làm da thực thi nhưng thay đổi vào file nguồn

  1. Dim cb As OleDbCommandBuilder
  2. cb = New OleDbCommandBuilder(da)
  3. da.Update(dt)
  4. cb.Dispose()


Ngoài ra có thể Insert dựa vào
dataset

7. Sửa :
B1 : Tương tự như Thêm
B2 : Khai báo
  1. Dim cb As New OleDb.OleDbCommandBuilder
  2. Dim row As DataRow = frm_dangnhap.dt_nguoidung.Select("nguoidung = '" & frm_dangnhap.txt_nguoidung.Text & "'")(0)
  3. row.BeginEdit()
  4. row("matkhau") = txt_matkhaumoi.Text
  5. row.EndEdit()


B3 : Tương tự B3 của 6.2
  1. Dim cb As OleDbCommandBuilder
  2. cb = New OleDbCommandBuilder(da)
  3. da.Update(dt)
  4. cb.Dispose()


Ngoài ra B2 có thể làm tương tự như B2 của 6.1 (chậm mà chắc)
  1. ' Dung command de update vao database nguon
  2.  Dim commandtao As New OleDb.OleDbCommand()
  3. commandtao.Connection = frm_dangnhap.con
  4. commandtao.CommandType = CommandType.Text ' Loại lenh su dung la Text
  5. commandtao.CommandText = "Update tbl_nguoidung set nguoidung=@nguoidung,matkhau=@matkhau"
  6.  
  7. ' Truyen tham so vao cac values
  8. commandtao.Parameters.Add("@nguoidung", OleDb.OleDbType.VarChar, 30, "nguoidung")
  9. commandtao.Parameters.Add("@matkhau", OleDb.OleDbType.VarChar, 20, "matkhau")
  10.  
  11. ' Dùng da để thực thi những thay đổi vào file nguồn
  12. da.UpdateCommand = commandtao
  13. da.Update(dt)
  14.  

Giải thích :
  1. frm_dangnhap.dt_nguoidung.Select("nguoidung = '" & frm_dangnhap.txt_nguoidung.Text & "'")(0)
--> lấy bảng đầu tiên trong tập hợp các bảng của datatable

8. Xóa :
B1 : Tương tự như Thêm
B2 :
  1. Dim cb As New OleDb.OleDbCommandBuilder
  2. Dim row As DataRow = frm_dangnhap.dt_nguoidung.Select("nguoidung = '" & frm_dangnhap.txt_nguoidung.Text & "'")(0)
  3. row.BeginEdit()
  4. row.delete()
  5. row.EndEdit()


B3 : Tương tự B3 của 6.2
  1. Dim cb As OleDbCommandBuilder
  2. cb = New OleDbCommandBuilder(da)
  3. da.Update(dt)
  4. cb.Dispose()


Cách 2 : Thực thi trực tiếp câu lệnh SQL
  1.  Dim row As DataRow = dt.Select("nguoidung = '" & Txt_nguoidung.Text & "'")(0)
  2.  cmd = New OleDbCommand("Delete * from tbl_nguoidung where (nguoidung='" & txt_nguoidung.Text & "')", con)
  3. cmd.ExecuteNonQuery()
  4. row.delete()


Chỉ cần viết 1 thủ tục Thực thi trực tiếp command thông qua lệnh ExecuteNonQuery()
ta có thể insert, update hoặc delete 1 cách dễ dàng . 1 thủ tục làm nhiều công việc

  1. Sub thucthi(ByVal chuoitruyvan As String, ByRef con As OleDbConnection)
  2.             cmd = New OleDbCommand(chuoitruyvan, con)
  3.             cmd.ExecuteNonQuery()
  4.   End Sub


Chú thích :
- con là biến toàn cục ( đã khai báo ở trên)
- Chuoitruyvan là lệnh SQL

Ví dụ :
  1. Dim chuoitruyvan1 as string="Insert into NhanVien(MaNV,Ho,Ten) values('" & txt_ma.Text & "','" & txt_ho.Text & "','" & txt_ten.Text & "')"
  2. Dim chuoitruyvan2 As String = "update NhanVien set MaNV='" & txt_ma.Text & "',Ho='" & txt_ho.Text & "',Ten='" & txt_ten.Text & "' where MaNV='" & txt_ma.Text & "'"
  3. Dim chuoitruyvan3 as string="delete * from NhanVien where MaNV='" & txt_ma.Text & "'"
  4.  
  5. them(chuoitruyvan1,con) ' Thêm dữ liệu
  6. them(chuoitruyvan2,con) ' Update lại dữ liệu
  7. them(chuoitruyvan3,con) ' Xóa dữ liệu tại vị trí mã được chọn


Tóm lại : theo cách hiểu hiện tại của mình:
Để thao tác với CSDL trong ADO.Net có 4 cách
1- Dùng command để thực thi tham số truyền vào
ví dụ :

Mã: Chọn hết

 da.insertcommand=cmd

2- Dùng commandBuider để chấp nhận những thay đổi trong datatable
VD: Dim OleDbcommandbuider = new OleDbCommandbuilder(da)
3- Dùng câu lệnh thực thi ExenonQuery hoăc ExeReader

Mã: Chọn hết

 VD: cmd.ExeNonQuery

4- Dùng Store procedure


9. Tạo Báo Cáo (Crytal Report ):
Bạn có thể tham khảo 3 bài viết sau :
1. bài viết TẠO REPORT TRONG 1h của tungcan5diop http://caulacbovb.com/forum/viewtopic.php?f=8&t=5727&start=20

2. Tìm hiểu và thao tác với Crystal Report của anhtuyenbk http://caulacbovb.com/forum/viewtopic.php?f=23&t=562

3. Dynamic Crystal Report của thuytrang2542000 http://caulacbovb.com/forum/viewtopic.php?f=23&t=5357#p33693

===> Tóm lại để làm Report chỉ cần 2 bước cơ bản sau :
Bước 1: (Tạo thư mục baocao chứa 3 cái sau đây)
- Tạo Dataset --> ds_baocao
- Crytal Report theo cấu trúc của dataset (field của dataset tương ứng với field trong file nguồn) ----> rpt_baocao
- Form hiển thị báo cáo (chứa control CrytalReportView) --> frm_baocao

Bước 2 : Viết thủ tục inbaocao
Nạp dữ liệu cho Crytal Report theo datatable
  1. Dim myreport As New rpt_baocao
  2.   myreport.SetDataSource(dt_nhanvien)


Nạp form trong report
  1.  Dim f As New  frm_report
  2.  f.CrystalReportViewer1.ReportSource = myreport
  3.  f.Show()


Bổ Sung : (Cập nhật ngày 11-08-2010)

1. Cập nhật những thay đổi trong lưới vào CSDL
  1.     Sub capnhatthaydoi()
  2.                    cb = New OleDbCommandBuilder(da)
  3.                    da.Update(dt)
  4.                    dt.AcceptChanges()
  5.               End Sub


2. Lấy dữ liệu từ DataGridview thông qua các sự kiện (Event):
Form có 1 datagrid, trong datagrid có 3 cột là Id, Ten, Dt . Khi mình bấm vào 1 dòng nào đó trên datagrid thì các textbox sẽ hiển thị nội dung tương ứng của dòng đc click


Cách 1 :
Ở sự kiện RowHeaderMouseClick trong DataGridView:
  1. textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
  2. textBox2.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
  3. textBox3.Text = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();


Cách 2 :
Sự kiện CurrentCellChanged
  1. On Error Resume Next
  2.  i = DataGridView1.CurrentRow.Index() 'i =  BindingContext.Item(dt).Position
  3.         txt_diachi1.Text = DataGridView1.Item("Diachi1",i).Value

hoặc :
  1. txt_diachi1.Text = DataGridView1.CurrentRow.Cells("Diachi1").Value().ToString


Cách 3 : (nên dùng cách này)
Hoặc dùng sự kiện SelectionChanged
  1.  i = DataGridView1.CurrentRow.Index() 'i =  BindingContext.Item(dt).Position
  2.         txt_diachi1.Text = DataGridView1.Item("Diachi1",i).Value

hoặc :
  1.  txt_diachi1.Text = DataGridView1.CurrentRow.Cells("Diachi1").Value().ToString


3. Bắt lỗi trong SQL:

bắt lỗi cú pháp cho dữ liệu nhé. Thường thì nó hay bị lỗi đấu nhấy đơn (" ' ") đó.

  1. Function ThayThe(ByVal Chuoi As String, Optional ByVal KiTuCu As String = "'", Optional KiTuMoi ByValAs String = "''") As String
  2.   Return Chuoi.Replace(KiTuCu, KiTuMoi)
  3. End Function
  4.  

sử dụng :
  1. sql = "Insert Into NhanVien (MaNV, Ho, Ten) Values ('" & ThayThe(Me.txtMa.Text.Trim) & "', '" & ThayThe(Me.txtHo.Text.Trim) & "', '" & ThayThe(Me.txtTen.Text.Trim) & "')"


Xem project demo về report : http://caulacbovb.com/forum/download/file.php?id=9840
Sửa lần cuối bởi vuathongtin vào ngày T.Hai 02/05/2011 9:25 am với 12 lần sửa.


Bùi Thành Nhân
CNTT-Sở Thông tin & Truyền thông tỉnh Phú Yên
giasulaptrinh.com
Skype:vuathongtin

khicon_9x
Bài viết: 3
Ngày tham gia: T.Sáu 23/10/2009 10:53 am

Re: Căn Bản Về Kết Nối CSDL

Gửi bàigửi bởi khicon_9x » T.Tư 23/03/2011 12:12 am

Rất cảm ơn bài viết của bạn. Bài viết rất hay và bổ ích !!!. Thankyou!!!

qqqq1234
Thành viên chính thức
Thành viên chính thức
Bài viết: 10
Ngày tham gia: CN 17/04/2011 9:05 pm

Re: Căn Bản Về Kết Nối CSDL

Gửi bàigửi bởi qqqq1234 » T.Hai 18/04/2011 8:07 pm

thank về bài viết

luckystar909
Bài viết: 1
Ngày tham gia: T.Ba 05/07/2011 2:31 pm

Re: Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Gửi bàigửi bởi luckystar909 » T.Ba 05/07/2011 2:37 pm

Cảm ơn bạn đã chia sẻ.

muaphonui_2010
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 473
Ngày tham gia: T.Sáu 26/11/2010 1:15 pm
Đến từ: TP.HCM
Has thanked: 173 time
Been thanked: 27 time
Liên hệ:

Re: Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Gửi bàigửi bởi muaphonui_2010 » T.Hai 29/08/2011 4:07 pm

Bài này thật bổ ích, chi tiết như vậy thật dễ học. Xin cảm ơn.
Bạn Vuathongtin có thể viết thêm cách tạo Sup/Form (giống như sup/form trong access đó ).
VD : ta có 2 tables : tbhoadon ; và tbhoadonchitiet , có quan hệ "1- nhiều" qua trường "txtSoHoaDon"
- tbhoadon gồm các trường : txtSoHoaDon, cbMaKhach, txtDiaChi, txtMaSoThue, ....
- tbhoadonchitiet gồm các trường : txtSoHoaDon, cbMaHang, txtSoLuong, txtDonGia, txtThanhTien.....
Vậy ta tạo Form và các chức năng thêm mới, lưu, xoá.... như thế nào?
Mong được giúp đở chi tiết, xin chân thành cảm ơn.

boy1234
Guru
Guru
Bài viết: 448
Ngày tham gia: T.Hai 13/10/2008 3:12 pm
Đến từ: Dĩ An - Bình Dương
Been thanked: 32 time

Re: Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Gửi bàigửi bởi boy1234 » T.Hai 29/08/2011 5:35 pm

muaphonui_2010 đã viết:Bài này thật bổ ích, chi tiết như vậy thật dễ học. Xin cảm ơn.
Bạn Vuathongtin có thể viết thêm cách tạo Sup/Form (giống như sup/form trong access đó ).
VD : ta có 2 tables : tbhoadon ; và tbhoadonchitiet , có quan hệ "1- nhiều" qua trường "txtSoHoaDon"
- tbhoadon gồm các trường : txtSoHoaDon, cbMaKhach, txtDiaChi, txtMaSoThue, ....
- tbhoadonchitiet gồm các trường : txtSoHoaDon, cbMaHang, txtSoLuong, txtDonGia, txtThanhTien.....
Vậy ta tạo Form và các chức năng thêm mới, lưu, xoá.... như thế nào?
Mong được giúp đở chi tiết, xin chân thành cảm ơn.

Hình như trong VB.Net không có kiểu Main/SubForm như trong Access. :D
Dạo này nghiện honda SS50

Hình đại diện của người dùng
vuathongtin
Điều hành viên
Điều hành viên
Bài viết: 1028
Ngày tham gia: CN 02/05/2010 10:03 pm
Đến từ: Xứ sở DG
Has thanked: 2 time
Been thanked: 105 time
Liên hệ:

Re: Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Gửi bàigửi bởi vuathongtin » T.Hai 29/08/2011 5:47 pm

Vấn đề này bạn thử nghiên cứu về:
+ "thiết lập DataRelation cho 2 datatable"
+ Thực hiện tạo table bằng trình kéo thả Wizard, cái DataSource Wizard j đó (cái đó mình ít dùng nên ko rành )
Bùi Thành Nhân
CNTT-Sở Thông tin & Truyền thông tỉnh Phú Yên
giasulaptrinh.com
Skype:vuathongtin

Hình đại diện của người dùng
chipchip
Thành viên chính thức
Thành viên chính thức
Bài viết: 17
Ngày tham gia: T.Sáu 15/08/2008 8:25 am

Re: Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Gửi bàigửi bởi chipchip » T.Năm 22/12/2011 8:21 pm

Bài viết rất hay dễ hiểu, cảm ơn bạn vuathongtin :)

domfootwear
Thành viên chính thức
Thành viên chính thức
Bài viết: 34
Ngày tham gia: T.Ba 22/06/2010 2:24 pm
Has thanked: 26 time

Re: Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Gửi bàigửi bởi domfootwear » T.Ba 13/08/2013 11:11 am

Anh chị cho em hỏi code để gán datasource vào report

Ví dụ code fill data vào datagrid như sau:

Mã: Chọn hết

 da = New OleDbDataAdapter("Select tendangnhap as [Tên Đăng Nhập], matkhau as [Mật Khẩu] from DANGNHAP", con)
        dt.Clear()
        da.Fill(dt)
        DataGridView1.DataSource = dt


Nhưng gán vào report như thế nào ạ, em đang học VB.NET 2012
Xin chân thành cảm ơn

Hình đại diện của người dùng
vuathongtin
Điều hành viên
Điều hành viên
Bài viết: 1028
Ngày tham gia: CN 02/05/2010 10:03 pm
Đến từ: Xứ sở DG
Has thanked: 2 time
Been thanked: 105 time
Liên hệ:

Re: Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Gửi bàigửi bởi vuathongtin » T.Ba 13/08/2013 2:02 pm

  1. da = New OleDbDataAdapter("Select tendangnhap as [Tên Đăng Nhập], matkhau as [Mật Khẩu] from DANGNHAP", con)
  2. dt.Clear()
  3. da.Fill(dt)
  4. IF dt.Rows.Count>0 THEN
  5. Dim myreport As New rpt_baocao
  6.   myreport.SetDataSource(dt)
  7. Dim f As New  frm_report
  8.  f.CrystalReportViewer1.ReportSource = myreport
  9.  f.Show()
  10. END IF
  11.  
Bùi Thành Nhân
CNTT-Sở Thông tin & Truyền thông tỉnh Phú Yên
giasulaptrinh.com
Skype:vuathongtin

domfootwear
Thành viên chính thức
Thành viên chính thức
Bài viết: 34
Ngày tham gia: T.Ba 22/06/2010 2:24 pm
Has thanked: 26 time

Re: Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Gửi bàigửi bởi domfootwear » T.Ba 13/08/2013 4:29 pm

Xin cảm ơn bạn. Cho mình hỏi phần khai báo biến bên dưới mình thay thế như thế nào cho hợp lý.
Dim myreport As New rpt_baocao

Dim f As New frm_report


Xin chân thành cảm ơn.
Xin lỗi vì mình mới mò mẵm cái này được 3 ngày nên có phần hỏi hơi ngu ngơ, bạn thông cảm nhé.

domfootwear
Thành viên chính thức
Thành viên chính thức
Bài viết: 34
Ngày tham gia: T.Ba 22/06/2010 2:24 pm
Has thanked: 26 time

Re: Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Gửi bàigửi bởi domfootwear » T.Năm 22/08/2013 4:14 pm

vuathongtin đã viết:
  1. da = New OleDbDataAdapter("Select tendangnhap as [Tên Đăng Nhập], matkhau as [Mật Khẩu] from DANGNHAP", con)
  2. dt.Clear()
  3. da.Fill(dt)
  4. IF dt.Rows.Count>0 THEN
  5. Dim myreport As New rpt_baocao
  6.   myreport.SetDataSource(dt)
  7. Dim f As New  frm_report
  8.  f.CrystalReportViewer1.ReportSource = myreport
  9.  f.Show()
  10. END IF
  11.  

Mình không có dùng CrystalReport mà dùng ReportViewer ở VB.Net 2012. Mong bạn hướng dẫn giúp.
Xin cảm ơn.

thkd09
Thành viên chính thức
Thành viên chính thức
Bài viết: 15
Ngày tham gia: T.Bảy 29/08/2009 10:27 pm
Has thanked: 12 time
Liên hệ:

Re: Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Gửi bàigửi bởi thkd09 » T.Hai 20/01/2014 10:58 pm

Các bác cho em hỏi tý. Em làm như bài hướng dẫn. Lúc chạy chương trình thấy add data ngon lành, nhưng khi thoát chương trình và chạy lại thì không thấy dữ liệu mình add lúc nãy đâu?

Hình đại diện của người dùng
vuathongtin
Điều hành viên
Điều hành viên
Bài viết: 1028
Ngày tham gia: CN 02/05/2010 10:03 pm
Đến từ: Xứ sở DG
Has thanked: 2 time
Been thanked: 105 time
Liên hệ:

Re: Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Gửi bàigửi bởi vuathongtin » T.Ba 21/01/2014 8:31 am

Em xem lại đường dẫn đến data, nếu nó trỏ đến data nằm trong Bin thì mới chính xác. Em liên hệ qua nick yahoo: vuathongtin để a chỉnh lại cho.
Bùi Thành Nhân
CNTT-Sở Thông tin & Truyền thông tỉnh Phú Yên
giasulaptrinh.com
Skype:vuathongtin

thkd09
Thành viên chính thức
Thành viên chính thức
Bài viết: 15
Ngày tham gia: T.Bảy 29/08/2009 10:27 pm
Has thanked: 12 time
Liên hệ:

Re: Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Gửi bàigửi bởi thkd09 » T.Ba 21/01/2014 10:10 pm

@vuathongtin: Bác cho em hỏi cái Application.StartupPath là nó chỉ vào đâu. Lúc đầu em dùng cái này thì bị lỗi như đó, sau khi em đọc bài trả lời của bác em sửa lại đường dẫn cụ thể vào bin\debug thì ok.

Hình đại diện của người dùng
xuanha
Guru
Guru
Bài viết: 1222
Ngày tham gia: T.Năm 19/08/2010 4:25 pm
Đến từ: Ban Tổ chức Thành uỷ Hưng Yên, tỉnh Hưng Yên
Has thanked: 13 time
Been thanked: 380 time
Liên hệ:

Re: Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Gửi bàigửi bởi xuanha » T.Năm 23/01/2014 10:20 am

thkd09 đã viết:@vuathongtin: Bác cho em hỏi cái Application.StartupPath là nó chỉ vào đâu. Lúc đầu em dùng cái này thì bị lỗi như đó, sau khi em đọc bài trả lời của bác em sửa lại đường dẫn cụ thể vào bin\debug thì ok.


Application.StartupPath chính là lấy đường dẫn chứa ứng dụng của bạn. Khi bạn đang làm chương trình thi nó sẽ chỉ vào ...\bin\debug
Kiểm phiếu Đại hội Đoàn, Đại hội Đảng
http://caulacbovb.com/forum/viewtopic.php?t=23599

Hình đại diện của người dùng
vuathongtin
Điều hành viên
Điều hành viên
Bài viết: 1028
Ngày tham gia: CN 02/05/2010 10:03 pm
Đến từ: Xứ sở DG
Has thanked: 2 time
Been thanked: 105 time
Liên hệ:

Re: Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Gửi bàigửi bởi vuathongtin » T.Sáu 24/01/2014 3:32 pm

Application.StartupPath : nói nôm na là chỉ thẳng đến vị trí file EXE (..\bin\debug) sau khi build project
Bùi Thành Nhân
CNTT-Sở Thông tin & Truyền thông tỉnh Phú Yên
giasulaptrinh.com
Skype:vuathongtin

Hình đại diện của người dùng
deptraithongminh
Thành viên tích cực
Thành viên tích cực
Bài viết: 143
Ngày tham gia: T.Ba 02/07/2013 4:58 pm
Đến từ: TPHCM
Has thanked: 17 time
Been thanked: 1 time

Re: Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Gửi bàigửi bởi deptraithongminh » T.Bảy 22/03/2014 10:25 am

sao mình làm đoạn code này để load CSDL vào DataGridView ko được ?

Mã: Chọn hết

Dim con As New OleDbConnection
    Dim da As New OleDbDataAdapter
    Dim dt As New DataTable
Sub KetNoi()
        con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\C:\Users\Martin\Desktop\CongViec\MayTinhHoaHoc\Data\HoaHoc.accdb;Persist Security Info=False;" & Application.StartupPath & "C:\Users\Martin\Desktop\CongViec\MayTinhHoaHoc\MayTinhHoaHoc\bin\Debug\MayTinhHoaHoc.exe"
        con.Open()
        'KiemTraKetNoi
        If con.State = ConnectionState.Connecting Then
            StatusKQ.Text = "Đang kết nối ..."
        ElseIf con.State = ConnectionState.Broken Then
            StatusKQ.Text = "Không thể kết nối đến CSDL"
        ElseIf con.State = ConnectionState.Open Then
            StatusKQ.Text = "Kết nối thành công đến CSDL"
        End If
        da = New OleDbDataAdapter("Select * from ChatHoaHoc", con)
        da.Fill(dt)
        DataGridView1.DataSource = dt
end sub

Hình đại diện của người dùng
deptraithongminh
Thành viên tích cực
Thành viên tích cực
Bài viết: 143
Ngày tham gia: T.Ba 02/07/2013 4:58 pm
Đến từ: TPHCM
Has thanked: 17 time
Been thanked: 1 time

Re: Căn Bản Về Kết Nối CSDL trong VB.NET bằng ADO.NET

Gửi bàigửi bởi deptraithongminh » T.Ba 20/05/2014 11:54 am

bạn vuathongtin ơi sao mình làm delete như bạn mà lúc delete nó báo lỗi tại dòng "da.Update(dt)" ?
sửa giúp mình với


Quay về “[.NET] Bài viết hướng dẫn”

Đ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