m_db.Execute("delete from CombInfo where (NO4=NO3+1 and NO3=NO2+1 and NO2=NO1+1) or (NO5=NO4+1 and NO4=NO3+1 and NO3=NO2+1)");
上面的sql语句问什么不能正确执行?编译可以通过.语句中的NO几,都代表数字,想实现的功能是如果整数NO1 NO2 NO3 NO4 NO5有4个或全部连续则删除,如前4个连续1 2 3 4 7 ,全部连续  4 5 6 7 8 9 ,后4个连续2 5 6 7 8 ,另外,数字是以整型存储的.

解决方案 »

  1.   


    CString str;
    str.Format("delete from CombInfo where (%ld=%ld+1 and %ld=%ld+1 and %ld=%ld+1) or (%ld=%ld+1 and %ld=%ld+1 and %ld=%ld+1, NO4, NO3, NO3, NO2, NO2, NO1, NO5, NO4, NO4, NO3, NO3, NO2)");
    m_db.Execute(str);
      

  2.   

    楼上正解,
    另外程序里的sql语句最好先在数据库里运行一下,看有错误没
      

  3.   

    CString str;
    str.Format("delete from CombInfo where (%ld=%ld+1 and %ld=%ld+1 and %ld=%ld+1) or (%ld=%ld+1 and %ld=%ld+1 and %ld=%ld+1, NO4, NO3, NO3, NO2, NO2, NO1, NO5, NO4, NO4, NO3, NO3, NO2)");
    m_db.Execute(str);怎么显示查询表达式中逗号语法错误?我试着改了改但水平有限,还是不行.谢谢楼上2位的回答
      

  4.   

    CString str;
    str.Format("delete from CombInfo where (%ld=%ld+1 and %ld=%ld+1 and %ld=%ld+1) or (%ld=%ld+1 and %ld=%ld+1 and %ld=%ld+1)", NO4, NO3, NO3, NO2, NO2, NO1, NO5, NO4, NO4, NO3, NO3, NO2);
    m_db.Execute(str);
      

  5.   

    error C2065: 'NO4' : undeclared identifier
    D:\MyProjects\Comb\CombDlg.cpp(231) : error C2065: 'NO3' : undeclared identifier
    D:\MyProjects\Comb\CombDlg.cpp(231) : error C2065: 'NO2' : undeclared identifier
    D:\MyProjects\Comb\CombDlg.cpp(231) : error C2065: 'NO1' : undeclared identifier
    D:\MyProjects\Comb\CombDlg.cpp(231) : error C2065: 'NO5' : undeclared identifier
    Error executing cl.exe.Comb.exe - 5 error(s), 0 warning(s)
    谢谢  syy64(太平洋) ( ) 信誉:145 
     但这样有错误~不知道怎么回事.呵呵,再帮帮忙吧,小弟学艺不精
      

  6.   

    error C2065: 'NO4' : undeclared identifier
    D:\MyProjects\Comb\CombDlg.cpp(231) : error C2065: 'NO3' : undeclared identifier
    D:\MyProjects\Comb\CombDlg.cpp(231) : error C2065: 'NO2' : undeclared identifier
    D:\MyProjects\Comb\CombDlg.cpp(231) : error C2065: 'NO1' : undeclared identifier
    D:\MyProjects\Comb\CombDlg.cpp(231) : error C2065: 'NO5' : undeclared identifier
    Error executing cl.exe.
    ??
    NO4都没有定义嘛
      

  7.   

    mymmx200(脑袋进了水) ( ) 信誉:100 
      都是字段名.谢谢
      

  8.   

    SQL语句有问题吧!
    where后面的用字段名称进行算术操作好像不行的吧!
    拿去数据库中试一下就知道了!
      

  9.   

    where后面的用字段名称进行算术操作好像不行的吧!
    ...............
    可以.
      

  10.   

    delete CombInfo where (NO1=No2-1 and no2=no3-1 and no3=no4-1)
    or ( no2=no3-1 and no3=no4-1 and no4=no5-1)
      

  11.   

    where 后面要跟字段名吧?不然怎么知道no1是哪个字段的值啊?好象要用存储过程来处理了.
      

  12.   

    no1----no5就是字段名的
    CString str;
    str="delete CombInfo where (NO1=No2-1 and no2=no3-1 and no3=no4-1)or ( no2=no3-1 and no3=no4-1 and no4=no5-1)";
    m_db.Execute(str);