• 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

Xin hỏi code nén dữ liệu có password

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

Moderator: Điều hành

hoanganhna
Posts: 4
Joined: Sun 20/09/2009 11:25 am

Xin hỏi code nén dữ liệu có password

Postby hoanganhna » Sat 31/10/2009 10:59 am

Tôi đã dùng VB6 viêt code như sau để Compact and repair database cơ sở dữ liệu Access 2003 nhưng khi chạy thì báo lôi "Not a valid password"

Code: Select all

  1.  
  2.     Dim n, d
  3.     n = App.Path & "\Data1\" & Left(frmLogin.Txttencsdl.Text, 10)
  4.     d = App.Path & "\Data1\Qlxd.mdb"
  5.     kt = FileLen(App.Path & "\Data1\" & Left(frmLogin.Txttencsdl.Text, 10))
  6.     DBEngine.CompactDatabase n, d
  7.     Kill n
  8.     Dim OldName
  9.     Dim NewName
  10.     OldName = d: NewName = n
  11.     Name OldName As NewName
  12.  

Vậy, xin hỏi các bạn cách thêm password như thế nào? Thanks

Code: Select all

  1.  



User avatar
thuongall
Quản trị
Quản trị
Posts: 456
Joined: Wed 26/01/2005 8:05 am
Location: Quê hương Đồng Khởi
Been thanked: 9 times
Contact:

Re: Xin hỏi code nén dữ liệu có password

Postby thuongall » Sat 31/10/2009 11:08 am

Function này mình đang dùng:

Code: Select all

  1. Public Function CompactDb(strOrig As String, strDest As String) As Boolean
  2.     On Error GoTo errHandle
  3.     Dim oJE
  4.     Set oJE = CreateObject("JRO.JetEngine")
  5.     Dim strSource As String
  6.     Dim strDest As String
  7.  
  8.     strSource = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  9.          "Data Source=" & strOrig & ";" & _
  10.          "Jet Oledb:Database Password=thuongall;" & _
  11.          "Jet OLEDB:Engine Type=5;"
  12.            
  13.     strDest = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  14.          "Data Source=" & strDest & ";" & _
  15.          "Jet Oledb:Database Password=thuongall;" & _
  16.          "Jet OLEDB:Engine Type=5;"
  17.  
  18.     oJE.CompactDatabase strSource, strDest
  19.     CompactDb = True
  20.     Set oJE = Nothing
  21.     Exit Function
  22.  
  23. errHandle:
  24.     MsgBox Err.Number & " " & Err.Description
  25.     CompactDb = False
  26. End Function

hoanganhna
Posts: 4
Joined: Sun 20/09/2009 11:25 am

Re: Xin hỏi code nén dữ liệu có password

Postby hoanganhna » Sat 31/10/2009 3:41 pm

Cảm ơn thuongall nhé. Sử dụng hàm của thuongall thì thật tiện ngoài ra tôi cũng đã thử cách sau và kết quả ok.

Code: Select all

  1. DBEngine.CompactDatabase n, d, ";pwd=hoanganh",,";pwd=hoanganh"

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Xin hỏi code nén dữ liệu có password

Postby truongphu » Sun 01/11/2009 10:50 am

thuongall wrote:Public Function CompactDb(strOrig As String, strDest As String) As Boolean


Đến anh thuongall và các bạn
Để compact file access, đằng nào ta cũng phải chèn thêm ActiveX
Do đó tôi đề nghị cách làm khác đơn giản hơn:

* File mdb không mật khẩu:

Code: Select all

  1. Dim AC As New Access.Application
  2. AC.CompactRepair App.Path & "\db1.mdb", App.Path & "\db2.mdb"


(hoặc ta dùng hàm CreateObiect cũng được).. tất cả chỉ 2 dòng code!

* File có mật khẩu: đang nghiên cứu cách mới :D
--------------
File có mật khẩu thì phải dùng Class DBEngine như VB Lib:

Code: Select all

  1. Dim AC As New Access.Application
  2. AC.DBEngine.CompactDatabase App.Path & "\db1.mdb", App.Path & "\db2.mdb", , , ";pwd=aaa"
  3.  
o0o--truongphu--o0o

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

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Xin hỏi code nén dữ liệu có password

Postby truongphu » Sun 01/11/2009 3:06 pm

Access.Application là ứng dụng Access nên nó còn duyệt cả Recordset:

Code: Select all

  1. Private Sub Form_Load()
  2. Dim AC As New Access.Application
  3. Dim Rec As Object
  4. AC.OpenCurrentDatabase App.Path & "\db1.mdb"
  5. Set Rec = AC.CurrentDb.OpenRecordset("table1")
  6. MsgBox Rec.fields(0).Value
  7. End Sub


code lạ! :D
o0o--truongphu--o0o

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

User avatar
thuongall
Quản trị
Quản trị
Posts: 456
Joined: Wed 26/01/2005 8:05 am
Location: Quê hương Đồng Khởi
Been thanked: 9 times
Contact:

Re: Xin hỏi code nén dữ liệu có password

Postby thuongall » Sun 01/11/2009 5:45 pm

truongphu wrote:Để compact file access, đằng nào ta cũng phải chèn thêm ActiveX

Nhưng... không đồng nghĩa với việc đằng nào cũng phải cài Access. :D

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Xin hỏi code nén dữ liệu có password

Postby truongphu » Mon 02/11/2009 10:07 am

thuongall wrote:Nhưng... không đồng nghĩa với việc đằng nào cũng phải cài Access. :D


Cài access dù sao cũng phổ thông hơn MDAC :D

----------------------
Sau đây là Compact với VBA/Access (VBA chạy trong file Access)

cách 1:
Module1 có 1 dòng code:

Code: Select all

  1. Option Compare Database
  2.  
  3. Public Sub CompactDB()
  4.    CommandBars("Menu Bar").Controls("Tools").Controls("Database utilities"). _
  5.    Controls("Compact and repair database...").accDoDefaultAction
  6. End Sub


Form1 có Command0 với code:

Code: Select all

  1. Option Compare Database
  2.  
  3. Private Sub Command0_Click()
  4. CompactDB
  5. End Sub


Cách 2: Gọn chưa từng thấy!
Form1 có Command0 với code:

Code: Select all

  1. Private Sub Command0_Click()
  2. Application.SetOption ("Auto Compact"), 1
  3. End Sub
o0o--truongphu--o0o

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

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Xin hỏi code nén dữ liệu có password

Postby truongphu » Mon 02/11/2009 10:07 am

Và đây là code VBA chạy trên VB6: Cách 2

Code: Select all

  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ách nầy thì chả cần Rename rồi Kill file gì cả!

(Có thì giờ ngổi tỉ tẩn Add từng dll rồi xem các hàm hoạt động cũng thú vị!)
o0o--truongphu--o0o

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

User avatar
thuongall
Quản trị
Quản trị
Posts: 456
Joined: Wed 26/01/2005 8:05 am
Location: Quê hương Đồng Khởi
Been thanked: 9 times
Contact:

Re: Xin hỏi code nén dữ liệu có password

Postby thuongall » Mon 02/11/2009 12:02 pm

truongphu wrote:Cài access dù sao cũng phổ thông hơn MDAC

Cháu tưởng JRO (Jet and Replication Object) là có sẵn khi cài Windows chứ không cần phải cài thêm MDAC. Và cháu đã thử trên Windows 7 (bản rút gọn) chưa cài thêm gì hết, vẫn chạy bình thường.
The file msjro.dll is a component from Microsoft Data Access Component(MDAC), and the MDAC is included in Operation System which is later the windows 2000 with Server Pack 4. I suggest you exclude this file by set the Exclude property to true.

More: http://social.msdn.microsoft.com/Forums ... e1306eea2/


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

Who is online

Users browsing this forum: No registered users and 1 guest