Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
Ms access ADO数据类型的限制是什么?_Ms Access_Vba_Ado - Fatal编程技术网

Ms access ADO数据类型的限制是什么?

Ms access ADO数据类型的限制是什么?,ms-access,vba,ado,Ms Access,Vba,Ado,我试图确定用于调用SQLServer2005存储过程的适当ADO命令参数数据类型。我首先特别尝试确定与SQL Server数据类型varcharMAX相对应的适当ADO数据类型。我想可能是adVarChar,但我不确定 为什么文档中没有列出这些数据类型的大小,例如“字符串”类型的字符数、数字类型的范围?!为什么看起来不可能找到一个方便的表格,列出每种数据类型以及每种数据类型中可以存储的最大信息量?!你可能认为有人会注意到,可能有数百万个问题与为什么我的数据被截断有关 澄清–上述信息仅是一个具体示

我试图确定用于调用SQLServer2005存储过程的适当ADO命令参数数据类型。我首先特别尝试确定与SQL Server数据类型varcharMAX相对应的适当ADO数据类型。我想可能是adVarChar,但我不确定

为什么文档中没有列出这些数据类型的大小,例如“字符串”类型的字符数、数字类型的范围?!为什么看起来不可能找到一个方便的表格,列出每种数据类型以及每种数据类型中可以存储的最大信息量?!你可能认为有人会注意到,可能有数百万个问题与为什么我的数据被截断有关

澄清–上述信息仅是一个具体示例,说明了解ADO数据类型限制的实用性,例如选择适当的ADO数据类型来处理各种数据源的特定数据类型。

特定部分 varcharMAX可以从ADO用作输入参数。 本例中的数据类型为adLongVarChar,最大长度为&h7FFFFFFF,如文档所示

但它不能用作输出参数。 也不能将其作为返回的recordsed Funcy-中的字段类型使用。值为空,因为它实际上是一个长类型,但可能不会调用GetChunk来检索实际数据,因为ADO认为它不是长类型

如果需要使用VBA/ADO将varcharMAX用作输出参数,则必须选择它以将记录集返回到客户端,并且在执行此操作时必须将其转换为文本:

select cast(@var as text) as data;
return 0;
然后您会说s=.Fields0.GetChunk.Fields0.ActualSize以从打开的记录集中获取数据

抽象部分 ADO的关键在于抽象出不同数据源之间的差异。只要周围有支持接口的数据访问驱动程序,理想情况下,您就可以与它交谈,而不必担心它是什么

与任何抽象概念一样,这个抽象概念也是

关于哪些服务器的哪些数据类型映射到哪些ADO数据类型的确切知识来自经验。就是

hovewer的一些经验法则可能会很快发展起来:

通过将ADO数据类型的名称与特定服务器的数据类型名称进行匹配,不难找出可能的ADO数据类型:

整数整数 datetime-adDBDate,尽管在这里您可能会被迫进行一些尝试和错误 某些数据类型称为BLOB二进制大对象。它们被设计为包含大量数据,通常在数据源文档中显示。对于这些类型,相应的ADO数据类型的名称中可能包含Long,在ADO世界中,Long表示BLOB adLongVarBinary、adLongVarChar、adLongVarWChar

关于数据类型的确切长度的任何信息都可以在数据源的文档中找到,而不是ADO文档。例如:

开发人员为此特定表(如varchar10)中的特定列设置的最大长度 BLOB数据类型(如varcharmax)的最大理论长度 您将查阅相应的数据源,而不是ADO


@Fink–为什么不在答案中包含该链接?我在搜索时找到了那张表,但它实际上并没有回答我的问题。根据GSerg给出的答案中的信息,这并不完全正确——根据链接处的表格,ADO数据类型adVarChar对应于SQL Server数据类型varchar,但对于varcharMAX来说,这可能是不正确的,并且该数据类型没有单独列出。@Kenny我添加了一个摘要来解决您问题的这一部分。您提到无法找到ado数据类型表。我不知道答案,但认为它可能会有所帮助。@Fink–它很有用;谢谢对你的答案有很大的补充![我刚刚了解到varcharMAX是故意用来替换文本的,并且可以保存相同数量的字符。这使得你暗示的varcharMAX是BLOB数据类型的说法对我来说更有意义。]我意识到这是一个相当古老的线程,但是。SQL Server中不推荐使用文本。我们会遵循同样的想法,但使用varcharmax而不是文本吗?我有一个声明为varcharmax的输出参数,它在SQL Server 2008中被截断为8000个字符。@GordonLinoff Text在我写这篇文章时已经被弃用了。尽管如此,它还没有被删除,这是ADO.net唯一不能理解的东西。首先,如何使用varcharmax代替文本?我现在展示的是一个通过ADO获取varcharmax数据的解决方案。它在服务器端没有被截断,请检查用于检索数据的工具。@AGSerg。感谢您的回复和有用的回答。我们找到了解决方法,因为我们可以从表中检索varcharmax。因此,结果将进入一个表中,并使用select获取 dDBDate数据类型。