• 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

VB.Net và Access Database

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

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

nguyenboi
Bài viết: 4
Ngày tham gia: T.Hai 24/08/2009 6:28 pm

Re: VB.Net và Access Database

Gửi bàigửi bởi nguyenboi » T.Năm 15/10/2009 4:48 pm

Các anh cho em hỏi tí.Với bài Accesssample của anh anhtuyenbk thì mình thay csdl bằng SQL SERVER 2000 thì có được không.
Em có làm thử :thay csdl và chuổi kết nối bằng SQL ,cơ sở dữ liệu đã hiển thị lên datagridview nhưng khi insert vào thị nó báo lỗi ở dòng update
Mong được giúp đở.



magicvotinh
Bài viết: 2
Ngày tham gia: T.Sáu 16/10/2009 12:40 pm

Re: VB.Net và Access Database

Gửi bàigửi bởi magicvotinh » T.Sáu 16/10/2009 1:00 pm

moi ng giup em voi, em them 1 dong vao csdl access thi bi bao loi: "Column 'stt_kh' does not belong to table", em da danh ten cot va ten bang dung het roi, moi ng xem giup doan code cua em voi, em k bit sai cho nao nua

Private Sub btthem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btthem.Click

Dim row As DataRow = table.NewRow()
row("stt_kh") = STT_KHTextBox.Text
row("ten_kh_qc") = TEN_KH_QCTextBox.Text
row("dchi_khqc") = DCHI_KHQCTextBox.Text
row("sdt_khqc") = SDT_KHQCTextBox.Text
dg1.DataSource = table
Dim commandInsert As New OleDbCommand()
commandInsert.Connection = con
commandInsert.CommandType = CommandType.Text
commandInsert.CommandText = "Insert Into Khach_QC Values (@stt_kh,@Ten_kh_qc,@dchi_khqc,@sdt_khqc)"
commandInsert.Parameters.Add("@stt_kh", OleDbType.VarChar, 5, "stt_kh")
commandInsert.Parameters.Add("@ten_kh_qc", OleDbType.VarChar, 40, "Ten_kh_qc")
commandInsert.Parameters.Add("@dchi_khqc", OleDbType.VarChar, 100, "dchi_khqc")
commandInsert.Parameters.Add("@sdt_khqc", OleDbType.VarChar, 40, "sdt_khqc")
da.InsertCommand = commandInsert
da.Update(table)
End Sub

Hình đại diện của người dùng
anhtuyenbk
Guru
Guru
Bài viết: 1311
Ngày tham gia: T.Năm 22/09/2005 4:12 pm
Đến từ: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 time

Re: VB.Net và Access Database

Gửi bàigửi bởi anhtuyenbk » T.Sáu 16/10/2009 5:07 pm

Gõ chữ có dấu nha bạn.

Mã: Chọn hết

  1. Dim row As DataRow = table.NewRow()

Thử cho cái table này hiện lên datagridview xem nó có hiển thị ra cái gì ko?
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang

magicvotinh
Bài viết: 2
Ngày tham gia: T.Sáu 16/10/2009 12:40 pm

Re: VB.Net và Access Database

Gửi bàigửi bởi magicvotinh » T.Bảy 17/10/2009 7:08 pm

em đã làm thử, và cái bảng dữ liệu vẫn show ra datagridview, nhưng cột đầu tiên lại không có dữ liệu, những cột khác xem thấy dữ liệu bình thường, đó là cột "stt_kh", trong file access em chọn kiểu dữ liệu là auto number

Hình đại diện của người dùng
anhtuyenbk
Guru
Guru
Bài viết: 1311
Ngày tham gia: T.Năm 22/09/2005 4:12 pm
Đến từ: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 time

Re: VB.Net và Access Database

Gửi bàigửi bởi anhtuyenbk » T.Bảy 17/10/2009 9:47 pm

magicvotinh đã viết:em đã làm thử, và cái bảng dữ liệu vẫn show ra datagridview, nhưng cột đầu tiên lại không có dữ liệu, những cột khác xem thấy dữ liệu bình thường, đó là cột "stt_kh", trong file access em chọn kiểu dữ liệu là auto number

vậy lỗi có thể do câu query select của bạn.
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang

vb123
Bài viết: 1
Ngày tham gia: T.Hai 04/01/2010 2:19 pm

Re: VB.Net và Access Database

Gửi bàigửi bởi vb123 » T.Hai 04/01/2010 2:53 pm

