• 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

ADODB với Access, DataGrid, DataReport, DE, DAO

Chuyên mục thảo luận các vấn đề liên quan đến ứng dụng quản lý và cơ sở dữ liệu

Điều hành viên: Điều hành

tony86
Bài viết: 7
Ngày tham gia: CN 06/09/2009 12:33 pm

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi tony86 » T.Bảy 27/02/2010 7:33 am

;;) cám ơn chú, nhưng mà ý của cháu không phải thế, để cháu ss vài tấm mô tả :"> :D



Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

chuyển nhiều file xls thành table trong một file mdb

Gửi bàigửi bởi truongphu » T.Sáu 12/03/2010 2:26 pm

Nhân câu hỏi của bạn pmhhet: muốn chuyển nhiều file xls thành table trong một file mdb.
Tôi viết bài sau để phục vụ nhu cầu trên

  1. ' Câ`n Command1 và File1. Code: truongphu
  2.  
  3. Dim i% ' biê'n chung
  4.  
  5. Private Sub Command1_Click()
  6. For i = 0 To File1.ListCount - 1
  7.     If UCase(Right(File1.List(i), 3)) = "XLS" Then
  8.         ExceltoAccess App.Path & "\" & File1.List(i), App.Path & "\Tên File Access.mdb"
  9.     End If
  10. Next
  11. MsgBox "Ðã Xong"
  12. End Sub
  13.  
  14. Private Sub ExceltoAccess(ExcelPath$, AccessPath$, Optional ByVal SheetName$ = "Sheet1!")
  15. Set objAccess = CreateObject("Access.Application")
  16. If Dir(AccessPath$) = Empty Then
  17.     objAccess.NewCurrentDatabase AccessPath$
  18. Else
  19.     objAccess.OpenCurrentDatabase AccessPath$
  20. End If
  21. Dim TableName$: TableName = GetNameOfFileName(File1.List(i))
  22. objAccess.DoCmd.TransferSpreadsheet 0, 8, TableName, ExcelPath$, True, SheetName
  23. End Sub
  24.  
  25. Public Function GetNameOfFileName(ByVal sFileName As String) As String
  26. GetNameOfFileName = Left(sFileName, InStrRev(sFileName, ".") - 1)
  27. End Function
  28.  
Tập tin đính kèm
Chuyên hàng loat XLS thành Table cua MDB.rar
(4.16 KiB) Đã tải 447 lần
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
NXK1138
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 88
Ngày tham gia: T.Sáu 19/03/2010 1:29 pm
Has thanked: 2 time
Been thanked: 2 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi NXK1138 » T.Tư 24/03/2010 6:18 pm

Anh phú ơi giúp em chuyển dữ liệu từ DBF sang MDB với :(
http://www.caulacbovb.com/forum/viewtopic.php?f=7&t=11483
Hãy Sống để không hổ thẹn với lương tâm

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi truongphu » T.Tư 24/03/2010 8:31 pm

Bạn thử nghiên cứu bài nầy xem sao:
Xin hỏi về cách kết nối CSDL giữa VB và Foxpro
viewtopic.php?f=7&t=8421&p=53730&hilit=adodb+v%C3%A0+DBF#p52774
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
NXK1138
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 88
Ngày tham gia: T.Sáu 19/03/2010 1:29 pm
Has thanked: 2 time
Been thanked: 2 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi NXK1138 » T.Năm 25/03/2010 8:25 am

Thành công rồi :)) Mấy hôm nay buồn phiền vì mãi không làm được ;)
Em xin chân thành cảm ơn anh Phú :x
Hãy Sống để không hổ thẹn với lương tâm

eli
Bài viết: 1
Ngày tham gia: T.Hai 29/03/2010 9:20 pm

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi eli » T.Hai 29/03/2010 9:41 pm

