读书人

SQL简单有关问题(送100分)

发布时间: 2012-02-04 15:43:08 作者: rapoo

SQL简单问题(送100分)
正在做1个同学登记软件,碰到了些问题~~~

Edit1.text:='小王';

问1:如果 Edit1.text 等于 表中的 "姓名(列名)" 那么在 "登记时间(列名)" 中登记 (当前数据库所在服务器的时间)

问2:如果 "登记时间(列名)" 中 该同学已经登记过了 那么把(当前数据库所在服务器的时间) - (当时登记的时间)结果保存在Label1.caption中

[解决办法]
下面的代码放在Button click 事件中, 另外代码没有调试

const
RegSQL = 'SELECT * FROM 登记表 WHERE 姓名=''%S''';
begin
ADOQuery1.SQL.Text := Format(RegSQL, [Edit1.Text]);
if ADOQuery1.Active and (ADOQuery1.RecordCount > 0) then begin
ADOQuery1.Edit;
ADOQuery1.FieldByName('登记时间').AsDateTime := Now();
ADOQuery1.Post;
Label1.Caption := ADOQuery1.FieldByName('登记时间').AsString;
end else
ShowMessage('没有找该学生记录');

[解决办法]
ADOQuery1.SQL.Text := Format(RegSQL, [Edit1.Text]);
后面要加上
ADOQuery1.Open;
[解决办法]

Delphi(Pascal) code
with adoquery1 do begin if active then close; sql.clear;//如果 Edit1.text 等于 表中的 "姓名(列名)"  是不是就是判断表中是否存在该人员信息 sql.text:='select * From 表 where 姓名='+quotedstr(edit1.text); open; if not isempty then //判断人员是否存在  if fieldbyname('登记时间').isnull then //判断登记时间列是否为空    begin      close;      sql.clear;      sql.text:='update 表 set 登记时间=getdate() where 姓名='+quotedstr(edit1.text);//添加登记时间      execsql;    end  else    label1.caption:=fieldbyname('登记时间').asstring;//不懂第二点意思,在此显示原来登记的时间  if active then close;  end; 

读书人网 >.NET

热点推荐