[dba-SQLServer] DSN Tables - Could not find installable ISAM
David Emerson
newsgrps at dalyn.co.nz
Mon Dec 16 14:54:37 CST 2019
Hi Team,
I have an Access 2016 accdb with code to link SQL tables. The code works
for SQL Server and we are trying to migrate the database to Azure.
When I run the code it gives me error 3170 - Could not find installable
ISAM.
The connection string works when I use it to connect to the Azure database
(I have changed the password for this email).
Can anyone give me a pointer as to where I can look for a solution?
Public Function AttachDSNLessTable(stLocalTableName As String,
stRemoteTableName As String, stServer As String, stDatabase As String,
Optional stUsername As String, Optional stPassword As String, Optional
stKeyfield As String)
'//Name : AttachDSNLessTable
'//Purpose : Create a linked table to SQL Server without using a DSN
'//Parameters
'// stLocalTableName: Name of the table that you are creating in the
current database
'// stRemoteTableName: Name of the table that you are linking to on the
SQL Server database
'// stServer: Name of the SQL Server that you are linking to
'// stDatabase: Name of the SQL Server database that you are linking to
'// stUsername: Name of the SQL Server user who can connect to SQL
Server, leave blank to use a Trusted Connection
'// stPassword: SQL Server user password
'// stKeyfield: Name of field if stRemoteTableName is a view. This is
used to set up an index so data can be edited
On Error GoTo Err_AttachDSNLessTable
Dim td As TableDef
Dim stConnect As String
For Each td In CurrentDb.TableDefs
If td.Name = stLocalTableName Then
CurrentDb.TableDefs.Delete stLocalTableName
End If
Next
If Len(stUsername) = 0 Then
'//Use trusted authentication if stUsername is not supplied.
stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer &
";DATABASE=" & stDatabase & ";Trusted_Connection=Yes"
Else
'//WARNING: This will save the username and the password with the
linked table information.
stConnect = "Driver={ODBC Driver 13 for SQL
Server};Server=tcp:prism-uat.database.windows.net,1433;Database=Prism-UAT;Ui
d=SUPPORT-Dalyn at xxxxxx.co.nz;Pwd=MYSECUREPWD;Encrypt=yes;TrustServerCertific
ate=no;Connection Timeout=30;Authentication=ActiveDirectoryPassword"
End If
Set td = CurrentDb.CreateTableDef(stLocalTableName, dbAttachSavePWD,
stRemoteTableName, stConnect)
CurrentDb.TableDefs.Append td
If Len(stKeyfield) > 0 Then
CurrentDb.Execute "CREATE UNIQUE INDEX 'PrimaryKey' ON " &
stLocalTableName & " (" & stKeyfield & ") WITH PRIMARY"
End If
AttachDSNLessTable = True
Exit Function
Exit_AttachDSNLessTable:
Exit Function
Err_AttachDSNLessTable:
AttachDSNLessTable = False
Select Case Err
Case 0
MsgBox "0 error", vbCritical, "Error heading"
Case 2001 ' Event canceled
Case 2046 ' Not able to save
Resume Next
Case Else
Call basErrorMsg("AttachDSNLessTable")
End Select
Resume Exit_AttachDSNLessTable
End Function
Regards
David Emerson
Dalyn Software Ltd
Wellington, New Zealand
More information about the dba-SQLServer
mailing list