unit zhuce;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Grids, DBGrids;type
Tzhuceye = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
ButtonAdd: TButton;
StatusBar1: TStatusBar;
GroupBox2: TGroupBox;
Label4: TLabel;
Edit4: TEdit;
Button1: TButton; procedure ButtonAddClick(Sender: TObject);
//procedure Button1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;var
zhuceye: Tzhuceye;implementation
uses Data,zhuye;
{$R *.dfm}
procedure Tzhuceye.ButtonAddClick(Sender: TObject);
begin
with DataModuleye.ADOQuerydenglu do
begin
close;
sql.Clear;
sql.Add('select * from account');
open;
end;
if edit1.Text='' then
begin
showmessage('新加用户名不能为空.');
edit1.SetFocus;
end
else
if edit2.Text='' then
begin
showmessage('新密码不能为空.');
edit2.SetFocus;
end
else
if edit3.Text='' then
begin
showmessage('新的重复密码不能为空.');
edit3.SetFocus;
end
else
if trim(edit2.Text)<>trim(edit3.Text) then
begin
showmessage('新密码和重复密码不相一致.');
edit2.Text:='';
edit3.Text:='';
edit2.SetFocus;
end
else
begin
// DataModuleye.ADOQuerydenglu.edit;
DataModuleye.ADOQuerydenglu.fieldbyname('Username').AsString:=trim(edit1.Text);
DataModuleye.ADOQuerydenglu.fieldbyname('Password').AsString:=trim(edit2.Text);
DataModuleye.ADOQuerydenglu.post;
end;
If MessageDlg('是否要把新用户资料写入库中?',MtConfirmation,[mbYes,mbNo],0)=mrYes then
begin
DataModuleye.ADOQuerydenglu.post;
showmessage('添加新用户成功.');
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit2.SetFocus;
end
else
begin
//cancel;
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit2.SetFocus;
end;
end;end.
上面一段代码有错误吗?请大家帮帮吗?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Grids, DBGrids;type
Tzhuceye = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
ButtonAdd: TButton;
StatusBar1: TStatusBar;
GroupBox2: TGroupBox;
Label4: TLabel;
Edit4: TEdit;
Button1: TButton; procedure ButtonAddClick(Sender: TObject);
//procedure Button1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;var
zhuceye: Tzhuceye;implementation
uses Data,zhuye;
{$R *.dfm}
procedure Tzhuceye.ButtonAddClick(Sender: TObject);
begin
with DataModuleye.ADOQuerydenglu do
begin
close;
sql.Clear;
sql.Add('select * from account');
open;
end;
if edit1.Text='' then
begin
showmessage('新加用户名不能为空.');
edit1.SetFocus;
end
else
if edit2.Text='' then
begin
showmessage('新密码不能为空.');
edit2.SetFocus;
end
else
if edit3.Text='' then
begin
showmessage('新的重复密码不能为空.');
edit3.SetFocus;
end
else
if trim(edit2.Text)<>trim(edit3.Text) then
begin
showmessage('新密码和重复密码不相一致.');
edit2.Text:='';
edit3.Text:='';
edit2.SetFocus;
end
else
begin
// DataModuleye.ADOQuerydenglu.edit;
DataModuleye.ADOQuerydenglu.fieldbyname('Username').AsString:=trim(edit1.Text);
DataModuleye.ADOQuerydenglu.fieldbyname('Password').AsString:=trim(edit2.Text);
DataModuleye.ADOQuerydenglu.post;
end;
If MessageDlg('是否要把新用户资料写入库中?',MtConfirmation,[mbYes,mbNo],0)=mrYes then
begin
DataModuleye.ADOQuerydenglu.post;
showmessage('添加新用户成功.');
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit2.SetFocus;
end
else
begin
//cancel;
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit2.SetFocus;
end;
end;end.
上面一段代码有错误吗?请大家帮帮吗?
解决方案 »
- 求篇文章,中英文对照的只要和delphi或者sql server有关即可!谢谢!
- 问个dbchart画线的问题,比较抽象的。
- 关于用TNMHTTP实现在线升级,请高手帮忙解析调试,或其他实例!!!
- 有没有高手?
- 怎样实现???
- delphi如何实现对文本文件的访问控制,在线等待
- 请问98下的winipcfg.exe这个软件的功能是怎么实现的
- 怎么取得TreeView中右键单击处的接点
- 各位近来看看这个ADODateSet的问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 统计局域网里的工作组数目,它的代码我看不懂
- 对word文档中有很多bookMarks,但是普通检索是按名字排序的,怎样才能按在文档中先后顺序检索出各个bookMark呢
- 使用TServerSocket和TClientSocket时,如果操作系统是Win2003,哪方面应注意?
var
AUserName,APassWord:String;
if CheckInput(AUserName,APassWord) then
if DBAddUser(AUserName,APassWord) then //保存到数据库
showmessage('添加新用户成功.'); 错误在 DataModuleye.ADOQuerydenglu.post; 执行后,数据都保存, 后面才问:是否要把新用户资料写入库中然后又一次的 post .
begin
close;
sql.Clear;
sql.Add('select * from account');
open;
end;
删掉了。。
with DataModuleye.ADOQuerydenglu do
begin
close;
sql.Clear;
sql.Add('select * from account');
open;
end;
删掉了.....
ADOTable1.Active := true;
ADOTable1.Insert;
ADOtable1['用户名'] :=edit1.Text;
ADOtable1['密码'] :=edit2.Text;
ADOtable1['第2个密码'] :=edit3.Text;
ADOTable1.Post;
application.MessageBox('用户添加成功,'添加成功',0);多看看书上例子上面都有的
begin
showmessage('新加用户名不能为空.');
edit1.SetFocus;
exit;//要加哦
end
begin
Result:=Length(AUserName)>0 and Length(APassWord1)>0 and (APassWord1=APassWord2);
end;function Tzhuceye.DBAddUser(const AUserName,APassWord:String):Boolean;
var
AADOQ:TADOQuery;
begin
Result:=False;
AADOQ:=DataModuleye.ADOQuerydenglu;
With AADOQ do
begin
SQL.Clear;
SQL.Add(Format('Insert Into TableName(UserName,PassWord) values(%s<%s)',
[AUserName,APassWord]));
Result:=ExecSQL>0;
end;
end;procedure Tzhuceye.btn_Add(Sender:TObject);
var
AUserName,APssWord1,APssWord2:String;
begin
AUserName:=Trim(edt_UserName.Text);
APassWord1:=edt_PassWord1.Text;
APassWord2:=edt_PassWord2.Text;
if CheckInput(AUserName,APassWord1,APassWord2) then
if DBAddUser(AUserName,APassWord1) then
showmessage('添加新用户成功.');
end;end;
with DataModuleye.ADOQuerydenglu do
begin
close;
sql.Clear;
sql.Add('select * from account');
open;
end;
t_usr,t_pw,t_repw:string;
t_usr=edit1.Text.trim;
t_pw=edit2.Text.trim;
t_repw=edit3.Text.trim;
if t_usr='' then
begin
showmessage('新加用户名不能为空.');
edit1.SetFocus;
return;
end if t_pw='' then
begin
showmessage('新密码不能为空.');
edit2.SetFocus;
return;
end if t_repw.Text='' then
begin
showmessage('新的重复密码不能为空.');
edit3.SetFocus;
return;
end if t_pw<>t_repw then
begin
showmessage('新密码和重复密码不相一致.');
edit2.Text:='';
edit3.Text:='';
edit2.SetFocus;
return;
end
//=======================
//=============密码和验证密码...这里就可以引申出二个功能.
//=============个人修改(去验证老的密码,再录入新密码和验证密码,)和
//=============万能修改(就是不需要验证的,看你的的程序,就没有去验证老密码,这里就不需要再有一个验证密码了)
//=============个人修改的安全性高,但在实际软件操作过程中,总会有人不知道原密码,需要管理员直接给个新密码的(万能修改)
//=======================
DataModuleye.ADOQuerydenglu.fieldbyname('Username').AsString:=trim(edit1.Text);
DataModuleye.ADOQuerydenglu.fieldbyname('Password').AsString:=trim(edit2.Text);
DataModuleye.ADOQuerydenglu.post;
//========================
//上面你已经更新资料了,下面就不需要了.如果是多层结构,不能直接修改数据表的.(响应请求后,服务给你一个临时表,你看到的都是临时表的情况)
//那么上面修改就不成立,那下面可以加上你的话.不过,需要用SQL语句去修改的.你这样就不对.
/* If MessageDlg('是否要把新用户资料写入库中?',MtConfirmation,[mbYes,mbNo],0)=mrYes then
begin
DataModuleye.ADOQuerydenglu.post;
showmessage('添加新用户成功.');
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit2.SetFocus;
end
else
begin
//cancel;
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit2.SetFocus;
end;
end; *///===============================
程序写出来,要具有可看性,看你的程序一个字,累.现在才是一个简单的功能,如果是十几屏的,估计没人愿意看了.
能不用ELSE的,要少用.
我看你第一句就省力了,但后面不用变量,直接写控件加属性,你费力,我们看的也费力.多用变量(私有).
控件命名可以更简洁一些,还有控件命名也要简单明了.
做为新手,你要多加油,呵呵.