头文件中定义
CString m_RingNum,m_CutMiles,m_SegmentMiles;//与CEDIT控件关联的成员变量CString SqlTemp;
SqlTemp.Format("UPDATE 基环数据 SET 环号=%s WHERE ID=%                    ld",m_RingNum,m_DataID);
m_pDatabase->Execute(SqlTemp);
SqlTemp.Format("UPDATE 基环数据 SET 切口里程=%s WHERE ID=%ld",m_CutMiles,m_DataID);
m_pDatabase->Execute(SqlTemp);
SqlTemp.Format("UPDATE 基环数据 SET 管片里程=%s WHERE ID=%ld",m_SegmentMiles,m_DataID);
m_pDatabase->Execute(SqlTemp);问题是我在相应的CEDIT控件中输入任何非数字字符后(例如输入"hh88"),进行记录更新时,总是不能更新记录,并且显示提示消息"syntax error(missing operator) in query expression'hh88'.
请教高手如何解决这个问题?

解决方案 »

  1.   

    SqlTemp.Format("UPDATE 基环数据 SET 环号='%s' WHERE ID=%                    ld",m_RingNum,m_DataID);//在%s的两端加上单引号
      

  2.   

    你可以将SQL语句先在数据库中直接执行一下,确定SQL语句是否正确。
    另外顺便给你提个建议,不要使用DAO了,使用ODBC或ADO吧。我可是吃过DAO的苦头,再说现在使用DAO的越来越少了。
      

  3.   

    [切口里程],[ID]的数据类型可能是数值型的,当输入非数字字符后(例如输入"hh88"),就会出错,ID可能是数据库的关键字,使用时可以这样
    SqlTemp.Format("UPDATE 基环数据 SET 切口里程=%s WHERE [ID]=%ld",m_CutMiles,m_DataID);