enter code here
我在SQL Server 2005上有一个表,其中包含bigint主键和MS Access 2003前端(链接表)。
我想更新bigint为primarykey的表的记录。 我用
CurentDb.execute _
"Update myTable SET Field1 =1 , Field2 = 'test' WHERE bigintKey = " & myVar
我的标准表达式数据不匹配。
如何在MS Access上更新具有bigint字段的MS SQL数据库的记录?
编辑:当我这样做时,它不会给我一个错误
CurentDb.execute _
"Update myTable SET Field1 =1 , Field2 = 'test' WHERE bigintKey = '" & _
myVar & "'"
但它没有更新记录...
答案 0 :(得分:3)
没有太多理由使用范围从-9,223,372,036,854,775,808到9,223,372,036,854,775,807的主键值。
您最好将该主键更改为sql端的int列。如果你做了这个改变,事情就会好起来的。我建议这样做。记住,在sql server中一个int = long in ms-access。
尝试在访问的表视图中打开链接表。我发现带有bigint作为PK的sql 2005表甚至不能正确显示(你会看到每列都删除了)。
如果删除sql server端的PK设置,我发现链接可以正常工作。换句话说,您可以拥有唯一索引并将其设置为递增(标识),但不要将其设置为PK。从文档的角度来看这并不理想,如果强制关系中还有其他表,那么我不建议删除PK设置(实际上你不能这样做)。
所以,现在看来,如果PK是bigint,我无法成功链接到SQL服务器表。请注意,其他列可以作为bigint工作正常。它们只是作为ms-access的文本数据类型链接。我正确地看到你的代码样本假设这将是一个文本列(这对你来说是正确的)。只有当bigInt是PK列时,这才会搞砸。
我会将sql端的bigint更改为int(我只是看不到需要这么大的pk)。如果你必须将列保持为bigInt,那么只需删除sql端的PK设置(如果可能的话)。
因此,您可以将该bigInt列作为唯一索引,并且它可以继续作为自动增量标识列。但是,它不能成为BigInt PK,只是不起作用。
答案 1 :(得分:0)
条件表达式中的数据不匹配通常意味着SQL语法错误。尝试将生成的SQL复制到MS Access中的新查询中,并直接从Access运行。
你的例子中myVar是什么?结果是什么SQL?
答案 2 :(得分:0)
那么,您有MS Access DB,它是SQL Server的前端吗?
OR
Access DB是否将表链接到SQL Server?
运行DML语句后,查看是否通过查看SQL Server(使用查询分析器)更新SQL Server。我的猜测是,Access可能无法刷新它。