首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

100分求教!DBNavigator按确认后,数据仍未插入成功!该如何解决

2012-03-07 
100分求教!DBNavigator按确认后,数据仍未插入成功!设置了主从表,使用了clientdataset数据集。现,往从表插入

100分求教!DBNavigator按确认后,数据仍未插入成功!
设置了主从表,使用了clientdataset数据集。
现,往从表插入数据,DBNavigator确认后,数据未提交成功。
请大家帮忙找一下代码错误。如能帮我彻底把程序调试搞定,另开帖子500分相送!
我QQ:41775863     谢谢!
procedure   Tcust_user_detail.DBNavigator1Click(Sender:   TObject;
    Button:   TNavigateBtn);
begin
    if   button   =   nbInsert   then
    begin
    cdsus.ApplyRange;
        cdsus.Append;
        with   dmform.ADOQ   do
        begin
            sql.Clear;
            sql.Add( 'select   max(user_id)+1   a   '   +
                            'from   cust_user   where   user_id   <   1000 ');
            open;
            cdsus.FieldByName( 'user_id ').AsFloat   :=   FieldByName( 'a ').AsFloat;
        end;
    if   button   =   nbPost   then
    begin
        cdsus.fieldbyname( 'user_name ').asstring   :=   trim(dbedit1.text);
        cdsus.fieldbyname( 'user_code ').asstring   :=   trim(dbedit2.text);
        cdsus.fieldbyname( 'user_inter_code ').asstring   :=   trim(dbedit2.text);
        cdsus.fieldbyname( 'user_desc ').asstring   :=   trim(dbcombobox1.text);
        //-----------1.定损员添加----------
        if   Trim(DBComboBox1.Text)   =   '定损员 '   then
        begin
            cdsus.fieldbyname( 'user_occup ').asstring   :=   '定损岗 ';
            cdsus.fieldbyname( 'cut_id ').asfloat   :=   1;
            cdsus.fieldbyname( 'user_pwd ').asstring   :=   '9999 ';
            cdsus.fieldbyname( 'user_sign ').asstring   :=   '1 ';
            cdsus.fieldbyname( 'user_name_phon ').asstring   :=   trim(dbedit3.text);
            cdsus.fieldbyname( 'user_firm_code ').asstring   :=   '33013200 ';
            cdsus.fieldbyname( 'user_valid ').asstring   :=   'Y ';
        end;
        //-----------2.B类定损员添加----------
        if   Trim(DBComboBox1.Text)   =   'B类定损员 '   then
        begin
            cdsus.fieldbyname( 'user_pwd ').asstring   :=   '9999 ';
            cdsus.fieldbyname( 'user_sign ').asstring   :=   '1 ';
            cdsus.fieldbyname( 'user_valid ').asstring   :=   '1 ';
        end;
        //-----------3.报价员添加----------
        if   Trim(DBComboBox1.Text)   =   '报价员 '   then
        begin


            cdsus.fieldbyname( 'user_occup ').asstring   :=   '报价岗 ';
            cdsus.fieldbyname( 'cut_id ').asfloat   :=   1;
            cdsus.fieldbyname( 'user_pwd ').asstring   :=   'hzbjzx ';
            cdsus.fieldbyname( 'user_sign ').asstring   :=   '1 ';
            cdsus.fieldbyname( 'user_firm_code ').asstring   :=   '33013200 ';
            cdsus.fieldbyname( 'user_valid ').asstring   :=   'Y ';
        end;
        //-----------4.核损员添加----------
        if   Trim(DBComboBox1.Text)   =   '核损员 '   then
        begin
            cdsus.fieldbyname( 'user_occup ').asstring   :=   '核损岗 ';
            cdsus.fieldbyname( 'cut_id ').asfloat   :=   1;
            cdsus.fieldbyname( 'user_pwd ').asstring   :=   '9999 ';
            cdsus.fieldbyname( 'user_sign ').asstring   :=   '1 ';
            cdsus.fieldbyname( 'user_firm_code ').asstring   :=   '33013200 ';
            cdsus.fieldbyname( 'user_valid ').asstring   :=   'Y ';
        end;
        //-----------5.内勤添加----------
        if   Trim(DBComboBox1.Text)   =   '内勤 '   then
        begin
            cdsus.fieldbyname( 'cut_id ').asfloat   :=   1;
            cdsus.fieldbyname( 'user_pwd ').asstring   :=   '9999 ';
            cdsus.fieldbyname( 'user_sign ').asstring   :=   '1 ';
        end;
        //-----------6.高级查询用户添加----------
        if   Trim(DBComboBox1.Text)   =   '高级查询用户 '   then
        begin
            cdsus.fieldbyname( 'user_pwd ').asstring   :=   '9999 ';
            cdsus.fieldbyname( 'user_sign ').asstring   :=   '1 ';
            cdsus.fieldbyname( 'user_firm_code ').asstring   :=   '33010000 ';
        end;
        //-----------7.B类报价员添加----------
        if   Trim(DBComboBox1.Text)   =   'B类报价员 '   then
        begin
            cdsus.fieldbyname( 'user_pwd ').asstring   :=   '5555 ';
            cdsus.fieldbyname( 'user_sign ').asstring   :=   '1 ';
            cdsus.fieldbyname( 'user_biz_phone ').asstring   :=   trim(dbedit5.text);
        end;
        //-----------8.理算员添加----------


        if   Trim(DBComboBox1.Text)   =   '理算员 '   then
        begin
            cdsus.fieldbyname( 'user_occup ').asstring   :=   '理算岗 ';
            cdsus.fieldbyname( 'user_pwd ').asstring   :=   '9999 ';
            cdsus.fieldbyname( 'user_sign ').asstring   :=   '1 ';
            cdsus.fieldbyname( 'user_firm_code ').asstring   :=   '33010000 ';
        end;

    cdsus.CheckBrowseMode();
    cdsus.ApplyUpdates(0);
    cdsus.Post;
      if       cdsus.UpdateStatus       =       usUnmodified       then
                    cdsus.RefreshRecord;
    dmform.ADOQ.SQL.Clear;
    with   dmform.adoq   do
    sql.add( 'insert   into   cust_user(user_id,cut_id,user_code,   '   +
                                                                'user_inter_code,user_pwd,user_sign,   '   +
                                                                'user_name,user_name_phon,user_desc,   '   +
                                                                'user_biz_phone,user_firm_code,user_occup,   '   +
                                                                'user_valid)   values(:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k,:l,:m) ');
    dmform.adoq.parameters[0].name   :=   'a ';
    dmform.adoq.parameters[0].value   :=   cdsus.fieldbyname( 'user_id ').asfloat;
    dmform.adoq.parameters[1].name   :=   'b ';
    dmform.adoq.parameters[1].value   :=   cdsus.fieldbyname( 'cut_id ').asfloat;
    dmform.adoq.parameters[2].name   :=   'c ';
    dmform.adoq.parameters[2].value   :=   cdsus.fieldbyname( 'user_code ').asstring;
    dmform.adoq.parameters[3].name   :=   'd ';
    dmform.adoq.parameters[3].value   :=   cdsus.fieldbyname( 'user_inter_code ').asstring;
    dmform.adoq.parameters[4].name   :=   'e ';
    dmform.adoq.parameters[4].value   :=   cdsus.fieldbyname( 'user_pwd ').asstring;
    dmform.adoq.parameters[5].name   :=   'f ';
    dmform.adoq.parameters[5].value   :=   cdsus.fieldbyname( 'user_sign ').asstring;
    dmform.adoq.parameters[6].name   :=   'g ';
    dmform.adoq.parameters[6].value   :=   cdsus.fieldbyname( 'user_name ').asstring;


    dmform.adoq.parameters[7].name   :=   'h ';
    dmform.adoq.parameters[7].value   :=   cdsus.fieldbyname( 'user_name_phon ').asstring;
    dmform.adoq.parameters[8].name   :=   'i ';
    dmform.adoq.parameters[8].value   :=   cdsus.fieldbyname( 'user_desc ').asstring;
    dmform.adoq.parameters[9].name   :=   'j ';
    dmform.adoq.parameters[9].value   :=   cdsus.fieldbyname( 'user_biz_phone ').asstring;
    dmform.adoq.parameters[10].name   :=   'k ';
    dmform.adoq.parameters[10].value   :=   cdsus.fieldbyname( 'user_firm_code ').asstring;
    dmform.adoq.parameters[11].name   :=   'l ';
    dmform.adoq.parameters[11].value   :=   cdsus.fieldbyname( 'user_occup ').asstring;
    dmform.adoq.parameters[12].name   :=   'h ';
    dmform.adoq.parameters[12].value   :=   cdsus.fieldbyname( 'user_valid ').asstring;
    dmform.ADOC.BeginTrans;
    dmform.ADOQ.Prepared;
    dmform.ADOQ.ExecSQL;
    dmform.ADOC.CommitTrans;   //dmform.ADOC.RollbackTrans;
    dmform.ADOQ.Close;
    end;
    end;
end;


[解决办法]
把cdsus.ApplyRange;去掉看看
[解决办法]
cdsus.ApplyUpdates(0);
cdsus.Post;

看看是不是这两句反了。
cdsus.Post;
cdsus.ApplyUpdates(0);
[解决办法]
先post然后再applyupdates
[解决办法]
你的代码这样写DBNavigator就已经失去了其存在的意义了。
数据传回给主表?是说数据在界面上更新出来?那就刷新一下,CLOSE一下,再OPEN一下。
[解决办法]
先post
然后rufresh

热点排行