读书人

100分求教!DBNavigator按确认后数据

发布时间: 2012-03-07 09:13:51 作者: rapoo

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

读书人网 >.NET

热点推荐