我实现密码判定的代码为:
if user='admin' and pass='sys' then
//主窗体打开
else
messagebox('密码错误,请重新输入')
要怎么才能判定三次错误退出系统登录呢?
2、我用combobox显示商品名称,我单击combobox中的商品名称就将该商品名称的相关的信息添加到memo中,将现在的商品的价格加到一起赋给edit。
我现在已经在combobox的change事件中写了如下的代码判定
if pos(combobox1.text+';' , memo1.text)=0 then
memo1.text := memo1.text + combobox1.Text + ';'
else
Application.MessageBox('数据已经存在!','信息提示!',MB_Iconinformation);
所加数据是否重复,combobox中的值是从属性里面直接加如的,也到是能够实现但是,我要用下面的代码:
var
s:String;
I:Integer;
begin
with Table1 do
for I:=0 to RecordCount-1 do
begin
s:=Table1['Name'];
ComboBox1.Items.Add(s);
Table1.Next;
end;
end;
将combobox的值从表当中追加进去,所要的功能就不能实现了(不能判定是否已经添加过),现在麻烦你帮我看看我应该怎么做呢?将table中的name(商品名称添加到combobox),单击combobox中的值就将该名称对应的信息显示在memo中,将选中的商品名称的价格累加赋给edit?
3、我想在关闭窗体之前判定append或者是EDIT、INSERT状态的数据是否已经保存,如果保存过就关闭,没有出现提示信息。请问我应该怎么做呢?
4、我添加了一条记录进行保存,我在保存的时候判定数据是否已经存在,请问我应该怎么做呢?
12 个解决方案
#1
1
if user='admin' and pass='sys' then
//主窗体打开
else
begin
inc(i);
if i<3 then
messagebox('密码错误,请重新输入')
else
Application.Terminate;
if user='admin' and pass='sys' then
//主窗体打开
else
begin
inc(i);
if i<3 then
messagebox('密码错误,请重新输入')
else
Application.Terminate;
#2
1、加一个全局变量,每登录一个,这个全局变量加1,如果这个值大于三了就退出
2、写个循环,for i:=0 to combobmex1.items.count-1 取每一项的值,判断是否添加过。
3、if ds.state in [dsEdit, dsInsert] then
begin
showmessage('数据还没有保存,请保存后退出');
exit;
end;
4、按照主键,取以前的数据判断是否已经存在。
2、写个循环,for i:=0 to combobmex1.items.count-1 取每一项的值,判断是否添加过。
3、if ds.state in [dsEdit, dsInsert] then
begin
showmessage('数据还没有保存,请保存后退出');
exit;
end;
4、按照主键,取以前的数据判断是否已经存在。
#3
1
var i:integer=0;
if user='admin' and pass='sys' then
//主窗体打开
else
begin
inc(i);
if i<3 then
messagebox('密码错误,请重新输入')
else
Application.Terminate;
end;
var i:integer=0;
if user='admin' and pass='sys' then
//主窗体打开
else
begin
inc(i);
if i<3 then
messagebox('密码错误,请重新输入')
else
Application.Terminate;
end;
#4
加全局变量
cs:integer;
.
.
if user='admin' and pass='sys' then
//主窗体打开
else
begin
cs:=cs+1;
if cs>=3 then
begin
showmessage("已经输入3次,系统退出!");
application.terminate;
end;
messagebox('密码错误,请重新输入')
end;
cs:integer;
.
.
if user='admin' and pass='sys' then
//主窗体打开
else
begin
cs:=cs+1;
if cs>=3 then
begin
showmessage("已经输入3次,系统退出!");
application.terminate;
end;
messagebox('密码错误,请重新输入')
end;
#5
if table1.Locate('主键',主键值,[loCaseInsensitive]) then
showmessage("该记录已经存在");
showmessage("该记录已经存在");
#6
麻烦跟2,3,4几个问题讲详细一点好吗?谢谢了
#7
第一个问题:
用一个变量比如i:integer;
只要输入错误就增加1
i:=0;
while i<=3 do
begin
if user='admin' and pass='sys' then
//主窗体打开
else
begin
messagebox('密码错误,请重新输入')
i:=i+1;
end;
end;
if i=4 then
begin
end;
第二个问题:
没有仔细看,不过建议你不要用ComboBox.Text;
用ComboBox.Items[i]
用一个变量比如i:integer;
只要输入错误就增加1
i:=0;
while i<=3 do
begin
if user='admin' and pass='sys' then
//主窗体打开
else
begin
messagebox('密码错误,请重新输入')
i:=i+1;
end;
end;
if i=4 then
begin
end;
第二个问题:
没有仔细看,不过建议你不要用ComboBox.Text;
用ComboBox.Items[i]
#8
2,3,4不要用TTable,最好用TQuery来做。
2
SQL语句:
Select Distinct [Name] From mytable
3if (Query1.State<>dsInsert) and (Query1.State<>dsEdit) and (Query1.State<>dsAppend) then
Application.Terminate;
4用SQL
select * From mytable where field1=:a and field2=:b and ...
parambyname('a').asstring:=a;
...
Active:=True;
if Query1.RecordCount=0 then
Query1.AppendRecord([a,b,...]);
2
SQL语句:
Select Distinct [Name] From mytable
3if (Query1.State<>dsInsert) and (Query1.State<>dsEdit) and (Query1.State<>dsAppend) then
Application.Terminate;
4用SQL
select * From mytable where field1=:a and field2=:b and ...
parambyname('a').asstring:=a;
...
Active:=True;
if Query1.RecordCount=0 then
Query1.AppendRecord([a,b,...]);
#9
我用vb做过类似的,不知是不是一样。
#10
呵呵,学习一下
不过这些问题有这么关键吗?能影响到你日后的路怎么走的问题
good luck
不过这些问题有这么关键吗?能影响到你日后的路怎么走的问题
good luck
#11
东北人:你好!用查询来做追加、修改、插入然后保存吗?那样和用表做那样功能功能好呢
第二个问题你能帮我在我的基础上修改吗
第二个问题你能帮我在我的基础上修改吗
#12
我第一个问题的代码是这样(要实现上面的功能应该怎么改呢):
procedure Tfrmlogin.Button1Click(Sender: TObject);
begin
with table1 do
begin
setkey;
fieldbyname('name').asstring:=edit1.text;
if gotokey then
if edit2.text=fieldbyname('pass').asstring then
begin
frmlogin.close;
if fieldbyname('a1').asstring='是' then
frmmain.N11.visible:=true
else
frmmain.N11.visible:=false;
if fieldbyname('b1').asstring='是' then
frmmain.N111.visible:=true
else
frmmain.N111.visible:=false;
if fieldbyname('c1').asstring='是' then
frmmain.N21.visible:=true
else
frmmain.N21.visible:=false;
if fieldbyname('c11').asstring='是' then
frmmain.N31.visible:=true
else
frmmain.N31.visible:=false;
end
else
begin
showmessage('密码错误,请重新输入!');
edit2.text:='';
edit2.SetFocus();
end
else
begin
showmessage('该用户不存在,请确认!');
edit1.text:='';
edit2.text:='';
edit1.SetFocus();
end
end
end;
procedure Tfrmlogin.Button1Click(Sender: TObject);
begin
with table1 do
begin
setkey;
fieldbyname('name').asstring:=edit1.text;
if gotokey then
if edit2.text=fieldbyname('pass').asstring then
begin
frmlogin.close;
if fieldbyname('a1').asstring='是' then
frmmain.N11.visible:=true
else
frmmain.N11.visible:=false;
if fieldbyname('b1').asstring='是' then
frmmain.N111.visible:=true
else
frmmain.N111.visible:=false;
if fieldbyname('c1').asstring='是' then
frmmain.N21.visible:=true
else
frmmain.N21.visible:=false;
if fieldbyname('c11').asstring='是' then
frmmain.N31.visible:=true
else
frmmain.N31.visible:=false;
end
else
begin
showmessage('密码错误,请重新输入!');
edit2.text:='';
edit2.SetFocus();
end
else
begin
showmessage('该用户不存在,请确认!');
edit1.text:='';
edit2.text:='';
edit1.SetFocus();
end
end
end;
#1
1
if user='admin' and pass='sys' then
//主窗体打开
else
begin
inc(i);
if i<3 then
messagebox('密码错误,请重新输入')
else
Application.Terminate;
if user='admin' and pass='sys' then
//主窗体打开
else
begin
inc(i);
if i<3 then
messagebox('密码错误,请重新输入')
else
Application.Terminate;
#2
1、加一个全局变量,每登录一个,这个全局变量加1,如果这个值大于三了就退出
2、写个循环,for i:=0 to combobmex1.items.count-1 取每一项的值,判断是否添加过。
3、if ds.state in [dsEdit, dsInsert] then
begin
showmessage('数据还没有保存,请保存后退出');
exit;
end;
4、按照主键,取以前的数据判断是否已经存在。
2、写个循环,for i:=0 to combobmex1.items.count-1 取每一项的值,判断是否添加过。
3、if ds.state in [dsEdit, dsInsert] then
begin
showmessage('数据还没有保存,请保存后退出');
exit;
end;
4、按照主键,取以前的数据判断是否已经存在。
#3
1
var i:integer=0;
if user='admin' and pass='sys' then
//主窗体打开
else
begin
inc(i);
if i<3 then
messagebox('密码错误,请重新输入')
else
Application.Terminate;
end;
var i:integer=0;
if user='admin' and pass='sys' then
//主窗体打开
else
begin
inc(i);
if i<3 then
messagebox('密码错误,请重新输入')
else
Application.Terminate;
end;
#4
加全局变量
cs:integer;
.
.
if user='admin' and pass='sys' then
//主窗体打开
else
begin
cs:=cs+1;
if cs>=3 then
begin
showmessage("已经输入3次,系统退出!");
application.terminate;
end;
messagebox('密码错误,请重新输入')
end;
cs:integer;
.
.
if user='admin' and pass='sys' then
//主窗体打开
else
begin
cs:=cs+1;
if cs>=3 then
begin
showmessage("已经输入3次,系统退出!");
application.terminate;
end;
messagebox('密码错误,请重新输入')
end;
#5
if table1.Locate('主键',主键值,[loCaseInsensitive]) then
showmessage("该记录已经存在");
showmessage("该记录已经存在");
#6
麻烦跟2,3,4几个问题讲详细一点好吗?谢谢了
#7
第一个问题:
用一个变量比如i:integer;
只要输入错误就增加1
i:=0;
while i<=3 do
begin
if user='admin' and pass='sys' then
//主窗体打开
else
begin
messagebox('密码错误,请重新输入')
i:=i+1;
end;
end;
if i=4 then
begin
end;
第二个问题:
没有仔细看,不过建议你不要用ComboBox.Text;
用ComboBox.Items[i]
用一个变量比如i:integer;
只要输入错误就增加1
i:=0;
while i<=3 do
begin
if user='admin' and pass='sys' then
//主窗体打开
else
begin
messagebox('密码错误,请重新输入')
i:=i+1;
end;
end;
if i=4 then
begin
end;
第二个问题:
没有仔细看,不过建议你不要用ComboBox.Text;
用ComboBox.Items[i]
#8
2,3,4不要用TTable,最好用TQuery来做。
2
SQL语句:
Select Distinct [Name] From mytable
3if (Query1.State<>dsInsert) and (Query1.State<>dsEdit) and (Query1.State<>dsAppend) then
Application.Terminate;
4用SQL
select * From mytable where field1=:a and field2=:b and ...
parambyname('a').asstring:=a;
...
Active:=True;
if Query1.RecordCount=0 then
Query1.AppendRecord([a,b,...]);
2
SQL语句:
Select Distinct [Name] From mytable
3if (Query1.State<>dsInsert) and (Query1.State<>dsEdit) and (Query1.State<>dsAppend) then
Application.Terminate;
4用SQL
select * From mytable where field1=:a and field2=:b and ...
parambyname('a').asstring:=a;
...
Active:=True;
if Query1.RecordCount=0 then
Query1.AppendRecord([a,b,...]);
#9
我用vb做过类似的,不知是不是一样。
#10
呵呵,学习一下
不过这些问题有这么关键吗?能影响到你日后的路怎么走的问题
good luck
不过这些问题有这么关键吗?能影响到你日后的路怎么走的问题
good luck
#11
东北人:你好!用查询来做追加、修改、插入然后保存吗?那样和用表做那样功能功能好呢
第二个问题你能帮我在我的基础上修改吗
第二个问题你能帮我在我的基础上修改吗
#12
我第一个问题的代码是这样(要实现上面的功能应该怎么改呢):
procedure Tfrmlogin.Button1Click(Sender: TObject);
begin
with table1 do
begin
setkey;
fieldbyname('name').asstring:=edit1.text;
if gotokey then
if edit2.text=fieldbyname('pass').asstring then
begin
frmlogin.close;
if fieldbyname('a1').asstring='是' then
frmmain.N11.visible:=true
else
frmmain.N11.visible:=false;
if fieldbyname('b1').asstring='是' then
frmmain.N111.visible:=true
else
frmmain.N111.visible:=false;
if fieldbyname('c1').asstring='是' then
frmmain.N21.visible:=true
else
frmmain.N21.visible:=false;
if fieldbyname('c11').asstring='是' then
frmmain.N31.visible:=true
else
frmmain.N31.visible:=false;
end
else
begin
showmessage('密码错误,请重新输入!');
edit2.text:='';
edit2.SetFocus();
end
else
begin
showmessage('该用户不存在,请确认!');
edit1.text:='';
edit2.text:='';
edit1.SetFocus();
end
end
end;
procedure Tfrmlogin.Button1Click(Sender: TObject);
begin
with table1 do
begin
setkey;
fieldbyname('name').asstring:=edit1.text;
if gotokey then
if edit2.text=fieldbyname('pass').asstring then
begin
frmlogin.close;
if fieldbyname('a1').asstring='是' then
frmmain.N11.visible:=true
else
frmmain.N11.visible:=false;
if fieldbyname('b1').asstring='是' then
frmmain.N111.visible:=true
else
frmmain.N111.visible:=false;
if fieldbyname('c1').asstring='是' then
frmmain.N21.visible:=true
else
frmmain.N21.visible:=false;
if fieldbyname('c11').asstring='是' then
frmmain.N31.visible:=true
else
frmmain.N31.visible:=false;
end
else
begin
showmessage('密码错误,请重新输入!');
edit2.text:='';
edit2.SetFocus();
end
else
begin
showmessage('该用户不存在,请确认!');
edit1.text:='';
edit2.text:='';
edit1.SetFocus();
end
end
end;