Em muốn hỏi về cách search 1 row trong datagrid bằng "ID" rồi hiện row đó ra như thế nào a?

thuyan1990
Thành viên trung thành
Thành viên trung thành
Bài viết: 299
Ngày tham gia: T.Bảy 02/01/2010 10:23 am
Has thanked: 20 time
Been thanked: 2 time

Re: VB.Net và Access Database

Gửi bàigửi bởi thuyan1990 » T.Sáu 22/01/2010 11:33 pm

anhtuyenbk đã viết: 4. Command ( Lệnh ): command.CommandType = CommandType.Text  'Loại lệnh sử dụng là Text hay là một query trong access        command.CommandText = "Select * From DanhsachSV" 'Lệnh cần làm với Database 


Bạn có thể nó rõ phần này 1 chút không bạn ví dụ :
"CommandType.Text Loại lệnh sử dụng là Text" text là sao bạn có phải mình gõ câu SQL trực tiếp vào không??
Còn nếu sử dụng query là như thế nào bạn cho mình xin cái ví dụ với. thanks!

quanghan
Bài viết: 9
Ngày tham gia: T.Tư 13/01/2010 1:42 pm

Re: VB.Net và Access Database

Gửi bàigửi bởi quanghan » T.Bảy 23/01/2010 9:45 am

Cho mình hỏi 1 chút, mình đang tạo ra chương trình nhập dữ liệu, và có 2 chỗ để nhập. Khi mình bấm nút commit2 thì nó sẽ add một record vào table có sẵn đồng thời tạo ra 1 table mới trong file mdb của mình, tên của table mới sẽ được lấy từ 1 giá trị trong table cũ , và sau khi nhấn nút commit1 thì chương trình sẽ lấy text ở các textbox để điền vào table mới tạo.
Đây là đoạn code cho 2 nút commit ( các biến mình đã khai báo ở public class)

Mã: Chọn hết

    Private Sub Commit2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Commit2.Click
        Dim cb As New OleDb.OleDbCommandBuilder(da)
        Dim newrows As DataRow
        Dim newtable As New DataTable
        Dim column1, column2 As New DataColumn
        newrows = ds.Tables("cards").NewRow()
        newrows.Item(1) = "Bài " & (maxrows + 1)
        newrows.Item(2) = Sample.Text
        ds.Tables("Cards").Rows.Add(newrows)
        da.Update(ds, "Cards")
        MsgBox("Đã thêm bài mới")
        maxrows = maxrows + 1
        ' Chonbai.Items.Add(ds.Tables("cards").Rows(maxrows - 1).Item(1))
        Commit2.Enabled = False
        Add2.Enabled = True
        Delete2.Enabled = True
        Update2.Enabled = True
        newtable.TableName = ds.Tables("cards").Rows(maxrows - 1).Item(1)
        MsgBox(newtable.TableName)
        column1.ColumnName = "Tiếng Việt"
        column2.ColumnName = "Tiếng Nhật"
        newtable.Columns.Add(column1)
        newtable.Columns.Add(column2)
        ds.Tables.Add(newtable)
        MsgBox(newtable.TableName)
          End Sub

code cho nút commit1

Mã: Chọn hết

 Private Sub commit1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles commit1.Click
        Dim cb As New OleDb.OleDbCommandBuilder(da1)
        Dim newrows1 As DataRow
        da = New OleDb.OleDbDataAdapter(sql, con)
        sql = "select*from cards"
        con.Open()
        da.Fill(ds, "Cards")
        con.Close()
        sql1 = "select*from " & ds.Tables("cards").Rows(maxrows - 1).Item(1)
        con.ConnectionString = "provider = microsoft.jet.oledb.4.0;data source = d:\detai.mdb"
        con1.ConnectionString = "provider = microsoft.jet.oledb.4.0;data source = d:\detai.mdb"
        da1 = New OleDb.OleDbDataAdapter(sql1, con1)
        newtable.TableName = ds.Tables("cards").Rows(maxrows - 1).Item(1)
        con.Open()
        da.Fill(ds, newtable.TableName)
        con.Close()
        newrows1 = ds.Tables(newtable.TableName).NewRow()
        newrows1.Item("Tiếng Việt") = Viet.Text
        newrows1.Item("Tiếng Nhật") = Nhat.Text
        ds.Tables(newtable.TableName).Rows.Add(newrows1)
        MsgBox("đã add card thành công")
        Label1.Text = ds.Tables("cards").Rows(maxrows - 1).Item(1)
        da1.Update(ds, ds.Tables("cards").Rows(maxrows - 1).Item(1))
    End Sub

