下列代码执行后,没有任何错误,但就是不修改数据库数据,不知道错在哪里,各位看看.try
datamodform.ADOConDB.BeginTrans; //调用存储过程,存储过程没问题,我已经在SQL分析器里执行,可以修改数据表,但在这里执行,
//却不能修改数据表,怪. with adostoredproc2 do
begin
close;
parameters.ParamByName('@tbname').Value := extra_tablename ;
parameters.ParamByName('@fldname').Value := combobox3.Text ;
parameters.ParamByName('@datatype').Value := vdatatype ;
parameters.ParamByName('@size').Value := spinedit3.Value ;
parameters.ParamByName('@precision').Value := spinedit4.Value ;
execproc;
end;
with ADOQy_uddbstruct do
begin
close;
sql.Clear;
sql.add('select * from uddbstruct where udd_tablename = '''+extra_tablename+'''');
sql.add(' and udd_fldname = '''+combobox3.Text +'''');
open;
if not eof then
begin
edit;
fieldbyname('udd_datatype').AsString := combobox2.Text ;
fieldbyname('udd_size').Asinteger := spinedit3.Value;
fieldbyname('udd_precision').Asinteger := spinedit4.Value;
fieldbyname('udd_res_cn_s').Asstring := edit3.text;
post;
end;
end;
with adoqy_udforms do
begin
close;
sql.Clear;
sql.add('select * from udforms where udf_formname = '''+extra_formname +'''');
sql.add(' and (udf_ctrlname = '''+'lab'+combobox3.Text+'''');
sql.add(' or udf_ctrlname = '''+'grd'+combobox3.Text+''')');
open;
while not eof do
begin
edit;
fieldbyname('udf_caption').AsString := edit3.Text;
post;
next;
end;
end; datamodform.ADOConDB.CommitTrans ;
application.MessageBox('successful to save (提交成功。)','INFORMATION(信息)',MB_ICONINFORMATION+mb_ok);
except
datamodform.ADOConDB.RollbackTrans;
application.MessageBox('修改数据表,提交失败。','错误',MB_ICONERROR+mb_ok);
end;
datamodform.ADOConDB.BeginTrans; //调用存储过程,存储过程没问题,我已经在SQL分析器里执行,可以修改数据表,但在这里执行,
//却不能修改数据表,怪. with adostoredproc2 do
begin
close;
parameters.ParamByName('@tbname').Value := extra_tablename ;
parameters.ParamByName('@fldname').Value := combobox3.Text ;
parameters.ParamByName('@datatype').Value := vdatatype ;
parameters.ParamByName('@size').Value := spinedit3.Value ;
parameters.ParamByName('@precision').Value := spinedit4.Value ;
execproc;
end;
with ADOQy_uddbstruct do
begin
close;
sql.Clear;
sql.add('select * from uddbstruct where udd_tablename = '''+extra_tablename+'''');
sql.add(' and udd_fldname = '''+combobox3.Text +'''');
open;
if not eof then
begin
edit;
fieldbyname('udd_datatype').AsString := combobox2.Text ;
fieldbyname('udd_size').Asinteger := spinedit3.Value;
fieldbyname('udd_precision').Asinteger := spinedit4.Value;
fieldbyname('udd_res_cn_s').Asstring := edit3.text;
post;
end;
end;
with adoqy_udforms do
begin
close;
sql.Clear;
sql.add('select * from udforms where udf_formname = '''+extra_formname +'''');
sql.add(' and (udf_ctrlname = '''+'lab'+combobox3.Text+'''');
sql.add(' or udf_ctrlname = '''+'grd'+combobox3.Text+''')');
open;
while not eof do
begin
edit;
fieldbyname('udf_caption').AsString := edit3.Text;
post;
next;
end;
end; datamodform.ADOConDB.CommitTrans ;
application.MessageBox('successful to save (提交成功。)','INFORMATION(信息)',MB_ICONINFORMATION+mb_ok);
except
datamodform.ADOConDB.RollbackTrans;
application.MessageBox('修改数据表,提交失败。','错误',MB_ICONERROR+mb_ok);
end;
begin
.......
Next;
enb;用Sql语句更新最好
并且,我跟踪的时候,全部正常执行,但就是不修改数据,真是晕呀,而我的"增加过程"却能正确新增数据,真是怪.
begin
.......
post;
refresh;
Next;
enb;
begin
close;
sql.Clear;
sql.add('select * from udforms where udf_formname = '''+extra_formname +'''');
sql.add(' and (udf_ctrlname = '''+'lab'+combobox3.Text+'''');
sql.add(' or udf_ctrlname = '''+'grd'+combobox3.Text+''')');
open;
first;//先定位数据集指针
while not eof do
begin
edit;
fieldbyname('udf_caption').AsString := edit3.Text;
post;
next;
end;