Jump to content

How to read ms. access database which is locked with a password


Recommended Posts

hello all,

anyone know how to read ms. access database which is locked with password?

if not locked with password i know how to read. like below code :

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIListView.au3>

Const $conDbFile = "test.mdb" ; it has to be on script current Dir
Const $conTable = "db"
Const $conOK = 1, $conEdit = 1, $conAdd = 0

Global $oMyError = ObjEvent("AutoIt.Error","MyErrFunc")
Global $objDBSystem, $dbDatatBase, $recRecordSet

If Setup() = $conOK Then
    Main()
EndIf

Func Setup()
    $objDBSystem = ObjCreate("DAO.DBEngine.36")
    If $conOK <> FileExists(@ScriptDir & "\" & $conDbFile) Then
        MsgBox(16, $conProgName, "Database File is not found ")
        ;Return 0
        Exit
    EndIf
    $dbDatatBase = $objDBSystem.OpenDatabase(@ScriptDir & "\" & $conDbFile)
    $recRecordSet = $dbDatatBase.OpenRecordset("Select * From " & $conTable)
    Return $conOK
EndFunc 

Func Main()
    $MainGUI = GUICreate("PT. KBI - Schedulle Tenancy", 1000, 350)
    GUICtrlCreateGroup("Result", 40, 10, 943, 295)  
    $result = $dbDatatBase.OpenRecordset("Select * From db")
    if ($result.Eof = -1 And $result.Bof =-1)  Then  ; Blank Table
    GUISetState()   
    $ResultBox = GUICtrlCreateListView("No|     Block     |  Unit  |Owner|    Lease    |Start Date|End   Date|         Name of Tenant         |",45,25,933,275)
    _GUICtrlListView_SetExtendedListViewStyle($ResultBox, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))  
    EndIf
    With $result    
    if $Result.EOF <> true then
    $ResultBox = GUICtrlCreateListView("No|     Block     |  Unit  |Owner|    Lease    |Start Date|End   Date|         Name of Tenant         |",45,25,933,275)
    $j=1
    While Not $Result.EOF
    For $i = $j  To $j
    _GUICtrlListView_SetExtendedListViewStyle($ResultBox, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))  
    _GUICtrlListView_AddItem($ResultBox, $j)
    _GUICtrlListView_AddSubItem($ResultBox, $i - 1, .Fields(1).Value, 1)
    _GUICtrlListView_AddSubItem($ResultBox, $i - 1, .Fields(2).Value, 2)
    _GUICtrlListView_AddSubItem($ResultBox, $i - 1, .Fields(3).Value, 3)
    _GUICtrlListView_AddSubItem($ResultBox, $i - 1, .Fields(4).Value, 4)
    _GUICtrlListView_AddSubItem($ResultBox, $i - 1, Display_Date(StringLeft($result("Start_date").value, 8)), 5)
    _GUICtrlListView_AddSubItem($ResultBox, $i - 1, Display_Date(StringLeft($result("end_date").value, 8)), 6)
    _GUICtrlListView_AddSubItem($ResultBox, $i - 1, .Fields(7).Value, 7)
    _GUICtrlListView_AddSubItem($ResultBox, $i - 1, .Fields(8).Value, 8)
    Next 
    $j = $j+1
    $Result.Movenext
    WEnd
    $Result.Close
    EndIf
    EndWith 
    GUICtrlCreateGroup("", -99, -99, 1, 1) ;close group 
    
    GUISetState(@SW_SHOW)
    
    While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
    WEnd
EndFunc 

Func Display_Date($date)
   Return StringRight($date, 2) & "/" & StringMid($date, 5, 2) & "/" & StringLeft($date, 4) ; DD/MM/YYYY
;  Return StringMid($date, 5, 2) & "/" & StringRight($date, 2) & "/" & StringLeft($date, 4) ; MM/DD/YYYY
EndFunc

but when that ms. access database i give password will comeout error like attachment.

sorry for my bad english, hope u all know what i mean. thanks

sample.rar

Link to comment
Share on other sites

So what did your connect string look like when you tried the password? Something like this?

Func Setup()
    Local $dbOptions = True ; Open in exclusive (vice False = shared) mode
    Local $dbReadOnly = False
    Local $dbConnect = "MS Access;pwd=" & $sPassword ; $sPassword is Global
    $objDBSystem = ObjCreate("DAO.DBEngine.36")
    If $conOK <> FileExists(@ScriptDir & "\" & $conDbFile) Then
        MsgBox(16, $conProgName, "Database File is not found ")
        ;Return 0
        Exit
    EndIf
    $dbDatatBase = $objDBSystem.OpenDatabase(@ScriptDir & "\" & $conDbFile, $dbOptions, $dbReadOnly, $dbConnect)
    $recRecordSet = $dbDatatBase.OpenRecordset("Select * From " & $conTable)
    Return $conOK
EndFunc

Ref: MSDN: DBEngine.OpenDatabase Method

:blink:

Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...