chú oi, giúp cháu vấn đề này với ! chau co 1 bang du lieu gom diem cua nhieu mon hoc cua nhieu ki`và 1 bang Monhoc (mamh, tenmh, ki`học, dvht). bay gio cháu muốn truy vấn và tính điểm trung bình cua ki` hoc thứ x nào đó thì lam thế nào được ạ. Cháu mới tập tành học vb,sql nên ko biet xử lý thế nào. Cảm ơn chú

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi truongphu » T.Ba 30/03/2010 8:17 am

eli đã viết:1 bang du lieu gom diem cua nhieu mon hoc cua nhieu ki`và 1 bang Monhoc (mamh, tenmh, ki`học, dvht).


Bảng dữ liệu phức tạp tôi chưa biết cách xây dựng và câu lệnh
sau đây là code tính điểm TB HK 1 và 2 đơn giản, bạn có thể tham khảo để viết lại phù hợp yêu cầu riêng của mình:

  1. Dim con As New Connection
  2. Dim rec As New Recordset
  3.  
  4. Private Sub Command1_Click()
  5. If rec.State = 1 Then rec.Close
  6. rec.Open "Select MaSV, TenSV, (Toan1 + Ly1 + Hoa1)/3 As ÐTB1 From Table1"
  7. DataGrid1.ReBind
  8. End Sub
  9.  
  10. Private Sub Command2_Click()
  11. If rec.State = 1 Then rec.Close
  12. rec.Open "Select MaSV, TenSV, (Toan2 + Ly2 + Hoa2)/3 As ÐTB2 From Table1"
  13. DataGrid1.ReBind
  14. End Sub
  15.  
  16. Private Sub Form_Load()
  17. con.CursorLocation = adUseClient
  18. con.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\db1.mdb"
  19. rec.Open "Select * From Table1", con, 3, 3
  20. Set DataGrid1.DataSource = rec
  21. End Sub
  22.  
Tập tin đính kèm
Tinh Ðiêm TB.rar
(9.2 KiB) Đã tải 328 lần
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Kết nối và đọc dữ liệu *.CSV

Gửi bàigửi bởi truongphu » T.Ba 06/04/2010 8:59 am

Kết nối và đọc dữ liệu *.CSV

Xem chi tiết tại:
viewtopic.php?f=9&t=11730&p=72366#p72366
Tập tin đính kèm
Ðoc file CSV.rar
(1.94 KiB) Đã tải 648 lần
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

mr.black_and_white
Bài viết: 5
Ngày tham gia: T.Hai 12/04/2010 8:17 pm

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi mr.black_and_white » T.Ba 13/04/2010 2:46 pm

Option Explicit
Private Sub cmdCancel_Click()
If MsgBox("B¹n cã thËt sù muèn tho¸t kh«ng", vbQuestion + vbYesNo, "Chó ý") = vbNo Then
Exit Sub
Else
Unload Me
End If
End Sub
Private Sub cmdOK_Click()
'check for correct password
If txtusername = "" Then
MsgBox "B¹n ch­a nhËp username !"
Exit Sub
ElseIf txtpassword = "" Then
MsgBox "B¹n ch­a nhËp PassWord"
Exit Sub
End If
'frmMainForm.Show
'place code to here to pass the
'success to the calling sub
'setting a global var is the easiest
Me.Hide
If Rec.State = 1 Then Rec.Close
Rec.Open "SELECT * FROM Users", Conn, 3, 3
Do While Not Rec.EOF
If Rec!UserName = Text1 And Rec!Password = Text2 Then
frmMainForm.Show
UN = Text1
Unload Me
Exit Sub
End If
Rec.MoveNext
Loop
MsgBox "Sai UserName hay Password"
End Sub
End Sub

Private Sub Form_Load()
Unload frmdoi_pass
Conn.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\qldiem.mdb"
End Sub

Bác truongphu giúp em đoạn này với.
em làm theo cái code mẫu của bác về làm cái login.
khi f5 thì nó báo lỗi ở dòng: Conn.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\qldiem.mdb" và dòng: ec.State = 1 Then Rec.Close.
em chẳng hiểu nó sai ntn nữa. mong bác giúp đỡ

mr.black_and_white
Bài viết: 5
Ngày tham gia: T.Hai 12/04/2010 8:17 pm

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi mr.black_and_white » T.Ba 13/04/2010 2:50 pm

bác truongphu có thể cho em xin nick yahoo được ko ạ! em có mấy vấn đề cần hỏi bác trực tiếp. mong bác giúp đỡ

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi truongphu » T.Ba 13/04/2010 3:33 pm

mr.black_and_white đã viết:khi f5 thì nó báo lỗi ở dòng:....


bạn phải cho biết nội dung lỗi chứ
chỉ cho biết dòng lỗi thì tôi cũng chịu!

đành đoán vậy;
Tôi có khai báo 2 đối tượng Public Conn và Rec ở Module, có lẽ bạn bỏ module.
Ngoài ra nhớ chèn MS activeX data object 2.8 library

Hay nhất là bạn phải tự mình so với code mẫu chứ, nếu bạn nào cũng ý kiến về bài viết tham khảo của tôi thì tôi ốm chết :-?

mr.black_and_white đã viết:em xin nick yahoo được ko ạ!

tôi không có
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi truongphu » T.Ba 13/04/2010 9:52 pm

gửi bởi tamky » Hôm nay 10:16 am

Cho e hõi, có chương trình vb đơn giản nào, chỉ cần nhập sản phẩm vào (gồm tên sp, nhà cung cấp, giá sĩ, giá lẽ), sau đó chương trình chính chỉ có nhiệm vụ search sản phẩm mình cần tìm .


  1. Dim conn As New Connection
  2. Dim Rec As New Recordset
  3.  
  4. Private Sub Form_Load()
  5. conn.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\db1.mdb"
  6. End Sub
  7.  
  8. Private Sub Text1_Change()
  9. If Text1 = "" Then
  10.     Text2.Visible = False
  11.     Exit Sub
  12. Else
  13.     Text2 = ""
  14.     If Rec.State = 1 Then Rec.Close
  15.     Rec.Open "SELECT * FROM Table1 WHERE TênSP LIKE '" & Text1 & "%'", conn, 3, 3
  16.     Do While Not Rec.EOF
  17.         Text2 = Text2 & Rec!TênSP & vbCrLf
  18.         Rec.MoveNext
  19.     Loop
  20.     Text2.Visible = True
  21. End If
  22. End Sub
  23.  


Project tham khảo như GooGle
Tập tin đính kèm
Search Products.rar
(8.45 KiB) Đã tải 345 lần
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi truongphu » T.Hai 19/04/2010 11:14 pm

hieuaids đã viết:Trong Data Grid ta có thể sửa , thêm , xóa ngon lành nhưng chỉ có hiệu lực trong phạm vi 1 dòng . Ta thử chọn 2 dòng và Delete thì sẽ báo lỗi (tất nhiên). Vậy có cách nào ta đánh lừa nó không (vẫn xóa được nhưng bằng cách gì gì đó...).


1- DataGrid1, Properties kiểm vào ô cho phép delete
2- Nhấn Ctrl để chọn nhiều dòng trong DataGrid1
2- Xóa hết các dòng đã chọn với code:

  1. Private Sub Command4_Click()
  2. Do Until DataGrid1.SelBookmarks.Count = 0
  3.     rec.Delete
  4. Loop
  5. DataGrid1.ReBind
  6. End Sub
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
NXK1138
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 88
Ngày tham gia: T.Sáu 19/03/2010 1:29 pm
Has thanked: 2 time
Been thanked: 2 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi NXK1138 » T.Ba 20/04/2010 3:44 pm

Anh Phú cho em hỏi là anh có cách nào giảm dung lượng của database Access không ạ?
Chương trình của em dùng VB6 kết hợp database Access thường xuyên ghi và xóa dữ liệu các bảng trong Access nhưng càng ngày dữ liệu càng phình ra. Anh chỉ em cách để không bị phình dữ liệu với ạ!
Hãy Sống để không hổ thẹn với lương tâm

Hình đại diện của người dùng
vietteiv
Quản trị
Quản trị
Bài viết: 1318
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: 69 time
Liên hệ:

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi vietteiv » T.Ba 20/04/2010 3:49 pm

dùng chức năng compact mỗi khi thoát chương trình. code sử dụng có sẵn trong topic này luôn rồi. bạn tìm lại nhé

Hình đại diện của người dùng
NXK1138
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 88
Ngày tham gia: T.Sáu 19/03/2010 1:29 pm
Has thanked: 2 time
Been thanked: 2 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi NXK1138 » T.Ba 27/04/2010 6:06 pm

Anh Phú ơi!
http://www.caulacbovb.com/forum/viewtopic.php?f=9&t=9801&start=0&hilit=compact

Mã: Chọn hết

   
   1. Private  Sub Command2_Click()
   2. Dim AC As New Access.Application
   3. AC.OpenCurrentDatabase App.Path & "\db1.mdb"
   4. AC.SetOption ("Auto Compact"), 1
   5. End Sub


Cái hàm compact của anh thì mỗi khi gọi nó lại open database.
Còn hàm của anh thuongall thì nó lại đổi tên, nếu muốn tên không thay đổi thì phải đổi đi đổi lại bất tiện quá.
Anh có cách nào khác không ạ?
Hãy Sống để không hổ thẹn với lương tâm

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi truongphu » T.Ba 27/04/2010 6:32 pm

Đây là compact dùng 2 activeX khác nhau:
Chuẩn thì chèn MS Jet and Replication Object 2.6 Library
Nhanh thì chèn Microsoft Access 10.0 Object Library.

Thao tác nào, cũng phải mở database, có điều có cho thấy hay không

Tạm dùng hàm:
Public Sub CompactMDB(FilePath As String, Optional ByVal sPassWord As String = vbNullString)

http://www.caulacbovb.com/forum/viewtop ... 84&start=0
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
NXK1138
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 88
Ngày tham gia: T.Sáu 19/03/2010 1:29 pm
Has thanked: 2 time
Been thanked: 2 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi NXK1138 » T.Ba 27/04/2010 7:01 pm

Với hàm: AC.SetOption ("Auto Compact"), 1 khi thực thi Access hỏi ta có mở database không nếu ta chọn cancel thì sẽ gây lỗi cho chương trình.
Cho em hỏi thêm nữa là làm thế nào để đặt password cho file db1.mdb để người khác không thể dùng Access mở CSDL ra đọc nội dung?
Hãy Sống để không hổ thẹn với lương tâm

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi truongphu » T.Ba 27/04/2010 8:15 pm

NXK1138 đã viết:Với hàm: AC.SetOption ("Auto Compact"), 1

Hàm đó ở đâu nhỉ? ... bạn tự mò cũng được mà!

NXK1138 đã viết:làm thế nào để đặt password cho file db1.mdb để người khác không thể dùng Access mở CSDL


1- Gọi MS Access, vd Start\Programs\Microsoft Office\Microsoft Office 2003 nhấn một cái, Access trống hiện ra, bên phải là cột Getting Started, chọn Open, browser tới file mdb cần chọn, nhấn vào file nầy

2- Nút Open có nút chọn nho nhỏ bên phải, nhấn vào nút chọn trên Open, chọn Open Exclusive
3- File được mở, vào Tools\Security\Set Database Password
Tập tin đính kèm
untitled.JPG
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
NXK1138
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 88
Ngày tham gia: T.Sáu 19/03/2010 1:29 pm
Has thanked: 2 time
Been thanked: 2 time

Re: Kết nối CSDL dùng VB,VBA

Gửi bàigửi bởi NXK1138 » T.Tư 28/04/2010 9:41 am

Em cảm ơn đại ca Phú! :D
Cái hàm AC.SetOption ("Auto Compact"), 1 anh viết ở topic này:
http://www.caulacbovb.com/forum/viewtopic.php?f=9&t=9801&start=0&hilit=compact

Mã: Chọn hết

   
   1. Private  Sub Command2_Click()
   2. Dim AC As New Access.Application
   3. AC.OpenCurrentDatabase App.Path & "\db1.mdb"
   4. AC.SetOption ("Auto Compact"), 1
   5. End Sub


Em cho nó vào command khi em xóa dữ liệu trong bảng tạm thì nó open Access nhấn cancel thì báo lỗi chương trình của em nhưng nhờ anh giúp, em đã cho nó vào form_unload thì chạy ngon rồi. Cuối tuần này Hạ Long tổ chức carnaval mời anh ghé thăm!
Hãy Sống để không hổ thẹn với lương tâm


Quay về “Ứng dụng Quản lý và Cơ sở dữ liệu”

Đ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