sql - 强制转换规范的字符值无效 (#0) - 我知道问题所在,但不知道如何解决

标签 sql sql-server ms-access

我在 MS Access 中查询没有外键的 SQL View 时遇到按钮问题。

我的问题与此处找到的问题非常相似:MS Access error "ODBC--call failed. Invalid character value for cast specification (#0)" -- 这似乎是我的确切问题,但我不知道如何解决它。以下是更多详细信息。首先,具体的错误消息:

ODBC--call failed.
[Microsoft][ODBC SQL Server Driver]Invalid character value for cast specification (#0)

这就是我的不同之处。我在 MS Access 中有一个按钮可以执行以下操作:

Private Sub btnMachineCutSheet_Click()
    Dim stDocName As String

    stDocName = "qryCutSheetByMachines"
    DoCmd.OpenQuery stDocName, acNormal, acEdit

End Sub

您看到那里列出的查询 (qryCutSheetByMachines) 是一个相当长的查询,但我已将问题缩小到一行。这是查询:

SELECT 
  vwCutSheet.Network, 
  vwCutSheet.NetworkSpeed, 
  vwCutSheet.Duplex
FROM vwCutSheet 
INNER JOIN local_tblCreateCutSheet 
  ON vwCutSheet.EquipmentID = local_tblCreateCutSheet.EquipmentID;

请记住,所有表/ View 都是来自 MS SQL 2008 数据库的链接表

第一个奇怪的地方是,如果我删除 vwCutSheet.NetworkSpeed 行,一切都会正常工作。不幸的是,我需要这些数据。

现在,如果我取出 JOIN 语句,查询就可以正常工作。显然我需要加入,否则我不会在那里。现在,问题(我认为)是 View (vwCutSheet) 没有 PK( View 应该有主键吗?)。 vwCutSheet.EquipmentID 不能是 PK,因为在此 View 中通常总会出现多个 EquipmentID 具有相同值的情况。

最后一点可能会把事情搞砸的信息是这样的。如果我在设计 View (在 MS Access 中)中打开 View ,我可以看到 Access 需要“Number”数据类型 - 但如果我查看 View 最初查询的表,数据类型是 varchar( 5)。我预计 Access 正在查看数据内容,除了数字之外什么也看不到(值为 10、100、1000 和 10000)。

我很高兴地说这不是我设计的,所以这不是我的错!哈...但是,我必须支持它,所以这取决于我让它发挥作用。

所以...我认为这就是所有相关信息。如果您需要更多信息,请告诉我,我将在讨论过程中编辑我的问题。

预先感谢您的帮助!

编辑:找到更多信息:

View 从中提取的表使用具有 varchar(5) 数据类型的列。该字段是 varchar(5) 的原因是因为可以指定 10、100、1000、10000 或 Auto 的“速度”。

此外, View 中填充的字段也可能为空。

最佳答案

不确定您是否有权在 SQL 端工作,但如果有,请尝试在那里创建联接并查看是否有问题。

此外,考虑将存储值“auto”更改为数字且无效的值,例如 -1,再次假设您可以在 sql 端进行更改。

您可能需要对无法更改的链接表进行一些限制或转换,然后才能加入。如果您需要在连接两个链接源之前操作数据,则可能需要 3 个查询,而不是只有一个查询。

<小时/>

针对您的评论, 如果数据类型和值兼容,则连接链接到 SQL Server 的表和本地 Access 表应该可以工作。如果链接表将关键字段定义为数字,但包含文本值(例如“auto”),则它无法工作。您需要将链接表更改为文本字段而不是数字,以便它可以与本地表中的文本字段连接。

关于sql - 强制转换规范的字符值无效 (#0) - 我知道问题所在,但不知道如何解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5316641/

相关文章:

c# - Asp.net C# sql server 读取 block 中的二进制sql字段数据

php - 在 Linux 上使用 PHP 编辑 MS Access 数据库

vba - 微软 Access : Capture values when record is deleted from subform

excel - 从 Access 报告到 Excel 电子表格的某些字段会损坏

MySQL 慢查询 : How to optimize the following query?

mysql - 在 MySQL 中选择包含所有子项的父记录

sql - 从 SQL 脚本在 nvarchar 或 varchar 中插入控制字符?

sql - XML 到 SQL Server 中的几个具有相同名称的元素到不同的列中

MySQL 错误 1241 : Operand should contain 1 column(s)

c# - 这个简单的更新查询有什么问题?