David Emerson
davide at dalyn.co.nz
Wed Jul 16 14:18:35 CDT 2003
Thanks Arthur. Unfortunately, in my case I don't have access to the server
to be able to do the initial logging in. However I do know the name of the
server so I came up with this solution which seems to work. The Prompt
property seems to only work when opening a connection, and not setting the
applications connection string (Not sure why) -
Public Function basSetAucklandConnection()
On Error GoTo Err_basSetAucklandConnection
Dim sUID As String 'The user ID
Dim sPWD As String 'The user password
Dim sServerName As String 'The name of the MSDE or SQL Server
Dim sDatabaseName As String 'The name of the database
Dim sConnectionString As String
Application.CurrentProject.OpenConnection ""
sServerName = "AUCKLAND" 'Local MSDE or SQL Server
sDatabaseName = "SQLbe" 'Name of the database
Dim cnn As ADODB.Connection, intStartPos As Integer, intStopPos As Integer
StartHere:
Set cnn = New ADODB.Connection
With cnn
.Provider = "SQLOLEDB"
.Properties("Data Source") = sServerName
.Properties("Initial Catalog") = sDatabaseName
.Properties("Prompt") = adPromptAlways
.Open
End With
intStartPos = InStr(cnn.ConnectionString, "User ID=") + 8
intStopPos = InStr(intStartPos, cnn.ConnectionString, ";")
sUID = Mid$(cnn.ConnectionString, intStartPos, intStopPos - intStartPos)
intStartPos = InStr(cnn.ConnectionString, "Password=") + 9
intStopPos = InStr(intStartPos, cnn.ConnectionString, ";")
sPWD = Mid$(cnn.ConnectionString, intStartPos, intStopPos - intStartPos)
cnn.Close
Set cnn = Nothing
'Connect this adp to database.
sConnectionString =
"PROVIDER=SQLOLEDB.1;PROMPT=adpromptAlways;PASSWORD=" & sPWD & _
";PERSIST SECURITY INFO=FALSE;USER ID=" & sUID & _
";INITIAL CATALOG=" & sDatabaseName & ";DATA SOURCE=" & sServerName
Application.CurrentProject.OpenConnection sConnectionString
Exit_basSetAucklandConnection:
Exit Function
Err_basSetAucklandConnection:
Select Case Err
Case -2147217842
If MsgBox("You need to log in before you can use the
programme. Do you want to try again?", vbYesNo) = vbYes Then
Resume StartHere
Else
DoCmd.Quit
End If
Case Else
Call basErrorMsg("basSetAucklandConnection")
End Select
Resume Exit_basSetAucklandConnection
End Function
At 16/07/2003, you wrote:
>What you're after is exactly how my app behaves, so I thought I should look
>at its connection string. Here it is:
>Provider=Microsoft.Access.OLEDB.10.0;Persist Security Info=False;Data
>Source=rock;User ID='Enter your name and password';Initial
>Catalog=ETS_Current;Data Provider=SQLOLEDB.1
>
>TO achieve this I created a user called 'Enter your name and password'. Then
>when I create the ADE file from the ADP, I log on as that user first. The
>point is that SQL prompts for the password, since there is none provided in
>the connection string.
>
>Which admittedly looks a lot like what you're trying to do. One difference
>is that I don't do it in code, but right from the Access File menu. Of
>course, I'm not trying to pick up the user ID from the system. I make them
>type it in.
>
>Hth,
>Arthur
>
>-----Original Message-----
>From: dba-sqlserver-bounces at databaseadvisors.com
>[mailto:dba-sqlserver-bounces at databaseadvisors.com] On Behalf Of David
>Emerson
>Sent: July 16, 2003 1:16 AM
>To: dba-SQLServer at databaseadvisors.com
>Subject: RE: [dba-SQLServer]Changing Connection string server
>
>
>Further to my other message - I have found a property called Prompt which
>is supposed to do what I want - but I can't get it to. I have tried -
>
> sConnectionString = "PROVIDER=SQLOLEDB.1;PROMPT=1" & _
> ";PERSIST SECURITY INFO=FALSE;" & _
> ";INITIAL CATALOG=" & sDatabaseName & ";DATA SOURCE=" &
>sServerName
>
>and
>
> sConnectionString =
>"PROVIDER=SQLOLEDB.1;PROMPT=adpromptAlways;PASSWORD=" & sPWD & _
> ";PERSIST SECURITY INFO=FALSE;USER ID=" & sUID & _
> ";INITIAL CATALOG=" & sDatabaseName & ";DATA SOURCE=" &
>sServerName
>
>but neither work (nor variations). Any pointers?
Regards
David Emerson
DALYN Software Ltd
25b Cunliffe St, Johnsonville
Wellington, New Zealand
Ph/Fax (877) 456-1205