几个简单的问题!麻烦各位进来看看,帮助解决!关系小弟的以后路怎么走的关键问题!!!谢谢了!!!

时间:2021-04-28 11:34:49
1、我要判定密码输入三次错误,系统自动退出;
我实现密码判定的代码为:
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;

#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、按照主键,取以前的数据判断是否已经存在。

#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;

#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;

#5


if table1.Locate('主键',主键值,[loCaseInsensitive]) then
  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]

#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,...]);

#9


我用vb做过类似的,不知是不是一样。

#10


呵呵,学习一下
不过这些问题有这么关键吗?能影响到你日后的路怎么走的问题

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;

#1


1
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、按照主键,取以前的数据判断是否已经存在。

#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;

#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;

#5


if table1.Locate('主键',主键值,[loCaseInsensitive]) then
  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]

#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,...]);

#9


我用vb做过类似的,不知是不是一样。

#10


呵呵,学习一下
不过这些问题有这么关键吗?能影响到你日后的路怎么走的问题

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;