• 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#

Moderators: tungcan5diop, QUANITGROBEST

nguyenboi
Posts: 4
Joined: Mon 24/08/2009 6:28 pm

Re: VB.Net và Access Database

Postby nguyenboi » Thu 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
Posts: 2
Joined: Fri 16/10/2009 12:40 pm

Re: VB.Net và Access Database

Postby magicvotinh » Fri 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

User avatar
anhtuyenbk
Guru
Guru
Posts: 1311
Joined: Thu 22/09/2005 4:12 pm
Location: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 times

Re: VB.Net và Access Database

Postby anhtuyenbk » Fri 16/10/2009 5:07 pm

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

Code: Select all

  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
Posts: 2
Joined: Fri 16/10/2009 12:40 pm

Re: VB.Net và Access Database

Postby magicvotinh » Sat 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

User avatar
anhtuyenbk
Guru
Guru
Posts: 1311
Joined: Thu 22/09/2005 4:12 pm
Location: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 times

Re: VB.Net và Access Database

Postby anhtuyenbk » Sat 17/10/2009 9:47 pm

magicvotinh wrote: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
Posts: 1
Joined: Mon 04/01/2010 2:19 pm

Re: VB.Net và Access Database

Postby vb123 » Mon 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
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Re: VB.Net và Access Database

Postby thuyan1990 » Fri 22/01/2010 11:33 pm

anhtuyenbk wrote: 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
Posts: 9
Joined: Wed 13/01/2010 1:42 pm

Re: VB.Net và Access Database

Postby quanghan » Sat 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)

Code: Select all

    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

Code: Select all

 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

User avatar
xuanquy_th
Guru
Guru
Posts: 803
Joined: Tue 05/08/2008 9:15 pm
Location: Thanh Hoá
Has thanked: 1 time
Been thanked: 10 times
Contact:

Re: VB.Net và Access Database

Postby xuanquy_th » Sat 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
Posts: 9
Joined: Wed 13/01/2010 1:42 pm

Re: VB.Net và Access Database

Postby quanghan » Sat 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)

User avatar
xuanquy_th
Guru
Guru
Posts: 803
Joined: Tue 05/08/2008 9:15 pm
Location: Thanh Hoá
Has thanked: 1 time
Been thanked: 10 times
Contact:

Re: VB.Net và Access Database

Postby xuanquy_th » Sat 23/01/2010 1:24 pm

quanghan wrote:đ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
Posts: 9
Joined: Wed 13/01/2010 1:42 pm

Re: VB.Net và Access Database

Postby quanghan » Sat 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
Attachments
detaichinh.rar
(123.53 KiB) Downloaded 708 times

User avatar
anhtuyenbk
Guru
Guru
Posts: 1311
Joined: Thu 22/09/2005 4:12 pm
Location: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 times

Re: VB.Net và Access Database

Postby anhtuyenbk » Sat 23/01/2010 2:47 pm

thuyan1990 wrote: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
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Re: VB.Net và Access Database

Postby thuyan1990 » Sat 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

User avatar
anhtuyenbk
Guru
Guru
Posts: 1311
Joined: Thu 22/09/2005 4:12 pm
Location: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 times

Re: VB.Net và Access Database

Postby anhtuyenbk » Sat 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
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Re: VB.Net và Access Database

Postby thuyan1990 » Sat 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?

User avatar
anhtuyenbk
Guru
Guru
Posts: 1311
Joined: Thu 22/09/2005 4:12 pm
Location: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 times

Re: VB.Net và Access Database

Postby anhtuyenbk » Sat 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
Posts: 299
Joined: Sat 02/01/2010 10:23 am
Has thanked: 20 times
Been thanked: 2 times

Re: VB.Net và Access Database

Postby thuyan1990 » Sat 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
Last edited by thuyan1990 on Sat 23/01/2010 10:47 pm, edited 1 time in total.

User avatar
duyt11
Posts: 3
Joined: Tue 15/12/2009 7:35 pm

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

Postby duyt11 » Sat 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]

User avatar
vietteiv
Quản trị
Quản trị
Posts: 1325
Joined: Sat 10/02/2007 12:17 am
Location: 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 times
Been thanked: 71 times
Contact:

Re: VB.Net và Access Database

Postby vietteiv » Sat 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.


Return to “[.NET] Bài viết hướng dẫn”

Who is online

Users browsing this forum: No registered users and 1 guest