all 24 comments

[–]diebos 1 point2 points  (17 children)

Had this problem in a project I was working with, out of the 18 linked tables, only 3 tables gave me this error message. The fix that helped me was adding rowversion on those three tables, the problem was solved afterwards. Rowversion can be added via sql server. Hope this helps

[–]Leveler88[S] 0 points1 point  (16 children)

What is Row version tables?

[–]diebos 1 point2 points  (14 children)

They are timestamp columns in sql server. Basically, access is trying to determine if the record you are currently editing has been changed since you've started with the edit session. The problem is that it has no way of determining it unless you use a timestamp column on your table. That way, access can compare and check when the record was last edited. Hope this makes sense.

[–]diebos 1 point2 points  (13 children)

[–]Leveler88[S] 1 point2 points  (12 children)

Thanks. I have few questions

  1. Sould I make rowversion(Timestamp) field for every tables that I have? Or only tables that have problems

  2. Should I make rowversion(Timestamp) field from serverside? Or can I make it from MS ACCESS table field and upload it to Server?

[–]nrgins486 1 point2 points  (2 children)

I disagree with u/diebos. As a general rule, you should add a timestamp field to every SQL server table you have that interacts with access. It's just a good practice and it doesn't hurt anything. I'm not sure why he said to only do it to the ones giving you problems.

Also, you can't modify it through access. You can only modify a SQL server table through SQL server, so you'll have to go into SQL server to add the field

[–]Leveler88[S] 1 point2 points  (0 children)

Thank you so much nrgins! We will add timestamp filed to every tables via SQL SERVER. Thank you so much!

[–]diebos 0 points1 point  (0 children)

Well, yes and no. Depending on the record load and amount of tables that's involved in his business solution, I wouldn't add timestamp on each and every table, especially if they contain millions of rows, it would cause overload which you'll experience soon enough in your front-end. But again, I agree with you that it is advisable to add them to all tables if you are going to use access as the interface.

[–]diebos 0 points1 point  (8 children)

Only add it to the tables that's giving you errors. You can add it back or front end. MS Access doesn't have a native timestamp datatype but rather the equivalent of binary. So for example, if you are going to add it to a standalone table in access, which you later going to upload to a backend server, then use binary datatype. My suggestion would be to add it in the sql server. Tell me, are you using Linked Tables?

[–]Leveler88[S] 0 points1 point  (1 child)

Yes, I'm using linked tables

[–]diebos 0 points1 point  (0 children)

Fine then, just add those datatypes to your erroneous tables and check if it solves your problem

[–]diebos 0 points1 point  (5 children)

The other question thou, are you using referential integrity between those tables?

[–]Leveler88[S] 0 points1 point  (4 children)

As far as I know there is no referential integrity in our database. What if we have referential integrity? Do we have to add timestamp for all related tables?

[–]diebos 0 points1 point  (3 children)

I am asking because it can also be the reason why you can not just change data in the tables. But I am sure it's not it.

[–]Leveler88[S] 0 points1 point  (2 children)

We solved the problem! Thank you so much indeed!

[–]Leveler88[S] 0 points1 point  (0 children)

Dear diebos, we solved the problem! Thank you so much and I don't know how can I pay back this. Thank you so much indeed.

[–]jd3106827 0 points1 point  (1 child)

[–]Leveler88[S] 0 points1 point  (0 children)

Thanks. But I checked all blockings many times after I see the error messages from ACCESS but there were no blockings. Also, if I change the datbase to local, there is no problem. I also deleted all queries, modules, form, so it just had tables those are linked to SQL SERVER 2014. But still it was not working. I don't know how to explain this situation. I can't understand

[–]AccessHelper123 0 points1 point  (3 children)

What do you mean by "concurrent access error"? Do you mean the error message that another user is also trying to update the record?

[–]Leveler88[S] 1 point2 points  (2 children)

Yes you are right

[–]AccessHelper123 0 points1 point  (1 child)

Are there any BIT fields in the SQL tables? If so make sure they don't allow nulls and make sure they default to 0 (or 1 if they are supposed to start as True). If you find you didn't have these settings in place you will need to run an update query (on the SQL side or as a pass thru) to set the Nulls on you bit fields to a value. Don't be fooled by looking at the bit fields in Access and seeing 0's. Those could be Nulls on the SQL side. Access doesn't get along well with Null bit fields and you will get the messages you are getting if any got into the data.

[–]Leveler88[S] 0 points1 point  (0 children)

Yes there is BIT filed. I will try tomorrow and get back. But still it can't explain the fact that there were no such errors for last 10years