设置了主从表,使用了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;
现,往从表插入数据,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;
ADOQ :ADOQUERY
CDSUS :CLIENTDATASET
DBGRID
cdsus.Post;看看是不是这两句反了。
cdsus.Post;
cdsus.ApplyUpdates(0);
数据传回给主表?是说数据在界面上更新出来?那就刷新一下,CLOSE一下,再OPEN一下。
主页面显示的只是各表的主要信息,详细信息要双击打开查看明细。
现,在细表中新增一条记录,想在关闭细表窗口的同时,主窗体的数据也随之发生变化。Louis_WH,你的意思是,在关闭细表的时候,把CDS UPDATE一下,再MAINFORM ADOQ CLOSE OPEN?好的,我试试,谢谢!Louis_WH,如果方便的话,能加一下我QQ吗?