2013-09-05 1 views
0

ADO 및 C++을 사용하여 Microsoft Access 2007 데이터베이스를 쿼리하여 내 프로그램의 첫 번째 버전에서 성공적으로 실행 된 쿼리를 만들었습니다.ADO를 사용할 때 varchar를 double로 변환하면 MS Access에서 작동합니다.

그러나 내 데이터베이스의 구조를 수정해야했습니다.

한 번 유형이 double 인 필드는 이제 varchar입니다.

수정 된 데이터베이스에서 동일한 쿼리를 실행하면 데이터 형식 불일치가보고됩니다.

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

필드 유형을 두 번했다,하지만 지금은 VARCHAR입니다 여기

내 쿼리의 버전을 단순화 :

EDITED 쿼리는 첫 번째 솔루션의 포스터를 도움이됩니다. 나는 MS Access에서 쿼리를 만들 때

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

그것은 작동하지만 내 프로그램에서 나는 여전히 데이터 형식 불일치 오류보고받을 :

이 같은 CDbl를 사용하여 시도했다.

나는 인터넷에서 대안을 찾으려고 노력해 왔으며 CAST 또는 CONVERT가 단독 일 수 있다고 생각했지만 MS Access에서는 작동하지 않는 것으로 보입니다.

어떤 해결책이 있습니까?

감사합니다.

감사합니다.

답변

1

쿼리를 실행하지 않고 의 값을 Double로 변환하려고 했습니까? 쿼리를 실행 한 후에?

나는 C++하지만 심지어 내가 오류를 재현 할 수없는 ADO 개체를 사용하여 Access에서 작은 서브 루틴을 사용 해달라고 ...

CAST 및 SQL 기능에 액세스하지 않는 CONVERT

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 
+0

당신은 몇 가지를 제안하는 경우 코드를 표시하는 방법, 일부 틱을 얻을 수도 있습니다. 그렇지 않으면 질문으로 보입니다. – doctorlove

+0

@ Wietze314, 전체 질문을 볼 수 있도록 솔루션과 관련이 있다고 생각하므로 질문을 업데이트했습니다. ADODB.Recordset 설정 RS =으로 새로운 ADODB.Recordset 희미한 데시벨로 – AlwaysLearningNewStuff

+1

은 내가 오류를 재현 할 수없는 ADO 개체를 사용하여 Access에서 C++하지만, 심지어 작은 서브 루틴을 사용 해달라고 ... 하위 테스트() 희미한 RS ADODB.Connection 세트 DB = rs.Open "SELECT (ABS (CDbl에는 (필드)) + CDbl에는 (필드))을 MyTable에서 AS/2]"은 CurrentProject.Connection DB, 동안 rs.EOF = 거짓 을 Debug.Print의 RS! A * 1.01 rs.MoveNext 나아가 다 최종 하위 – Wietze314