出错就在//if (DM.ADODataSet1_bookyd.State = dsInsert) then
可是小妹不知道如何去改啊!:(

解决方案 »

  1.   

    procedure TForm6.DBEdit1Exit(Sender: TObject);
    var
       asedit:String ;
    begin
       if (DM.ADODataSet1_bookyd.State = dsInsert) then
       begin
          if (dbedit1.GetTextLen()<>6) then
          begin
             ShowMessage('请输入6位的编号!');
             dbedit1.SetFocus();
          end
          else
          begin
             asedit := dbedit1.Text ;
             DM.ADODataSet1_bookyd.Close();
             DM.ADODataSet1_bookyd.CommandText := 'SELECT * FROM bookyd WHERE id = +#39+asedit+#39';//这儿
             DM.ADODataSet1_bookyd.Open();
             wwdbgrid1.Refresh;
          end;
       end;
    end;
      

  2.   

    你插入时的话句写的不正确,如上边就可以;下边
    DM.ADODataSet1_bookyd.CommandText := 'SELECT * FROM bookyd WHERE id = #39+asedit+#39';//这儿
      

  3.   

    还有:
    就是你这个程序看的好像没有错误,但是如下;
    if ... then 
    begin (0)
     if ...then...
      begin//(1)
      end else
      begin //它对应的是(1)
        
      end;
     end;
    现在你再看你的代码,也就是数,当在插入的状态下时,如果
    if it1.GetTextLen()<>6) then不满足时,就会执行:
    asedit := dbedit1.Text ;
             DM.ADODataSet1_bookyd.Close();
             DM.ADODataSet1_bookyd.CommandText := 'SELECT * FROM bookyd WHERE id = +#39+asedit+#39';//这儿
             DM.ADODataSet1_bookyd.Open();
             wwdbgrid1.Refresh;
    此时,你想一想,当前还正处于插入状态,你再写sql语句,肯定是错误的;
    再者,还有一点,不提倡你写:wwdbgrid1.Refresh;
      

  4.   

    还是不清楚啊,
    出错是时候是错在这一行啊://if (DM.ADODataSet1_bookyd.State = dsInsert) then
      

  5.   

    >DM.ADODataSet1_bookyd.CommandText := 'SELECT * FROM bookyd WHERE id = +#39+asedit+#39';//这儿
    我觉得你至少应该看一下你的sql语句,我一般用query,如果query的话,sql应这样写
    query.sql.add('SELECT * FROM bookyd WHERE id = +#39'+asedit+'#39');
    我想你可以跟踪一下你的commandText,asedit会被认为就是一个‘asedit’字串,而不是dbedit1.Text。
    胡乱说的,仅供参考。
      

  6.   

    出错就在//if (DM.ADODataSet1_bookyd.State = dsInsert) then
    可是小妹不知道如何去改啊!:(
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    DM.ADODataSet1_bookyd.State = dsInsert
    这是一个集合,不应这样写;
    if dsinsert in DM.ADODataSet1_bookyd.state
    试一试;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    对应错误,
    if ... then 
    begin (0)
     if ...then...
      begin//(1)
      end else
      begin //它对应的是(0)//不好意思,前边写成了(1)
        
      end;
     end;