我用ADOQUERY查询到若干条记录显示到了dbgrid中(字段有id,name,date)
现在要求将指针指到的记录内容显示到
edit1,edit2,和datetimepicker中然后有要实现4个功能新增:在原有的基础上做小的改动,比如只改动id, name 和date不变,成为一条新记录添加到数据库
修改:改变这条记录的内容。
下一条:将查询得出的记录后移一条,即edit1,edit2,datetimepicker的内容变成查询到的下一条记录
取消:所做的改动不改动到数据库,并退出改界面不知道可不可以完成这些功能,可以的话,请贴出示范代码。
可以运行立即给分

解决方案 »

  1.   

    用dbedit与dbdatetimepicker就了行了啊。新增:先用adoquery.fieldbyname('id').asinteger:=来取id等的值,再用这个来直接赋值。如果一定要用edit也是如此,在AfterScroll事件中赋值就可以了用批量提交。
      

  2.   

    都可以轻松实现,不过问题太多,示范代码要多长呀?
    -------------------------------
    1:将指针指到的记录内容显示到
    edit1,edit2,和datetimepicker中
    ============
    procedure TForm1.adoq1AfterScroll(DataSet: TDataSet);
    var inout:string;
    begin
    if edt_sum.Tag=1 then exit;  
    try
      edt_sum.Text:=adoq1.fieldbyname('金额').AsString;
      memo_note.Text:=adoq1.fieldbyname('备注').AsString;
      edt_date.text:=adoq1.fieldbyname('日期').AsString;
      inout:=adoq1.fieldbyname('类别').AsString;
    -----------------------------以上供参考--------------
    2。新增:把不想让人改的文本框设为只读。
    再用sql添加进去就可以了3。修改,好象是用UPDATA
    4。下一条。ADOQUERY好象有MOVE方法。(或者是MOVETO)5。取消。对数据库不进行任何操作,把你的edit1,edit2,和datetimepicker内容复位即可。
      

  3.   

    AdoQuery 的AfterScroll事件
    edit1.text := AdoQuery.FieldByName('id').Asstring;
    edit2.text := AdoQuery.FieldByName('name').Asstring;
    datetimepicker.date := AdoQuery.FieldByName('date').AsDatetime;新增
    adoquery.insert;
    edit1.clear;
    在edit1输入值后保存下一条
    adoquery.next;取消
    ADOQuery1.CancelBatch(arAll);
      

  4.   

    修改
    adoquery.edit;
    修改edit1,edit2,datetimepicker后保存
    adoquery.fieldByName('id').asstring := edit1.text;
    adoquery.fieldByName('name').asstring := edit2.text;
    adoquery.fieldByName('date').asdatetime := datetimepicker.date;
      

  5.   

    dbdatetimepicker找不到,
    用dbedit可以自动赋值,而且用navigator可以实现上面所有的操作但是navigator要新增记录,先要append然后再post.
    这时,dbedit里的原来内容都清空了,所有的内容都要我再输入一遍。
    这不是我想要的。而且不用datetimepicker输入比较麻烦。
    所以我想自己手写每个按健。
    但是老是出错。所以上来问问
      

  6.   

    好,对edit1,edit2,datetimepicker赋值我都可以做了。next我也知道了
    取消 ADOQuery1.CancelBatch(arAll);好象没反应。
    新增和修改到底怎么做啊?
      

  7.   

    好,修改也做完了。
    是adoquery1.edit;
    adoquery.fieldByName('id').asstring := edit1.text;
    adoquery.fieldByName('name').asstring := edit2.text;
    adoquery.fieldByName('date').asdatetime := datetimepicker.date;
    adoquery.updaterecord;
    现在就剩下新增和取消了大家快来拿分啊
      

  8.   

    新增还是做不出来, 新增后产生错误
    adoquery1.Open;
    adoquery1.insert;(或者adoquery1.append;)
    adoquery1.FieldByName('num').AsString:=edit1.Text;
    adoquery1.FieldByName('name').AsString:=edit2.Text;
    adoquery1.ExecSQL;(或者adoquery1.post;)
    都不行.请教正确的做法.
    大家救救我吧.
      

  9.   

    删除也做出来了,代码为
    adoquery1.open;
    adoquery1.Delete;现在只有新增了,各位大哥
    讲一下方法吧
      

  10.   

    不好意思,来晚了,还要新增的代码吗?adoq1.SQL.Clear;
    adoq1.SQL.Add('INSERT INTO WEEKDAY');//weekday是表名称,是我程序中的,绝对通过。
    adoq1.SQL.Add('(序号 , 日期 , 类别 , 金额 , 结余 , 备注) VALUES( ');
    adoq1.SQL.Add(' '''+INTTOSTR(tMAX)+''' ,');
    adoq1.SQL.Add(''''+EDT_DATE.TEXT+''',');
    adoq1.SQL.Add(' '''+inout+''',');
    adoq1.SQL.Add(' '''+EDT_SUM.TEXT+''',');
    adoq1.SQL.Add(' '''+currToStr(ibalance)+''',');
    adoq1.SQL.Add(' '''+memo_note.text+''')');
    adoq1.ExecSQL;
    adoq1.SQL.Clear;
    adoq1.SQL.Add('select * from weekday') ;
    adoq1.Close;
    adoq1.Open;
    adoq1.Last;
      

  11.   

    多谢jun_01(张军 ← 一步一步往前爬!) 大哥了!我还有很多问题要问,希望大家帮帮小弟。