`
wenhai_zhang
  • 浏览: 187822 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

【VBA】使用SQL查询字符串时,长度超过255时被截断问题

 
阅读更多

最近在写一个VBA工具时,遇到一个比较怪异的问题,由于工具使用了ADODB方式查询(在VBA中使用SQL操作方式)处理数据,出现部分单元格的内容被固定的截断了。

 

经过多方查找原因,最后在一些博客中发现了可能存在的原因为Excel使用ADODB操作时,默认会以前8行数据来判断整列的数据类型及结构,包括字符串的长度。如果第9行开始出现都大于前8行中最长的单元格内容时,将会被截断。

 

解决方案是需要修改注册表项“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows 值为更大,但此参数只支持最大16(如果设置为0,则会扫描所有行,大数据时慎重)。

 

此方法暂未验证,明天到公司使用真实数据验证一下。

 

微软官方的问题解决方案:http://support.microsoft.com/kb/189897/

 

 

同时,也有其他同学遇到了插入数据库,发现字段被截断的问题,给出的解决方案是替换单元格内容中所有的单引号,因为单引号在数据库中作为关键字使用,可能内容被提前结束导致字段被截断。

Public Function FormatSql(ByVal strValue As String) As String
100 On Error GoTo errhandle
     
        Const TAG1 As String = "'"
        Const TAG2 As String = "''"
     
        '将一个单引号'替换成两人单引号''
        '如  a'b'c  --> a''b''c
        '    a''b   --> a''''b
102     FormatSql = Replace(strValue, TAG1, TAG2)
     
        Exit Function
     
errhandle:
104     Call PutLog( Erl, Err.Description)
End Function

 CSDN:http://bbs.csdn.net/topics/190013271

 

 

 

 

分享到:
评论

相关推荐

    VBA正则提取A字符串之后B字符串之前中间的内容.txt

    VBA正则提取A字符串之后B字符串之前中间的内容.txt

    excel vba字符串处理大全

    固定长度的字符串声明时包含指字的字符数,例如 `Dim strFixedLong As String*100`,总是只包含 100 个字符,但字符串最长不超过 65526 个字符,且需要使用 Trim 函数去掉字符串中多余的空格。动态字符串可以给该...

    VBA示例之 从字符串提取纯数字

    本示例主要探讨如何利用VBA从字符串中提取纯数字,这对于处理含有混合文本和数字的数据时非常有用。下面我们将深入讲解这个主题。 首先,我们需要了解VBA中的字符串函数,它们是实现这一目标的关键。主要有`Mid`、`...

    VBA-SQL查询超65536行数据并赋值数组.zip

    VBA-SQL查询数据解决数据行超过65536行获取不到数据的问题 VBA-SQL查询数据并赋值给数组 需要使用office的excel、wps适配待研究

    在VBA中处理字符串

    1. **固定长度字符串**:当您知道字符串的最大长度时,可以使用这种类型。 ```vba Dim strFixedLong As String * 100 ``` 这里的字符串长度被限定为100个字符。需要注意的是,字符串的最小长度是1个字符,最大...

    用VBA查找包含某字符串的单元格并标注

    本话题主要关注如何使用VBA来查找包含特定字符串的单元格,并对这些单元格进行颜色标注。这在处理大量数据时尤其有用,可以大大提高工作效率。 首先,我们需要了解VBA的基本结构。VBA代码通常包含模块、子程序(Sub...

    VBA示例之 获取一个字符串中有多少个数字字符

    本示例将探讨如何利用VBA来统计一个字符串中包含的数字字符数量。这对于数据处理和分析尤其有用,比如在处理大量文本数据时,可能需要快速统计其中的数字出现频率。 首先,我们需要了解VBA中的基本概念。`String`...

    vba-sql-Excel.rar_Excel VBA_SQL VBA_VBA SQL_sql excel_sql server

    在IT领域,Excel VBA(Visual Basic for Applications)与SQL Server的交互是常见的数据处理技术。Excel VBA允许用户自定义Excel的功能,而通过VBA连接到SQL Server数据库,则可以实现对大量数据的高效管理和分析。...

    VBA字符串处理大全

    值得注意的是,字符串的最大长度不能超过65526个字符,并且在实际使用过程中需要使用`Trim`函数来移除多余的空格。 2. **动态字符串**:与固定长度字符串不同,动态字符串的长度可以根据需要动态改变。例如,通过...

    vba字符串函数汇总vba_cpp.pdf

    在VBA编程中,字符串操作是经常使用的一种功能,因为几乎所有的程序设计都会涉及到文本数据的处理。VBA提供了丰富的字符串函数以满足不同需求的文本操作,以下是一些基本的VBA字符串函数及其知识点: 1. Len(string...

    vba连接各种数据库字符串

    在上面的代码中,我们首先定义了 ADO 连接对象和记录集对象,然后使用连接字符串打开连接,最后使用记录集对象执行 SQL 查询语句。 VBA 提供了多种连接方式和字符串来连接不同的数据库类型,开发者可以根据实际情况...

    VBA SQL数据查询数据被截断问题.zip

    VBA SQL数据查询数据被截断问题.zip 有些时候我们查询数据,发现有些字段的字符超过256个字符,但是提取不完整字符串,缺失了一部分 需要进行一些操作才能获取得到

    VBA连接SQLSERVER数据库实例.doc

    在本文中,我们将深入探讨如何使用VBA(Visual Basic for Applications)通过ADO(ActiveX Data Objects)连接到SQL Server数据库并执行数据查询。这个过程在Excel中尤其常见,因为VBA是Excel内置的编程环境,允许...

    Excel使用VBA链接SQL全部实例

    本文将详细介绍如何使用 VBA 链接 SQL 数据库,并提供三个示例代码,展示如何使用 VBA 和 ADO 连接对象来执行 SQL 查询。 一、使用 VBA 链接 SQL 数据库 要使用 VBA 链接 SQL 数据库,需要使用 ADO(ActiveX Data ...

    VBA连接SQL数据库的代码

    使用`+`运算符可以有效地将多个字符串拼接在一起,形成完整的SQL查询语句。 #### 三、查询执行时间过长导致VBA提示查询超时的问题 当查询执行时间较长时,VBA可能会提示超时错误。为了避免这种情况,可以通过设置...

    VBA 所有字符串的操作函数

    在使用固定长度字符串时,通常需要使用`Trim`函数去除尾部的空白,以避免出现不必要的空格问题。 ### VBA中的变长字符串 变长字符串变量可以自动调整大小来适应存储的实际字符串长度: ```vb Dim strDynamic As ...

    word vba 如何连接sql数据库

    接下来,定义 SQL 查询命令字符串: ```vba strSQL = "select username from information where sno = '09141324'" ``` 其中,`select` 指定了要查询的字段,`from` 指定了要查询的表名,`where` 指定了查询条件。 ...

    Excel+vba通用SQL查询输出器源码

    Excel+vba通用SQL查询输出器源码 用于对Excel表格的SQL查询,被SQL操作的Excel表格必须有表头,作为类似数据库的字段,并位于表格第一行,SHEET1名称被指定时请注意替换默认的from后的表名称。

    Excel VBA 按byte截取字符串

    Excel VBA 里面有个function可以按byte读取字符串

Global site tag (gtag.js) - Google Analytics