testid、engineid、guidaoid、pointid这些字段的数据类型都是什么,数值型?还是字符型?

解决方案 »

  1.   

    中断代码,调试出的SQL语句,在查询分析器中能否执行成功?
      

  2.   

    --如果你的字段都是字符型,没有问题,测试如下:create table #t
        (
            testid varchar(100),
            engineid varchar(100),
            guidaoid varchar(100),
            pointid varchar(100),
            testbay varchar(100),
            testsupervisor varchar(100),
            testtype varchar(100),
            groupid as (testid+engineid+guidaoid+pointid)
        )insert into #t(testid,engineid,guidaoid,pointid,testbay,testsupervisor,testtype) 
    values ('2','12','1','ZHSH','2','2','2') select * from #tdrop table #t
     
      

  3.   

    问题大概不在Query本身, 而是出在ADO上吧?检查一下你的Connection Object, Command Object正常不正常, 这些东东稍微写得不对,就执行不了QUERY了.
    下面是一个sample, 你对照着看看吧, 也许你用的不是msado15.dll.#import "C:\Program Files\Common Files\System\ado\msado15.dll" \ 
               rename( "EOF", "adoEOF" )
       ...
       _variant_t  vtEmpty (DISP_E_PARAMNOTFOUND, VT_ERROR);
       _variant_t  vtEmpty2(DISP_E_PARAMNOTFOUND, VT_ERROR);
       ...
       ADODB::_ConnectionPtr  Conn1;
       ADODB::_CommandPtr     Cmd1;
       ADODB::_ParameterPtr   Param1;
       ADODB::_RecordsetPtr   Rs1;   // Trap any error/exception.
       try
       {
           // Create and Open Connection Object.
           Conn1.CreateInstance( __uuidof( ADODB::Connection ) );
           Conn1->ConnectionString =
                               _bstr_t(L"DSN=Biblio;UID=adimin;PWD=;");
           Conn1->Open( _bstr_t(L""), _bstr_t(L""), _bstr_t(L""), -1 );       // Create Command Object.
           Cmd1.CreateInstance( __uuidof( ADODB::Command ) );
           Cmd1->ActiveConnection = Conn1;
           Cmd1->CommandText = _bstr_t(L"SELECT * FROM Authors "
                                       L"WHERE Au_ID < ?");       // Create Parameter Object.
           Param1 = Cmd1->CreateParameter( _bstr_t(L""),
                                           ADODB::adInteger,
                                           ADODB::adParamInput,
                                           -1,
                                           _variant_t( (long) 5) );
           Param1->Value = _variant_t( (long) 5 );
           Cmd1->Parameters->Append( Param1 );       // Open Recordset Object.
           Rs1 = Cmd1->Execute( &vtEmpty, &vtEmpty2, ADODB::adCmdText );   }   catch( CException *e ) { e->Delete(); }
       catch(...)             {  }   
      

  4.   

    字符型,但是groupid是关键字,
    为什么分析查看器中不写关键字也行。而
    vc++使用Ado更新时就不行了呢。把groupid的关键字属性去掉就可以更新了。
      

  5.   

    我在沈阳,用网通线。访问csdn太慢了
      

  6.   

    微软最新的ADO.Net更新后台时,也必须有关键字字段,否则提示错误。
      

  7.   

    wangtiecheng ,那我该怎么办啊?
      

  8.   

    如果你的testid、engineid、guidaoid、pointid 字段都不允许为空,可以以此4个字段做关键字。
      

  9.   

    testid、engineid、guidaoid、pointid 不能为空,但都是可重复的。不能作关键字,