nhưng khi chạy chương trình thì nó báo lỗi Update requires a valid InsertCommand when passed DataRow collection with new rows.
Mình đã tham khảo 1 số chỗ, người ta đều cho rằng thiếu lệnh insert, nhưng mình đã sử dụng commandbuilder rồi, mong các bạn sửa giúp

Hình đại diện của người dùng
xuanquy_th
Guru
Guru
Bài viết: 798
Ngày tham gia: T.Ba 05/08/2008 9:15 pm
Đến từ: Thanh Hoá
Has thanked: 1 time
Been thanked: 10 time
Liên hệ:

Re: VB.Net và Access Database

Gửi bàigửi bởi xuanquy_th » T.Bảy 23/01/2010 10:27 am

Cập nhật đòi một InsertCommand hợp lệ khi cập nhật tập hợp các DataRow mới.
nhưng khi chạy chương trình thì nó báo lỗi Update requires a valid InsertCommand when passed DataRow collection with new rows.
Mình đã tham khảo 1 số chỗ, người ta đều cho rằng thiếu lệnh insert, nhưng mình đã sử dụng commandbuilder rồi, mong các bạn sửa giúp

Lổi dòng nào bạn ơi
Khi lổi bạn đã thử kiểm tra lại xem Sql trong

da.SelectCommand.CommandText
hay
dal.SelectCommand.CommandText

Xem có đúng là đang From từ bảng cần cập nhật không?
Khi Chúa Trời đóng cánh cửa này lại, Ngài sẽ mở một cánh cửa khác cho ta.
Nhưng ta thường nhìn quá lâu vào cánh cửa đã đóng nên không thấy được có một cánh cửa khác đang mở ra cho ta!!!

quanghan
Bài viết: 9
Ngày tham gia: T.Tư 13/01/2010 1:42 pm

Re: VB.Net và Access Database

Gửi bàigửi bởi quanghan » T.Bảy 23/01/2010 12:01 pm

đoạn mã commit2 chạy tốt, còn đoạn commit1 thì báo lỗi ở dòng da1.update ấy ( dòng cuối)

Hình đại diện của người dùng
xuanquy_th
Guru
Guru
Bài viết: 798
Ngày tham gia: T.Ba 05/08/2008 9:15 pm
Đến từ: Thanh Hoá
Has thanked: 1 time
Been thanked: 10 time
Liên hệ:

Re: VB.Net và Access Database

Gửi bàigửi bởi xuanquy_th » T.Bảy 23/01/2010 1:24 pm

quanghan đã viết:đoạn mã commit2 chạy tốt, còn đoạn commit1 thì báo lỗi ở dòng da1.update ấy ( dòng cuối)

Còn tiếc j cái lổi đó nữa mà không đưa nó lên đây luôn đi.
Nói vậy quá bằng người đánh đố nhau.
Khi Chúa Trời đóng cánh cửa này lại, Ngài sẽ mở một cánh cửa khác cho ta.
Nhưng ta thường nhìn quá lâu vào cánh cửa đã đóng nên không thấy được có một cánh cửa khác đang mở ra cho ta!!!

quanghan
Bài viết: 9
Ngày tham gia: T.Tư 13/01/2010 1:42 pm

Re: VB.Net và Access Database

Gửi bàigửi bởi quanghan » T.Bảy 23/01/2010 2:10 pm

ý tưởng chương trình em là thế này
em có sẵn 1 bản cơ sở dữ liệu có 2 cột " lesson " và " sample "
ví dụ: record1 : cột 1: Bài 1 , cột 2: Tôi thích đi xe lửa
em nhấn nút add2, sau đó điền vào ô text sample rồi nhấn commit2, thì chương trình sẽ làm các việc sau:
điền nội dung trong ô text vào cột sample của record tiếp theo, tự động điền số bài ( vd: Bài 2 ) vào cột lesson
đồng thời chương trình sẽ tạo 1 table mới trong file cơ sở dữ liệu đó( d:\detai.mdb), tên của table mới sẽ lấy từ cột "lesson" của bài cao nhất
ví dụ add thêm bài 2, thì chương trình sẽ tạo ra 1 table mang tên " bài 2"
Bây giờ ta nhấn nút add1, điền 1 từ tiếng việt vào textbox viet, điền 1 từ tiếng nhật vào textbox nhat. Thì "Tiếng Việt" và "Tiếng Nhật" chính là 2 column của table mới naỳ .
em xin gởi lên project đó cho anh em xem và sửa lỗi giúp em. Tuy còn quá nhiều lỗi, nhưng em mong cách anh chú ý tới lỗi ở phần update như đã nói ở trên
Tập tin đính kèm
detaichinh.rar
(123.53 KiB) Đã tải 679 lần

