如何在VBA中将记录集读取为字符串

4

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

例如:

在数据库中:

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

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

Set rs = CmdSqlData.Execute()

那么有没有办法将记录集定义为字符串类型?

以下是代码:

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" - Siddharth Rout
我相信有一个 rs.GetString() 方法。 - Siddharth Rout
@SiddharthRout 刚刚发现,执行 Set rs = CmdSqlData.Execute() 后,记录集本身会以自己的格式存储值。那么有没有办法将记录集定义为字符串? - logan
如果您有代码示例,请将其剪切并粘贴到编辑器中。不要重新输入,因为那可能会引入难以发现的错误。 - JimmyPena
@JP。我正在使用服务器机器工作,所以无法这样做。 - logan
显示剩余6条评论
1个回答

5
如果您编写 < / p>
CStr(p(0,0))

对于单元格而言,Excel会根据内容自动转换为相应的数据类型,所以如果p(0,0)是数字,该单元格将是数字类型。

然而,如果你写入

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

单元格A1将包含'2 to view,但可以被作为字符串操作。这是Excel早期留下的痕迹,当时要输入一个字符串,必须在其前面加上单引号。

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

这在Stackoverflow上是不被赞同的。你改变了问题。 - Fionnuala
在我的测试中,从数据库中存储的时间,无论是作为字符串还是时间格式,都被复制到 Excel 中成为字符串。 您希望 Excel 显示什么?1234 还是 22:02?请注意,如果您之前已将日期复制到单元格中,下次从数据库输入值时它将被存储为日期格式。 从我的表格中选择一个时间和文本: ActiveSheet.Cells(2, 1) = "'" & p(0, 0) ActiveSheet.Cells(3, 1) = "'" & p(1, 0) ActiveSheet.Cells(4, 1) = p(0, 0) ActiveSheet.Cells(5, 1) = p(1, 0) 返回 21:00:00 21:00:00 0.875 0.875 - Fionnuala
@Remou 刚刚发现,执行 Set rs = CmdSqlData.Execute() 后,记录集本身会使用自己的格式存储值;所以有没有办法将记录集定义为字符串类型? - logan
你使用的是哪个数据库? - Fionnuala
@Remou Teradata --> 根据表的数据类型,记录集将其数据类型设置为时间戳。有没有办法将记录集设置为字符串? - logan
显示剩余12条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接