Urgent help About data source connection


G

Guest

I have some problem here. when i run the following program it is asking to
select a
Data source. Possibly it is asking for the driver. : i am just putting my
code here: i am working in visual basic 6. and trying to hide the
application window and show only form using the win 32 api function written
in standard module.
please help me with this . and
please be a little patient for my querie..

Thanks alot..
here is the code:
In form module i have a code like this:

Dim acc As Access.Application
Dim db As DAO.Database
Dim strDbName As String
Const SW_HIDE As Integer = 0




Private Sub Command1_Click()
On Error GoTo ErrorHandler

Set acc = New Access.Application
Set db = acc.DBEngine.OpenDatabase(strDbName, False, False)
strDbName = "E:\with db\erxp\Copy of dbfiletype.mdb"
acc.OpenCurrentDatabase strDbName
acc.DoCmd.OpenForm "test"
cmd1_Click_exit:
Set db = Nothing
Exit Sub
'WIN API Function to hide the access application


fSetAccessWindow (SW_HIDE)

ErrorHandler:
If Err.Number <> 0 Then

' Handle errors
MsgBox "An unexpected error has occurred." & _
vbCrLf & "Please note of the following details:" & _
vbCrLf & "Error Number: " & Err.Number & _
vbCrLf & "Description: " & Err.Description _
, vbCritical, "Error"
Resume cmd1_Click_exit
End If
End Sub



Under the standard module :

Private Declare Function apiShowWindow Lib "user32" _
Alias "ShowWindow" (ByVal hwnd As Long, _
ByVal nCmdShow As Long) As Long
Public Function fSetAccessWindow(nCmdShow As Long)
'Usage Examples
'Maximize window:
' ?fSetAccessWindow(SW_SHOWMAXIMIZED)
'Minimize window:
' ?fSetAccessWindow(SW_SHOWMINIMIZED)
'Hide window:
' ?fSetAccessWindow(SW_HIDE)
'Normal window:
' ?fSetAccessWindow(SW_SHOWNORMAL)
'
Dim loX As Long
Dim loForm As Form
On Error Resume Next
Set loForm = Screen.ActiveForm
If Err <> 0 Then 'no Activeform
If nCmdShow = SW_HIDE Then
MsgBox "Cannot hide Access unless " _
& "a form is on screen"
Else
loX = apiShowWindow(hWndAccessApp, nCmdShow)
Err.Clear
End If
Else
If nCmdShow = SW_SHOWMINIMIZED And loForm.Modal = True Then
MsgBox "Cannot minimize Access with " _
& (loForm.Caption + " ") _
& "form on screen"
ElseIf nCmdShow = SW_HIDE And loForm.PopUp <> True Then
MsgBox "Cannot hide Access with " _
& (loForm.Caption + " ") _
& "form on screen"
Else
loX = apiShowWindow(hWndAccessApp, nCmdShow)
End If
End If
fSetAccessWindow = (loX <> 0)
End Function
 
Ad

Advertisements

D

Douglas J. Steele

fSetAccessWindow is really intended to be run from inside of Access, not
externally.

I suspect that Screen.ActiveForm isn't returning a reference to the correct
form, and that hWndAccessApp is meaningless to VB6.

Try passing your reference to the Access.Application object (acc in your
code) to fSetAccessWindow as an additional parameter:

Public Function fSetAccessWindow(accApp As AccessApplication, nCmdShow As
Long)

and changing these 3 lines of code

Set loForm = Screen.ActiveForm

loX = apiShowWindow(hWndAccessApp, nCmdShow)

loX = apiShowWindow(hWndAccessApp, nCmdShow)

to

Set loForm = acc.Screen.ActiveForm

loX = apiShowWindow(acc.hWndAccessApp, nCmdShow)

loX = apiShowWindow(acc.hWndAccessApp, nCmdShow)

Also change

fSetAccessWindow (SW_HIDE)

to

Call fSetAccessWindow (acc, SW_HIDE)

I don't see the purpose of the line of code:

Set db = acc.DBEngine.OpenDatabase(strDbName, False, False)

First of all, strDBName isn't defined at that point. Second of all, you're
not using it anywhere (you have "Set db = Nothing" at the end of the
module).
 
Ad

Advertisements

G

Guest

hi
i changed the code a little.. but i still have some problem . this time it
says user defined type not defined - points to the function definition in
standard module.
under the form module:
Dim appAccess As Access.Application
Const SW_HIDE As Integer = 0
Private Sub Command1_Click()
On Error GoTo ErrorHandler
Dim strDbName As String
strDbName = "E:\satya\erxp\Copy of dbfiletype.mdb"

' Create new instance of Microsoft Access.
Set appAccess = CreateObject("Access.Application")
' Open database in Microsoft Access window.
appAccess.OpenCurrentDatabase strDbName
' Open Orders form.
appAccess.DoCmd.OpenForm "test"


cmd1_Click_exit:
appAccess.CloseCurrentDatabase
Exit Sub
'WIN API Function to hide the access application


Call fSetAccessWindow(appAccess, SW_HIDE)

ErrorHandler:
If Err.Number <> 0 Then


' Handle errors
MsgBox "An unexpected error has occurred." & _
vbCrLf & "Please note of the following details:" & _
vbCrLf & "Error Number: " & Err.Number & _
vbCrLf & "Description: " & Err.Description _
, vbCritical, "Error"
Resume cmd1_Click_exit
End If
End Sub

under standard moodule it has :


Private Declare Function apiShowWindow Lib "user32" _
Alias "ShowWindow" (ByVal hwnd As Long, _
ByVal nCmdShow As Long) As Long
Public Function fSetAccessWindow(accApp As AccessApplication, nCmdShow As
Long)


Dim loX As Long
Dim loForm As Form
On Error Resume Next
Set loForm = accApp.Screen.ActiveForm
If Err <> 0 Then 'no Activeform
If nCmdShow = SW_HIDE Then
MsgBox "Cannot hide Access unless " _
& "a form is on screen"
Else
loX = apiShowWindow(accApp.hWndAccessApp, nCmdShow)
Err.Clear
End If
Else
If nCmdShow = SW_SHOWMINIMIZED And loForm.Modal = True Then
MsgBox "Cannot minimize Access with " _
& (loForm.Caption + " ") _
& "form on screen"
ElseIf nCmdShow = SW_HIDE And loForm.PopUp <> True Then
MsgBox "Cannot hide Access with " _
& (loForm.Caption + " ") _
& "form on screen"
Else
loX = apiShowWindow(accApp.hWndAccessApp, nCmdShow)
End If
End If
fSetAccessWindow = (loX <> 0)
End Function


please help me finding the bug... thanks for your consideration.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top