我想做一个表单:
此表单连接一个数据库的表,上面用几个显示此数据库的 DBEDIT 显示此数据的几个字段,下面用一个 DBGRIDEH 来显示此数据的所有记录,最后用几个 BUTTON 来操作这个表
一个BUTTON用来‘添加’
一个BUTTON用来‘修改’
一个BUTTON用来‘删除’
最后二个 一个‘确认’ 一个‘取消’
现在的问题是:我要点‘添加’ 和‘修改’时,并不真的添加和修改,只是把‘确认’和‘取消’变为可按状态,只在‘确认’和‘取消’中执行操作。还有在‘添加’和‘修改’时我想先检查一下表字段‘DWBM’里有没有重复的,有的话不添加,给出提示信息,
请问我几个按钮的代码要怎么写,谢谢!
此表单连接一个数据库的表,上面用几个显示此数据库的 DBEDIT 显示此数据的几个字段,下面用一个 DBGRIDEH 来显示此数据的所有记录,最后用几个 BUTTON 来操作这个表
一个BUTTON用来‘添加’
一个BUTTON用来‘修改’
一个BUTTON用来‘删除’
最后二个 一个‘确认’ 一个‘取消’
现在的问题是:我要点‘添加’ 和‘修改’时,并不真的添加和修改,只是把‘确认’和‘取消’变为可按状态,只在‘确认’和‘取消’中执行操作。还有在‘添加’和‘修改’时我想先检查一下表字段‘DWBM’里有没有重复的,有的话不添加,给出提示信息,
请问我几个按钮的代码要怎么写,谢谢!
with query do
begin
close;
sql.clear:
sql.text:="select count(*) as sl from 表 where 表.dwbm=:(变量)录入的记录";
sql.execsql;
end;
if sl>=1 then //如果sl大于1,说明已经有了当前的记录,出现重复情况。
messagebox("当前记录已经存在");
exit;
有问题请加QQ:19533286,大家共同学习。
前面的没太看明白,解释一下“判断数据库里是否已经有此记录,如果有,给出提示”
就是如果有这条记录就是要确定‘DWBM’唯一,但数据库里 ’DWBM‘并不是索引。
TO alonesnake(一盘菜):
呵呵,我毕业一年了,不过不是计算机专业。TO whbo(王红波) :好,谢谢,期待中`````。
不如你把自己的代码贴出来,我们改吧。象你上面说得,难道你的添加和修改代码就只把那两个button,enable了?你不会在添加里没写append或insert,在修改前没把table置为eidt吧。把你button的代码给出来,我们改。
begin
dm.ADOQ2.SQL.Clear;
dm.ADOQ2.SQL.Text:='select * from wzmingcheng';
dm.ADOQ2.Active:=true;
end;procedure Twzmc_form.Button1Click(Sender: TObject);
begin
dm.ADOQ2.Append;//添加按钮 我想按下此按钮时变为可添加状态,然后添加。
end;procedure Twzmc_form.Button2Click(Sender: TObject);
begin
//我还没写 修改按钮 我想按下此按钮时变为可编辑状态,然后编辑。
end;
procedure Twzmc_form.Button3Click(Sender: TObject);
begin
//还没写, 删除,
end;
procedure Twzmc_form.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
key:=#0;
perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
end;
end;procedure Twzmc_form.Button4Click(Sender: TObject);
begin dm.ADOQ2.Post; //确定按钮,还不会写。
end;
procedure Twzmc_form.FormShow(Sender: TObject);
begin
dm.ADOQ2.SQL.Clear;
dm.ADOQ2.SQL.Text:='select * from wzmingcheng';
dm.ADOQ2.Active:=true;
end;procedure Twzmc_form.Button1Click(Sender: TObject);
begin
Button4.setfocus;
// dm.ADOQ2.Append;//添加按钮 我想按下此按钮时变为可添加状态,然后添加。
end;procedure Twzmc_form.Button2Click(Sender: TObject);
begin
Button4.setfocus;
//我还没写 修改按钮 我想按下此按钮时变为可编辑状态,然后编辑。
end;
procedure Twzmc_form.Button3Click(Sender: TObject);
begin
Button4.setfocus;
//还没写, 删除,
end;
{procedure Twzmc_form.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
key:=#0;
perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
end;
end;}procedure Twzmc_form.Button4Click(Sender: TObject);
begin
if Button1.Click then
begin
dm.ADOQ2.Append;
end;
if Button2.Click then
begin
dm.ADOQ2.delete;
end;
if Button3.Click then
begin
dm.ADOQ2.edit;
end;
// dm.ADOQ2.Post; //确定按钮,还不会写。
end;
写完了才知道没有多大意义,而且这样的逻辑也是错误的
[email protected]
按正常应该怎么写。
你点添加就是ReadOnly:=false,再APPEND一个记录把.输入完后再确定就是POST进去...ReadOnly:=True
点修改就是把数据库的ReadOnly从TRUE变成FALSE..确定修改后再重新READONLY:=TRUE;
http://community.csdn.net/Expert/topic/3603/3603884.xml?temp=5.001467E-02
和此贴一起结贴
procedure Twzmc_form.SetButton;
begin
if dm.ADOQ2.state in [dsedit,dsinsert] then
begin
Button4.Enable := True;
Button5.Enable := Button4.Enable;
end
else
Button4.Enable := False;
Button5.Enable := Button5.Enable;
end; // 假如ADOQ2处于增加或编辑状态, 则确定取消按钮可用;
end;
procedure Twzmc_form.FormShow(Sender: TObject);
begin
dm.ADOQ2.Close;
dm.ADOQ2.SQL.Clear;
dm.ADOQ2.SQL.Text:='select * from wzmingcheng';
dm.ADOQ2.Active:=true;
SetButton; // 窗体显示时设置按钮状态; 确定取消此时应该是不可用;
end;procedure Twzmc_form.Button1Click(Sender: TObject);
begin
dm.ADOQ2.Append;//添加按钮 我想按下此按钮时变为可添加状态,然后添加。
SetButton; // 现处于添加状态,确定取消按钮此时应该是可用;
end;procedure Twzmc_form.Button2Click(Sender: TObject);
begin
dm.ADOQ2.Edit;//编辑按钮 我想按下此按钮时变为可添加状态,然后添加。
SetButton; // 现处于编辑状态,确定取消按钮此时应该是可用;
end;
procedure Twzmc_form.Button3Click(Sender: TObject);
begin
try
if not DM.ADOQ2.Isempty then
DM.ADOQ2.Delete; //删除按钮
except
// ------处理异常代码
end;
end;procedure Twzmc_form.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
key:=#0;
perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
end;
end;procedure Twzmc_form.Button4Click(Sender: TObject);
begin
try
DM.ADOQ2.connection.BeginTrans; 开始事务
dm.ADOQ2.Post; //确定按钮,还不会写。
SetButton; // 设置确定取消为不可用
DM.ADOQ2.connection.CommitTrans; 提交事务必
except
DM.ADOQ2.connection.RollbackTrans 事务回流
// 其它异常处理代码
end;
end;
procedure Twzmc_form.Button5Click(Sender: TObject);
begin
DM.ADOQ2.Cancel; //取消按钮
SetButton;
end;
// 我也不知道你是不是这个意思. 呵呵看我这么累给点分吧
http://community.csdn.net/Expert/topic/3603/3603884.xml?temp=.2292597