Hình đại diện của người dùng
anhtuyenbk
Guru
Guru
Bài viết: 1311
Ngày tham gia: T.Năm 22/09/2005 4:12 pm
Đến từ: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 time

Re: VB.Net và Access Database

Gửi bàigửi bởi anhtuyenbk » T.Bảy 23/01/2010 2:47 pm

thuyan1990 đã viết:Bạn có thể nó rõ phần này 1 chút không bạn ví dụ :
"CommandType.Text Loại lệnh sử dụng là Text" text là sao bạn có phải mình gõ câu SQL trực tiếp vào không??
Còn nếu sử dụng query là như thế nào bạn cho mình xin cái ví dụ với. thanks!

Text là câu sql, từ trên xuống dưới bài đều có ví dụ. Query chỉ là tên gọi câu sql trong access mà thôi.
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang

thuyan1990
Thành viên trung thành
Thành viên trung thành
Bài viết: 299
Ngày tham gia: T.Bảy 02/01/2010 10:23 am
Has thanked: 20 time
Been thanked: 2 time

Re: VB.Net và Access Database

Gửi bàigửi bởi thuyan1990 » T.Bảy 23/01/2010 3:50 pm

Text là câu sql, từ trên xuống dưới bài đều có ví dụ. Query chỉ là tên gọi câu sql trong access mà thôi.[/quote]
Cảm ơn bạn rất nhiều mình thì biết SQL và QUERY nhưng mình không hiểu là câu "Loại lệnh sử dụng là Text hay là một query trong access"
Sẳn đây bạn cho mình hỏi

Ngoài ra còn các hình thức khởi tạo khác, nhưng chỉ được xài với các loại command thuộc dạng Select và tùy theo cách mà chúng ta cảm thấy quen thuộc nhất
Mã: Chọn tất cả

  1. OleDbDataAdapter (OleDbCommand)  
  2. OleDbDataAdapter (StringSelect, OleDbConnection)    
  3. OleDbDataAdapter (StringSelect, StringConnect)  
  4.  


Tại mình thấy ở trên thì câu lệnh cũng có SELECT mà ?? Có gì khó chịu xin bạn thông cảm thật ra thì code của bạn hoạt động rất tốt nhưng do mình chưa biết nhiều về nó (mới biết khoảng chưa đầy 1 tháng về .NET thông qua diễn đàn này) vì vậy mình muốn tìm hiểu kỷ hơn về các câu lệnh này!
thanks

Hình đại diện của người dùng
anhtuyenbk
Guru
Guru
Bài viết: 1311
Ngày tham gia: T.Năm 22/09/2005 4:12 pm
Đến từ: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 time

Re: VB.Net và Access Database

Gửi bàigửi bởi anhtuyenbk » T.Bảy 23/01/2010 3:56 pm

  1. OleDbDataAdapter (OleDbCommand)  
  2. OleDbDataAdapter (StringSelect, OleDbConnection)    
  3. OleDbDataAdapter (StringSelect, StringConnect)  

Nhìn vào tham số đầu vào thì bạn biết tại sao mình lại nói nó chỉ nhận lệnh thuộc loại Select.
Chỉ cần bạn đọc kỹ các ví dụ mình đưa là bạn sẽ hiểu tại sao.
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang

thuyan1990
Thành viên trung thành
Thành viên trung thành
Bài viết: 299
Ngày tham gia: T.Bảy 02/01/2010 10:23 am
Has thanked: 20 time
Been thanked: 2 time

Re: VB.Net và Access Database

Gửi bàigửi bởi thuyan1990 » T.Bảy 23/01/2010 4:32 pm

ah giờ thì mình đã hiểu cái dòng đó rồi cảm ơn tiếp theo là tới dòng này "Dim dt As New DataTable("DanhsachSV")" Tại sao mình bỏ hẳn cái DanhsachSV hay là mình điền đại 1 cái gì vào cũng đc
Ví dụ
Dim dt As New DataTable()
Dim dt As New DataTable("fdskjfdsh")

