【问题标题】:How to read recordset as string in VBA如何在 VBA 中将记录集读取为字符串
【发布时间】:2012-06-23 11:59:33
【问题描述】:

我有一些代码可以从数据库中读取记录。当我阅读时,记录集变量将表值修改为自己的格式。 例如:

在数据库中

时间值是 12345(不是日期和时间)但是当记录集读取它时,它 例如:23-06-2012 10:15:23

我刚刚发现记录集本身在做之后以自己的格式存储值。

Set rs = CmdSqlData.Execute()

那么有没有办法将记录集定义为String

这里是代码。

Dim rs As ADODB.RecordSet
Set rs = CmdSqlData.Execute()
Do While (rs.EOF = FALSE And rs.BOF = FALSE)
  p = rs.GetRows(1)
  cell(1,1) = p(0,0)
Loop

谁能告诉我如何将数据读取为字符串(就像它在数据库中一样),这样格式就不会发生变化。

注意:由于其他要求,我无法转换 Excel 单元格格式,但我想从表中读取所有内容作为字符串

【问题讨论】:

  • 尝试在cell(1,1)=p(0,0) .. cell(1,1).NumberFormat = "hh:mm:ss"之前添加这一行
  • @SiddharthRout :我不会总是使用这种格式,因为我也有其他列。我可能不知道这种格式什么时候会出现。由于某些要求,我已经为所有单元格制作了 excel 到字符串格式。我只想将记录集读取为“字符串”。有没有其他办法
  • 我相信有一个rs.GetString() 方法。
  • @SiddharthRout :GetRows() 将获取一行中的所有列。同样,GetString() 会获取所有列值吗?

标签: vba excel recordset


【解决方案1】:

如果你写

CStr(p(0,0))

对于单元格,Excel 将转换为适合内容的类型,因此如果 p(0,0) 是数字,则单元格将为数字。

但是,如果你写

ActiveSheet.Cells(1, 1) = "'" & p(0, 0)

单元格 A1 将包含 '2 以供查看,但可以作为字符串进行操作。这是早期的 Excel 遗留下来的,在哪里输入一个字符串,你必须在它前面加上一个单引号。

A1
2   
=A1=2   FALSE
=A1="2" TRUE

【讨论】:

  • + 1 我差点忘了' LOL
  • @SiddharthRout :单引号会被忽略,只有字符串会存储在 excel 中吗? (对不起,我在服务器机器上工作,所以我不能立即检查)
  • @logan 你是什么意思?我解释的哪一部分不清楚(答案是我的,顺便说一句)?
  • @Remou : ActiveSheet.Cells(1, 1) = "'" & p(0, 0) in above ,存储时是否会忽略单引号。
  • 如果将文件输出为.txt,则不包含单个逗号,如果引用ADO中的列,则将其作为文本引用,单个逗号将不相关。跨度>
猜你喜欢
  • 2017-05-12
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
  • 2010-09-23
  • 2017-04-22
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多