【问题标题】:Loop through all fields and change data type循环遍历所有字段并更改数据类型
【发布时间】:2017-01-16 18:38:24
【问题描述】:

不知道我错过了什么。我正在尝试遍历表中的所有字段,如果任何数据类型是 文本,则将其更改为文本。我们有一些字段以数字形式输入,但需要在导出为 .txt 之前转换为文本。我无法在字段中添加引号 - 每个字段只能包含数字和字母。

我已经尝试了以下方法并为每个字段使用了 db.execute alter 行,但在大约第 6 个字段之后我收到运行时 3047 Record Too large syntax 错误。我假设最好以某种方式循环检查每个字段,如果还没有,则只更改为文本?

Dim table As DAO.TableDef
Dim db As DAO.Database
Set db = CurrentDb

db.Execute "ALTER TABLE ImportFromExcel " _
        & "ALTER COLUMN RPT_SPLIT_ID CHAR;"

【问题讨论】:

  • 您将非文本字段转换为文本的唯一原因是因为您需要导出到 .txt 文件吗?如果是这样,那么我认为这是完全没有必要的。当您将数字 25 导出到文本文件时,您无法通过查看生成的文本文件来判断原始数据的数据类型是什么。

标签: ms-access vba


【解决方案1】:

最简单的方法是在 SELECT 语句中将该字段转换为字符串。使用 CStr() 函数将您必须的任何非文本字段转换为文本。如果可能,请始终尝试使用健康的 SQL 查询来收集数据,而不是遍历数据集。在较小的表中可能不会有明显的差异,但对于大型记录集却有很大的不同。试试这个:

SELECT CStr(field1), CStr(field2), CStr(field3)
FROM ImportFromExcel

【讨论】:

  • whatever 有点太宽泛了,因为CStr 会因 Null 值而失败。但是,`Ltrim(Str([field]))` 不会。
猜你喜欢
  • 2017-03-09
  • 2016-07-27
  • 1970-01-01
  • 2014-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多