用ADOQuery怎么来实现用SQL来删除和添加记录啊!!应该怎么写??如果用DBGrid来显示记录时,用一按键来实现删除当前记录,另一按键可以增加记录!!具体是怎么样的啊!!我试了很久,还是不得!!麻烦大家看看!!谢谢

解决方案 »

  1.   

    删除:
    AdoQuery.Delete;
    AdoQuery.Post;增加:
    AdoQuery.Append;
    AdoQuery.Fields[0].Asstring := '1';
    AdoQuery.Fields[1].Asstring := 'Name';
    ......
    AdoQuery.Post;
      

  2.   

    不可以啊!!调试的时候在AdoQuery.Post就告诉我出错了![Microsoft][ODBC visual FoxPro Driver]Syntax error就是这样了!!郁闷啊!!
      

  3.   

    添加一个DBNavigator1,其DataSource属性设为和 dbgrid1的DataSource属性相同
    新增记录:
       dbgrid1.ReadOnly:=false;
       dbnavigator1.BtnClick(nbinsert);
          
    删除记录:
       dbnavigator1.BtnClick(nbdelete);
    确定:
       dbnavigator1.BtnClick(nbpost);
       dbgrid1.ReadOnly:=true;
    取消:
       dbgrid1.ReadOnly:=true;
       dbnavigator1.BtnClick(nbcancel);另外,你还可以自定义buttonchange函数控制四个按钮的焦点。比如按下新增按钮,确定和删除按钮激活,删除按钮enabled:=false等
      

  4.   

    是不是用了delphi5,有ado的bug
    在论坛里可下载
      

  5.   

    自己写SQL语句吧!例:
    a:=  a:=dbgrid1.SelectedField.AsString;with adoquery do
      begin
        close;
        sql.clear;
        sql.add('delete from 表 where 某字段=:t1');
        Parameters[0].value:=a;
        execSQL;
      end;
      

  6.   

    a:=  a:=dbgrid1.SelectedField.AsString;//-----有一个小错误!a:=dbgrid1.SelectedField.AsString;//-----应该是这样!
      

  7.   

    如果你得数据集是一个结果集得话,在dbgrid中就不能使用delete,post,add之类得语句,或者使用sql语句案条件执行,或者改用其他得控件,如:Ehlib中的dbGridEh
      

  8.   

    "[Microsoft][ODBC visual FoxPro Driver]Syntax error"
    你的error怎么會是FoxPro的,恐怕是這里有問題!應該是SQL的!
      

  9.   

    可能是你的ODBC連接有問題,來源名稱你應該選擇MQIS ,驅動程序應該是SQL Server的!
      

  10.   

    //新增记录按钮代码
    procedure TW_EducateSetup.BitBtn1Click(Sender: TObject);
    begin
      If Edit2.Text <> '' then
      begin
         ADOQuery2.Close;
         ADOQuery2.SQL.Clear;
         If blnEdit then   // blnEdit 是判断是修改还是增加时的保存
         begin
            ADOQuery2.SQL.Add('UpDate EducateSetup');
            ADOQuery2.SQL.add(' Set EducateName='''+ Edit2.Text +''' Where EducateNum='''+ Edit1.Text +'''');
         end
         else
         begin
            ADOQuery2.SQL.Add('Insert Into EducateSetup');
            ADOQuery2.SQL.add(' (EducateNum, EducateName) Values('''+ Edit1.Text +''','''+ Edit2.Text +''')');
         end;
         ADOQuery2.ExecSQL;
         SeleteSQL;   //初绍化 DBGrid 数据的函数
      end
      Else
         Messagebox(self.Handle,'请输入学历名称!','系统提示信息',MB_OK+MB_ICONINFORMATION);
         Edit2.SetFocus;
    end;// 单击DBGrid时自动把该记录的值显示在各项中,并改变状态为修改
    procedure TW_EducateSetup.DBGrid1CellClick(Column: TColumn);
    begin
       If ADOQuery1.RecordCount <> 0 Then
       begin
          blnEdit := True;
          Edit1.Text := DBGrid1.Fields[0].AsString ;
          Edit2.Text := DBGrid1.Fields[1].AsString ;
       end;
    end;// 鼠标右击记录时弹出删除提示窗
    procedure TW_EducateSetup.DBGrid1MouseUp(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
       If Button = mbRight Then
       begin
          If ADOQuery1.RecordCount <> 0 Then
          begin
             If Application.MessageBox('确认要删除本条信息吗?','系统提示信息',MB_YESNO) = IDYES Then
             begin
                ADOQuery2.Close;
                ADOQuery2.SQL.Clear;
                ADOQuery2.SQL.Add('Delete From EducateSetup');
                ADOQuery2.SQL.add(' Where EducateNum ='''+ DBGrid1.SelectedField.AsString +'''');
                ADOQuery2.ExecSQL;
                SeleteSQL;   //初绍化 DBGrid 数据的函数
             end;
          end;
       end;
    end;//取消按钮的代码 
    procedure TW_EducateSetup.BitBtn3Click(Sender: TObject);
    begin
      SeleteSQL;   //初绍化 DBGrid 数据的函数
    end;yj2k