Có phải cái đó là mình đặt tên cho cái DATATABLE ko bạn?

Hình đại diện của người dùng
anhtuyenbk
Guru
Guru
Bài viết: 1311
Ngày tham gia: T.Năm 22/09/2005 4:12 pm
Đến từ: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 time

Re: VB.Net và Access Database

Gửi bàigửi bởi anhtuyenbk » T.Bảy 23/01/2010 8:04 pm

vì nó thiết kế là như thế, bạn muốn đặt hay ko đặt cũng được.
Nếu bạn muốn hiểu rõ hơn cách sử dụng các object này, bạn đọc thêm ở MSDN nhé.
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang

thuyan1990
Thành viên trung thành
Thành viên trung thành
Bài viết: 299
Ngày tham gia: T.Bảy 02/01/2010 10:23 am
Has thanked: 20 time
Been thanked: 2 time

Re: VB.Net và Access Database

Gửi bàigửi bởi thuyan1990 » T.Bảy 23/01/2010 10:15 pm

  1. Imports System.Data
  2. Imports System.Data.OleDb
  3.  
  4. Public Class Form1
  5.     Dim con As OleDbConnection
  6.     Dim dt As New DataTable("DanhsachSV") 'tao DATATABLE voi ten la DanhSachsv
  7.     Dim da As New OleDbDataAdapter()
  8.  
  9.  
  10.     Private Sub btThem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btThem.Click
  11.         Dim dong As DataRow = dt.NewRow()
  12.         dong("Name") = txtHoTen.Text
  13.         dong("Address") = txtDiaChi.Text
  14.         dong("Phone") = txtDienThoai.Text
  15.         dong("Email") = txtEmail.Text
  16.         dt.Rows.Add(dong)
  17.         GirdData.DataSource = dt
  18.         Dim commandThem As New OleDbCommand()
  19.         commandThem.Connection = con
  20.         commandThem.CommandType = CommandType.Text
  21.         commandThem.CommandText = "INSERT INTO DanhsachSV VALUES (@HoTen, @DiaChi, @DienThoai, @Email)"
  22.         commandThem.Parameters.Add("@HoTen", OleDbType.Numeric, 50, "Name")
  23.         commandThem.Parameters.Add("@DiaChi", OleDbType.VarChar, 50, "Address")
  24.         commandThem.Parameters.Add("@DienThoai", OleDbType.VarChar, 15, "Phone")
  25.         commandThem.Parameters.Add("@Email", OleDbType.VarChar, 50, "Email")
  26.         da.InsertCommand = commandThem
  27.         da.Update(dt)
  28.     End Sub
  29. End Class
  30.  


Không hiểu sao chạy tới da.Update(dt) thì báo lỗi Failed to convert parameter value from a String to a Decimal.. Hiện mình đang dùng VS2008
Sửa lần cuối bởi thuyan1990 vào ngày T.Bảy 23/01/2010 10:47 pm với 1 lần sửa.

Hình đại diện của người dùng
duyt11
Bài viết: 3
Ngày tham gia: T.Ba 15/12/2009 7:35 pm

LÀM FORM LOGIN CSDL LÀ ACESS TRONG VB.NET

Gửi bàigửi bởi duyt11 » T.Bảy 23/01/2010 10:27 pm

vậy khi lam form LOGIN của vb.net thì phải làm sao. CSDl là Acess.Nhờ giúp đỡ
Vo Anh Duy
[list=][vbnet][/vbnet][/list]

Hình đại diện của người dùng
vietteiv
Quản trị
Quản trị
Bài viết: 1323
Ngày tham gia: T.Bảy 10/02/2007 12:17 am
Đến từ: Cung cấp giải pháp quản lý doanh nghiệp, dự án, tư vấn xây dựng
Has thanked: 6 time
Been thanked: 71 time
Liên hệ:

Re: VB.Net và Access Database

Gửi bàigửi bởi vietteiv » T.Bảy 23/01/2010 10:33 pm

  1. commandThem.Parameters.Add("@HoTen", OleDbType.Numeric, 50, "Name")

kiểu dữ liệu của field Name là numeric à? vậy xem lại dữ liệu user nhập vào cái txthoten là số hay là chữ.

@duyt11: làm form login thì giống như form thường chứ có khác gì đâu. cũng truy xuất thông tin lưu trong table rồi so sánh với textbox user nhập vào. khớp đúng thì login, ko đúng thì msgbox error.


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.2 khách