Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 强制转换规范(#0)的字符值无效-我知道问题所在,但不知道如何解决_Sql_Sql Server_Ms Access - Fatal编程技术网

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

Sql 强制转换规范(#0)的字符值无效-我知道问题所在,但不知道如何解决,sql,sql-server,ms-access,Sql,Sql Server,Ms Access,MS Access中的一个按钮查询没有外键的SQL视图时出现问题 我的问题与这里的问题非常相似:——这似乎就是我的问题,但我不知道如何解决它。这里有更多的细节。首先,确切的错误消息: ODBC--call failed. [Microsoft][ODBC SQL Server Driver]Invalid character value for cast specification (#0) 这就是我的不同之处。我在MS Access中有一个按钮,可执行以下操作: Private Sub bt

MS Access中的一个按钮查询没有外键的SQL视图时出现问题

我的问题与这里的问题非常相似:——这似乎就是我的问题,但我不知道如何解决它。这里有更多的细节。首先,确切的错误消息:

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;
请记住,所有表/视图都是来自MS SQL 2008数据库的链接表

第一点奇怪的是,如果我删除vwCutSheet.NetworkSpeed,line,一切正常。不幸的是,我需要这些数据

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

最后一点可能会把事情搞砸的信息是这个。如果我在Design视图中打开视图(在MS Access中),我可以看到Access需要的数据类型是“Number”-但是如果我查看视图最初查询的表,数据类型是varchar(5)。我希望Access查看的是数据的内容,除了数字(值分别为101001000和10000)

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

所以。。。我想这些都是相关信息。如果您需要更多信息,请告诉我,我会在继续的过程中编辑我的问题

提前感谢您的帮助

编辑:找到更多信息:

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


此外,视图中填充的字段可能为空。

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

也可以考虑将你的存储值“Autoto”转换为数字和无效的东西,比如-1,再次假设你可以在SQL方面做修改。 您可能需要对无法更改的链接表进行一些限制或转换,然后才能加入。若在连接两个链接源之前需要处理两个链接源中的数据,则可能需要3个查询,而不是一个查询


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

我认为您有数据错误。您正在将数字存储在文本字段中,除非您不这样做

如果将0定义为“自动”,则可以将其设置为数字字段。或者,使用查找表和外键值,使1=10、2=100、3=1000、4=100000和0=Auto。如果您这样做,您可以使用该值作为指数(10^N),结果将是1、10、100、1000、10000,其中1将是您的自动值

或者makenull=Auto,在这种情况下,10^NULL仍然会为您提供NULL(Auto),而所有其他值都可以使用

这将完全消除这个问题

但它假定您可以访问数据表


如果无法更改字段的数据类型,也可以创建一个视图来执行上述操作之一。对我来说,最简单的方法就是去掉该死的文本值“Auto”。如果我这样做,我可能会将“Auto”转换为Null,这样结果将是一列带有Null的数字。

如果这是一个强制转换错误,我会首先查看数据类型number/varchar…在SQL中,尝试从ISNUMERIC(field)=0的表中执行
SELECT*,尽管ISNUMERIC有自己的问题。这是数据问题吗?在SQL Server端,该字段中是否存在应为零或其他值的空字符串?该字段中是否有应清除的非数字字符?您可以在sql server端执行一个查询,将该列强制转换为十进制数据类型,还是生成一个错误?啊,是的,我认为这是问题的一部分。我将更新我的原始帖子,但字段是varchar(5)的原因是可以指定“速度”为10、100、1000、10000或自动。此外,视图中填充的字段可能为空。这是一个粗略的建议,但链接表的某些属性实际上是可编辑的。您是否尝试过编辑链接表并尝试设置字段的数据类型?我想这是行不通的,但值得一试。是的,我尝试过编辑那个属性,但没有任何运气。它认为这是一个数字,所以我尝试改为文本,但它不接受。我在SQL方面有权限(我有dbo权限)。但是,我不能那样做。这就是为什么。。。我想你帮我找出了问题所在。如果查看我的联接,我将联接名为local_tblCreateCutSheet的表和名为vwCutSheet的视图。视图是SQL格式的,但表是access中的本地表。我现在要用谷歌搜索了,但我敢打赌这是我问题的一部分。谢谢你的信息,贝丝,很高兴知道它应该能工作。您提到将链接表更改为文本字段。SQL中该字段的数据类型是varchar(5),因此SQL端的一切都应该正常。我没看到我能做的太多了