请教delbhi程序问题,只有133分了(133分)

  • 主题发起人 主题发起人 xhliang
  • 开始时间 开始时间
你要先..這樣做...
1,先確定edit1和edit2是不是數字和空白...
利用try的方法可以了
try
k:=strtoint(edit1.text);
j:=strtoint(edit2.text);
except
Showmessage('输入数据不正确!');
 Exit;
end;
if k=j then begin
showmessage('數據相同');
exit;
end;
if k>j then begin
l:=k;
k:=j;
j:=l;
end;
for i:= k to j do begin
with adoquery1 do begin
close;
sql.clear;
sql.add('insert into gwj100 (gwjdm,gwjmz,c_date) values (:a,100,GetDate())');
Parameters.ParamByName('a').VALUE :=i;
ExecSQL;
end;
end;
這樣應該可以了
 
改成如下后,还是出错,恳请各位老大指教!
procedure TForm2.Button3Click(Sender: TObject);
var
i,k,j:integer;
begin

try
k:=strtoint(edit1.text);
j:=strtoint(edit2.text);
except
Showmessage('输入数据不正确!');
 Exit;  -------运行至此出错
end;

if k=j then begin
showmessage('數據相同');
exit;
end;
if k>j then begin
l:=k;
k:=j;
j:=l;
end;
for i:= k to j do begin
with adoquery1 do begin
close;
sql.clear;
sql.add('insert into gwj100 (gwjdm,gwjmz,c_date) values (:a,100,GetDate())');
Parameters.ParamByName('a').VALUE :=i;
ExecSQL;
end;
end;
 
各位老大,代码修改如下,当两edit为空,按buttin提示'循环不能为空'后程序还可继续运行。多谢各位指教,但现出现新问题,就是在两edit中输入数据后,变成不能将有关数据插入表中,请各位再帮忙修改,多谢了!
procedure TForm2.Button3Click(Sender: TObject);
begin
if (edit1.text = '') or (edit2.text = '') then
showmessage('循环不能为空!')
else
edit1.SetFocus;
exit;
if strtoint(trim(edit1.text))>strtoint(trim(edit2.text)) then
showmessage('error')
else
edit2.SetFocus;
exit;
begin
for i:=strtoint(edit1.text) to strtoint(edit2.text) do
begin
with adoquery1 do
begin
close;
sql.clear;
sql.add('insert into gwj100 (gwjdm,gwjmz,c_date) values (:a,100,GetDate())');
Parameters.ParamByName('a').VALUE :=i;
ExecSQL

end;

end;
end;
end;
end.
 
procedure TForm2.Button3Click(Sender: TObject);
begin
if (edit1.text = '') or (edit2.text = '') then
showmessage('循环不能为空!');
edit1.SetFocus;
exit;
end;
但是这样也不好,如果是edit2为空 呢?所以可以参照我上面的做法
 
edit3.text:=datetimetostr(now);
if (trim(edit1.text)<>'') or (trim(edit2.text)<>'') then
if strtoint(trim(edit1.text))>strtoint(trim(edit2.text)) then
begin
showmessage('error');
edit2.SetFocus;
exit;
else
begin
for i:=strtoint(edit1.text) to strtoint(edit2.text) do
begin
with adoquery1 do
begin
close;
sql.clear;
sql.add('insert into gwj100(gwjdm,gwjmz,c_date) values ('''+edit1.text+''','100','''edit3.text+'''))';
 
Parameters.ParamByName('a').VALUE :=i;
???这个是参数来的,你的a代表什么?然后在数据库c_date是什么数据类型(datetime?)?
 
问下,没搞明白.你是要把eidt1 edit2里的内容做为两个字段输入,还是要做两条记录输入啊
 
你跟誰人說阿
 
问下,没搞明白.你是要把eidt1 edit2里的内容做为两个字段输入,还是要做两条记录输入啊
-----------------------------------------
是我没说清楚, 实际是eidt1 edit2里的内容是一组数字,如edit1是5,edit2是10,表示要选择5至10的号码。c_date是日期。
 
搞不懂你,如果觉得有什么问题可以拆分来写,不要什么都写到一大块。。。。。
俺也才学一年多,有时候拆分便于分析,呵呵,有是也便于维护。。
 
多人接受答案了。
 
后退
顶部