当我使用ADO时,将varchar转换为double会失败但它在MS Access中有效

时间:2013-09-05 08:16:35

标签: c++ sql ms-access ado

我已经在我的程序的第一个版本中成功运行了一个查询,使用ADO和C ++来查询MS Access 2007数据库。

但是,我的数据库结构必须修改。

曾经是double类型的字段现在是varchar。

当我在修改后的数据库上执行相同的查询时,它会报告数据类型不匹配。

EDITED QUERY以帮助解决第一个解决方案的问题:

以下是我的查询的简化版本:

wchar_t query = L" select ( ads(Field) + Field ) / 2 from MyTable where PrimaryKey = 1;";

字段是double类型,但现在是varchar。

我尝试过这样使用CDbl

wchar_t query = L" select ( abs( CDbl(Field) ) + CDbl(Field) ) / 2 from MyTable where PrimaryKey = 1;";

当我在MS Access中创建查询时,它可以正常工作,但在我的程序中,我仍然会报告数据类型不匹配错误。

我试图在互联网上找到替代品,并且认为CAST或CONVERT可以单独使用它,但似乎它们在MS Access中不起作用。

有没有解决方案?

谢谢。

问候。

1 个答案:

答案 0 :(得分:1)

您是否尝试在查询中将值转换为Double而在运行查询后

CAST和CONVERT不是Access SQL函数

我不使用c ++但是即使使用ADO对象在Access中使用一个小子例程我也无法重现错误......

Sub test()
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Dim db As ADODB.Connection

Set db = CurrentProject.Connection

rs.Open "SELECT (Abs(CDbl(Field))+CDbl(Field))/2 AS A FROM MyTable;", db

While rs.EOF = False
Debug.Print rs!A


rs.MoveNext
Wend

End Sub