请大家帮忙看一段代码,delphi的,关于增加新用户模块的

lijianchuang0702 2008-10-16 11:03:04
unit zhuce;

interface

uses
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.
上面一段代码有错误吗?请大家帮帮吗?
...全文
133 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
7年 2008-10-16
  • 打赏
  • 举报
回复
if edit1.Text='' then
begin
showmessage('新加用户名不能为空.');
edit1.SetFocus;
exit;//要加哦
end
「已注销」 2008-10-16
  • 打赏
  • 举报
回复
我就是想用adoquery呢??总得有解决办法啊,不能看见这个难就躲开吧?
langzulajiao 2008-10-16
  • 打赏
  • 举报
回复
你用adotable好了
ADOTable1.Active := true;
ADOTable1.Insert;
ADOtable1['用户名'] :=edit1.Text;
ADOtable1['密码'] :=edit2.Text;
ADOtable1['第2个密码'] :=edit3.Text;
ADOTable1.Post;
application.MessageBox('用户添加成功,'添加成功',0);

多看看书上例子上面都有的
「已注销」 2008-10-16
  • 打赏
  • 举报
回复
能帮我改改吗?我已经把
with DataModuleye.ADOQuerydenglu do
begin
close;
sql.Clear;
sql.Add('select * from account');
open;
end;
删掉了.....
「已注销」 2008-10-16
  • 打赏
  • 举报
回复
能帮忙改改吗?我把with DataModuleye.ADOQuerydenglu do
begin
close;
sql.Clear;
sql.Add('select * from account');
open;
end;
删掉了。。。。。
「已注销」 2008-10-16
  • 打赏
  • 举报
回复
说 的有道理,那怎么改呢?把DataModuleye.ADOQuerydenglu.post;删掉吗?你能帮忙把这一部分改改吗?谢谢了
寻梦928 2008-10-16
  • 打赏
  • 举报
回复
确实,程序上存在很大的逻辑问题!
ZyxIp 2008-10-16
  • 打赏
  • 举报
回复
1 命名不合理,不要用edit1,edit2 改成 edt_UserName,edt_PassWord 这样的名称

2 将输入内容验证(是否输入名称为空,两个密码是否相同这些)和提交数据库分开.
var
AUserName,APassWord:String;
if CheckInput(AUserName,APassWord) then
if DBAddUser(AUserName,APassWord) then //保存到数据库
showmessage('添加新用户成功.');

错误在 DataModuleye.ADOQuerydenglu.post; 执行后,数据都保存, 后面才问:是否要把新用户资料写入库中

然后又一次的 post .
「已注销」 2008-10-16
  • 打赏
  • 举报
回复
你的代码好像还不行啊,虽然看起来不错,但实质上跟我那个没多少区别啊
「已注销」 2008-10-16
  • 打赏
  • 举报
回复
好,谢谢
nbzip 2008-10-16
  • 打赏
  • 举报
回复

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的,要少用.
我看你第一句就省力了,但后面不用变量,直接写控件加属性,你费力,我们看的也费力.多用变量(私有).
控件命名可以更简洁一些,还有控件命名也要简单明了.
做为新手,你要多加油,呵呵.



「已注销」 2008-10-16
  • 打赏
  • 举报
回复
好,漂亮!
ZyxIp 2008-10-16
  • 打赏
  • 举报
回复
procedure Tzhuceye.CheckInput(var AUserName,APassWord1,APassWord2:String):Boolean;
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;

「已注销」 2008-10-16
  • 打赏
  • 举报
回复
谢谢提醒啊

830

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