with qry do
    begin
      Close;
      SQL.Clear;
      SQL.Add('Declare @FNewID Varchar(255);Select @FNewID=NewID();Insert Into HX_BJ_Cp(FNewID)Select @FNewID;Select @FNewID As FNewID');
      Open;
    end;
tbEntry.Open;
tbEntry.Insert;
tbEntry.FieldByName('FNewID').AsString:=qry.FieldByName('FNewID').AsString;
//执行到这一行,会出现一个这样的错误:“发生未知错误”
//请教到底是怎么回事,怎么解决?
//非常感谢并急切等待您的回复!!!
......

解决方案 »

  1.   

    SQL.Add('Declare @FNewID Varchar(255);SET NOCOUNT ON;Select @FNewID=NewID();Insert Into HX_BJ_Cp(FNewID)Select @FNewID;SET NOCOUNT OFF;Select @FNewID As FNewID'); 试试
      

  2.   

    1楼的朋友,我试下,还是不行,问题不是在这一句,是在赋值那一句,而且是这种NEWID才会,其它赋值没有问题。
      

  3.   

    HX_BJ_Cp表结构是怎么定义的?
      

  4.   

    4楼的朋友,你好!
    HX_BJ_Cp这个表比较简单,我现在测试只用几个字段,其中有一个是uniqueidentifier,其它是字符串或者数字,应该不是这个问题。
      

  5.   

    如果我把
    tbEntry.FieldByName('FNewID').AsString:=qry.FieldByName('FNewID').AsString;
    这句改为其它字段的处理,就不会有什么问题。
      

  6.   


    with qry do 
        begin 
          Close; 
          SQL.Clear; 
          SQL.Add('Declare @FNewID Varchar(255)')
          SQL.add('Select @FNewID=NewID()');
          SQL.add('Insert Into HX_BJ_Cp(FNewID)');
          SQL.add('select * from HZ_BJ_CP');
          //Select @FNewID;Select @FNewID As FNewID'); 
          Open; 
        end; 
    tbEntry.Open; 
    tbEntry.Insert; 
    tbEntry.FieldByName('FNewID').AsString:=qry.FieldByName('FNewID').AsString; 
      

  7.   

    弱弱的问一下,Query能一次执行多条SQL语句吗?
      

  8.   

    如果qry是ADOQuery的话,那你看看它打开后的RecordSet属性是什么。
      

  9.   

    7楼的方法我试了,还是不行。
    请问10楼的朋友,ADOQuery.RecordSet怎么设置?
      

  10.   

    告诉楼主一个好消息,我在自己的电脑上测试了,Delphi7和Delphi2009下面都没有问题。
    你可以试试:
    var
      s: string;
    begin
      //...
      s := qry.FieldByName('FNewID').AsString;
      //...
    end;
    我猜问题不在qry,而是tbEntry。你用的这个组件可能有bug。实在不行你把调试选项(Debug Options)里面Stop on Delphi exception 打开,看看在哪里出错的。
      

  11.   

    with qry do
        begin
          Close;
          SQL.Clear;
          SQL.Add('Declare @FNewID Varchar(255);Select @FNewID=NewID();Insert Into HX_BJ_Cp(FNewID)Select @FNewID;Select @FNewID As FNewID');
          Open;
          //建议在此加一条语句,测试一下
          showmessage(qry.FieldByName('FNewID').AsString);
          //如果上述语句执行正常,则可断定是tbEntry的问题
          //否则是sql语句的问题
        end;