Creating a DSN-less, updatable SQL Server linked table in Access 2007

Posted on 2012-12-21
Last Modified: 2012-12-22
In Access 2007, I've created a DSN-less connection to a SQL Server 2008 R2 table, to create a linked table which I've dropped into an Access form. I followed this MS link:

In VBA, I used the Form_Open event to call "AttachDSNLessTable" as outline in the KB article.

Q1: I see "Recordset is not updateable", and it won't let me edit the recordset. I'm assuming it doesn't maintain connection to the SQL table. How do I change this so I can add/edit/delete records in this linked table (and thus have them automatically propogate to the SQL table)?

Q2: From VBA, I'd like to be able to update this linked table in certain spots in a procedure. How do I do so?

I suspect these 2 questions are related. Thanks.
Question by:jdallen75
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
LVL 50

Expert Comment

by:Gustav Brock
ID: 38714524
Q1: You probably missed to add a Timestamp field in the SQL Server table and relink it.

Q2: Like any other recordset using DAO.


Author Comment

ID: 38714599
There is a timestamp field, but the records are not necessarily unique on that field (it's an "edited" field). How does that affect this?

I'm using ADO currently... How does this differ from DAO in this case?
LVL 47

Expert Comment

by:Dale Fye (Access MVP)
ID: 38714609
You will also need a primary key in the table in order to edit it from Access.
U.S. Department of Agriculture and Acronis Access

With the new era of mobile computing, smartphones and tablets, wireless communications and cloud services, the USDA sought to take advantage of a mobilized workforce and the blurring lines between personal and corporate computing resources.


Author Comment

ID: 38714617
Thanks, fyed. That's probably it ... I didn't create the table :-P

Author Comment

ID: 38715839
I found the problem: Access can't handle bigint datatypes, which is what the primary key was identified with.

That takes care of Q1.

I'm still having an issue with Q2: namely, I'd like to be able to update the linked table (the same as going through the Linked Table Manager, selecting the linked table, and updating manually), but through VBA code. I've come across dozens of blogs and nothing seems to update.

I'd like this so if Access has been open for some time, the user can click a Refresh button to ensure that what they see on screen is true to the SQL table.
LVL 50

Expert Comment

by:Gustav Brock
ID: 38715874
For that you only need to requery the recordset of the form the user is watching.

Relinking is only needed when schema changes (adding/modifying fields etc.) have taken place.


Author Comment

ID: 38716046

Any idea what that syntax would look like? I ask because I tried a few methods, one of which used a ".RefreshLink" or ".Refresh"(?) and the table didn't update when an underlying record change had happened.
LVL 50

Accepted Solution

Gustav Brock earned 350 total points
ID: 38716054
It is method Requery.

Method RefreshLink is for refreshing linked tables when the connection string has changed.


Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Phishing attempts can come in all forms, shapes and sizes. No matter how familiar you think you are with them, always remember to take extra precaution when opening an email with attachments or links.
In earlier versions of Windows (XP and before), you could drag a database to the taskbar, where it would appear as a taskbar icon to open that database.  This article shows how to recreate this functionality in Windows 7 through 10.
In Microsoft Access, learn how to use Dlookup and other domain aggregate functions and one method of specifying a string value within a string. Specify the first argument, which is the expression to be returned: Specify the second argument, which …
The viewer will learn how to simulate a series of coin tosses with the rand() function and learn how to make these “tosses” depend on a predetermined probability. Flipping Coins in Excel: Enter =RAND() into cell A2: Recalculate the random variable…

735 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question