我已经在我的程序的第一个版本中成功运行了一个查询,使用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中不起作用。
有没有解决方案?
谢谢。
问候。
答案 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