一个很菜很菜的问题 (50分)

  • 主题发起人 主题发起人 新手入门
  • 开始时间 开始时间

新手入门

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);

begin
table1.active:=true;
table1.edit;
table1.append;
table1.FieldByName('bm').Asstring:=edit1.text;
table1.fieldbyname('xm').asstring:=edit2.text;
table1.fieldbyname('rq').asdatetime:=data.date;
Table1.post;

end;
我想通过messagedlg('是否继续添加数据吗?',mtconfirmation,mbyesnocancel,0)元件
来重复曾加记录,但不知循环语句怎么写,还望各位大哥帮帮忙。谢谢
 
while true do
begin
...
if MessageDlg('Welcome to my Object Pascal application. Exit now?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then exit;

end;
 
var
xw:boolean; //询问
begin
table1.active:=true;
xw:=true; //默认出现询问提示
while xw=true do
begin
if messagedlg('是否继续添加数据吗?',mtconfirmation,mbyesnocancel,0)=mryes then
begin
table1.append;
table1.FieldByName('bm').Asstring:=edit1.text;
table1.fieldbyname('xm').asstring:=edit2.text;
table1.fieldbyname('rq').asdatetime:=data.date;
Table1.post;
xw:=true;
end //以上部分为选择“是”时增加数据,默认继续出现询问提示
else
xw:=false; // 其他情况退出,不再出现提示,不再增加数据
end;
end;


建议:
每次增加数据都询问用户并不好,会让用户感觉很麻烦,影响操作的流畅性,
尤其是集中录入数据时更会让用户觉得不方便;
 
[Error] Unit1.pas(33): Declaration expected but 'WHILE' found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

出现这样的错误该怎么办?
 
请使用INSERT INTO 语句
 
xw:=true后是否少了分号?
 
检查语法,应该有部分语法出现错误
可能在WHILE 的前一条语句最后少了个";"
 
谢谢各位啦
 
来重复曾加记录,但不知循环语句怎么写
这句话是什么意思
 
定义一个全局变量 sltMyList: TStringList来保存数据,一个bRepeatInput: boolean;
来表示是不是要重复输入(也就是你的messagedlg的返回值);
procedure yourDataSetBeforeInsert(DataSet: TDataSet);
var
i: integer;
begin
inherited;
sltMyList.Clear;
if bRepeatInput then
for i := 0 to DataSet.FieldCount - 1 do
begin
if not DataSet.Fields.ReadOnly then
sltMyList.Add(DataSet.Fields.AsString);
end;
end;

procedure yourDataSetAfterInsert(DataSet: TDataSet);
var
i, j: integer;
begin
if bRepeatInput then
begin
j := 0;
for i := 0 to DataSet.FieldCount - 1 do
if not DataSet.Fields.ReadOnly then
begin
DataSet.Fields.AsString := sltMyList.Strings[j];
inc(j);
end;
end;
 
lanbing1400大哥,我照你的输进去运后还是报错,也不知道什么原因。
另,当选择YES后又该如何写一个类似if key = 13 then edit1.SetFocus这样的ONKEYDOWN
事件,把光标跳到EDIT1那里去呢?谢谢

还有就是WUMENG大哥写的太深奥了,都看不明白。
 
>>当选择YES后又该如何写一个类似if key = 13 then edit1.SetFocus这样的ONKEYDOWN
事件,把光标跳到EDIT1那里去呢?谢谢

if messagedlg('是否继续添加数据吗?',mtconfirmation,mbyesnocancel,0)=mryes then
begin
table1.append;
edit1.SetFocus;// 这里就行了。
table1.FieldByName('bm').Asstring:=edit1.text;
 
后退
顶部