Michael,
Every one of your porblems is solvable.
I do not know where you got so many mis-impressions.
I have used Access with SQL Server for over 8 years. They work very well
together.
1. A2003 gives you 2 different ways to talk to SQL Server:
Linked tables in an mdb file or direct connect in .adp file.
You should pick one approach, not both.
I have always (and MS now) recommend you use linked tables in an .mdb file.
2. When you link using the wizard, the tables are connected as
dbo.tablename.
This is a real PITA but can easily be solved b using code to link the tables
and omitting the dbo.
(See attached code sample below.)
3. I set up system DSNs and connect via ODBC. Works fine.
(You can also skip the DSN if you want to use DSNless connections.)
4. .adp files do not use ODBC. They use ADO. But you should not use them
since you will be in an .mdb.
5. Uneditable tables in Access when linked to SQL Server are due to lack of
Primary Key on the tables.
You should go add a PK to every table. Also recommended is adding a
timestamp field to every table. (This is a special data type that really
helps Access with concurrency when editing data. Access does not have to
comapre every field if a timestamp is available. Makes updates safer and
more secure.
Sample code to attach:
I use this procedure to re-create links to SQL Server.
====================================================
For Jet re-linking code see:
http://www.mvps.org/access/tables/tbl0009.htm
====================================================
(This eliminates the need to re-name all the tables to strip out dbo_ and it
allows you to point to different versions of the same database easily.)
There is a local Access table (tblODBCTables) that contains the table names
I want to link to on the Server.
Note: the source table name needs the dbo. prefix which is in the code. The
linked table name usualy omits this. .
Public Sub LinkSQLServerTables(strDSN As String, strDatabase)
On Error GoTo Err_LinkSQLServerTables
Dim dbs As Database, rs As Recordset, tdfAccess As TableDef
Dim dbsODBC As Database, strConnect As String
If strDSN = "" Then
MsgBox "You must supply a DSN in order to link tables."
Exit Sub
Else
strConnect = "ODBC;DSN=" & strDSN & ";UID=User;PWD=password;DATABASE=" &
strDatabase & ";"
End If
SysCmd acSysCmdSetStatus, "Connecting to SQL Server..."
Call DeleteODBCTableNames
Set dbs = CurrentDb
Set rs = dbs.OpenRecordset("tblODBCTables")
Set dbsODBC = OpenDatabase("", False, False, strConnect)
Do While Not rs.EOF
Set tdfAccess = dbs.CreateTableDef(rs![LinkTablename], dbAttachSavePWD)
tdfAccess.Connect = dbsODBC.Connect
tdfAccess.SourceTableName = dbsODBC.TableDefs("dbo." &
rs![LinkTablename]).Name
dbs.TableDefs.Append tdfAccess
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set dbsODBC = Nothing
Set dbs = Nothing
Exit_LinkSQLServerTables:
SysCmd acSysCmdClearStatus
Exit Sub
Err_LinkSQLServerTables:
MsgBox ("Error # " & Str(Err.Number) & " was generated by " & Err.Source
& Chr(13) & Err.Description)
Resume Exit_LinkSQLServerTables
End Sub
'This procedure deletes all linked ODBC table names in an mdb.
Public Sub DeleteODBCTableNames()
On Error GoTo Err_DeleteODBCTableNames
Dim dbs As Database, tdf As TableDef, I As Integer
Set dbs = CurrentDb
For I = dbs.TableDefs.Count - 1 To 0 Step -1
Set tdf = dbs.TableDefs(I)
If (tdf.Attributes And dbAttachedODBC) Then
dbs.TableDefs.Delete (tdf.Name)
End If
Next I
dbs.Close
Set dbs = Nothing
Exit_DeleteODBCTableNames:
Exit Sub
Err_DeleteODBCTableNames:
MsgBox ("Error # " & Str(Err.Number) & " was generated by " & Err.Source
& Chr(13) & Err.Description)
Resume Exit_DeleteODBCTableNames
End Sub
--
Joe Fallon
Access MVP
Michael Miller said:
Dear ALL:
How do I get to sql 2000 from an Access 2003 database front end?
Nothing seems to work.
Also, am I correct that I have to change all queries against, and all
other
references to, table names from my Access back end database, because the
names change from <tablename> to <dbo_tablename or dbo.tablename>?
(I have imported my Access db into my sql db.)
I have been provided with a sql server and have the server name and the db
name and it sees me with my userid and no password. I have an ODBC
connection set up (Metrics_SQL) and it tests ok.
With the adp's File|Connections... menu, I noticed that the dialog does
not
provide me with any choice of an ODBC connection and just filling in my
server name and db name is not working, whether I use NT or specific user
security.
I am able to -link- to the sql db and tables, in Access 2000 using ODBC,
but
I can't edit the table structures, even tho the db admin gave me complete
rights. Also, in Access, it appears, by definition, that you can't edit
-linked- tables.