下面的代码是为了防止输入表中一个主码的代码,可以出问题了,
procedure Tform3.Edit1Change(Sender: TObject);
beginadoquery2.Close ;
adoquery2.SQL.Clear ;
adoquery2.SQL.Add('select * from stu where s_id=:a');
adoquery2.Parameters.ParamByName('a').Value:=Trim(edit1.Text);
adoquery2.Open;
if adoquery2.RowsAffected>0 then
begin
ShowMessage('书籍已经存在');
edit1.Clear ;
edit1.SetFocus;
end;
end;
问题是if语句好象不起作用,也不会出现‘书籍已经存在'’的对话匡,高手能不能给我看看啊,出什么问题了,是不是ado的RowsAffected这个方法不好啊
procedure Tform3.Edit1Change(Sender: TObject);
beginadoquery2.Close ;
adoquery2.SQL.Clear ;
adoquery2.SQL.Add('select * from stu where s_id=:a');
adoquery2.Parameters.ParamByName('a').Value:=Trim(edit1.Text);
adoquery2.Open;
if adoquery2.RowsAffected>0 then
begin
ShowMessage('书籍已经存在');
edit1.Clear ;
edit1.SetFocus;
end;
end;
问题是if语句好象不起作用,也不会出现‘书籍已经存在'’的对话匡,高手能不能给我看看啊,出什么问题了,是不是ado的RowsAffected这个方法不好啊
解决方案 »
- 菜鸟问题:如何设置combobox的内容
- 怎么作一个实时显示摄像头拍摄内容的程序,而且最好是不考虑摄像头差异的,通用的
- 装了delphi7,rave report怎么用?
- 【讨论】delphi中关于指向函数的指针的一点思考,有兴趣者进!!!
- 谁有DELPHI6.0或7.0的下载地址?
- 怎么得到 表 里面记录的总数?(内祥)
- 示范简单的图象识别,以腾讯网页附加码为例~~
- ADOCommand and ADOQuery and ADODataset and ADOStroedProc 怎么用的, 急
- 怎么获得一个数据库中所有表的名字?立即给分
- 急切寻求帮助!(sql 7数据库)
- 关于dbgrid问题
- 有关打印走纸的问题
象这类问题还是交给后台数据库来完成你想想,你每次Change都去查询后台数据库的话,那效率是很低的所以只需要将你的表设计好就可以了当你提交的数据违反约束时,数据库会直接返回错误信息。
begin
if Trim(edit1.Text)<>'' then//最好加个判断来提高效率
bein//这样效率也不是很好,最好就用Local('s_id',Trim(edit1.Text),[]);如果为真则已经存在
adoquery2.Close ;
adoquery2.SQL.Clear ;
adoquery2.SQL.Add('select count(*) as connum from stu where s_id=:a');
adoquery2.Parameters.ParamByName('a').Value:=Trim(edit1.Text);
adoquery2.Open; if adoquery2.ParamByName('connum').AsInteger>0 then
begin
ShowMessage('书籍已经存在');
edit1.Clear ;
edit1.SetFocus;
end;
end;
end;
只是把增加的代码放在try里面try
//insert 数据
except
//失败
end;
begin
adoquery2.Active := False;
adoquery2.SQL.Clear ;
adoquery2.SQL.Add('select * from stu');
adoquery2.Active := True;
end;procedure Tform3.Edit1Change(Sender: TObject);
begin
if Trim(edit1.Text)<>'' then
bein
if adoquery2.Local('s_id',Trim(edit1.Text),[]) then
begin
ShowMessage('书籍已经存在');
edit1.Clear ;
edit1.SetFocus;
end;
end;
end;//这种方法只能用于当你的数据量不大的时候,
//因为它要先查询好所有记录,再在记录里找你要的数据,这样更快一点。
//也因为这样,你的数据发生改变,如插入、删除或修改后要重新Select * 一遍。
//如果数据量大的话就用你那种方法更好。
象这类问题还是交给后台数据库来完成
你想想,你每次Change都去查询后台数据库的话,那效率是很低的
所以只需要将你的表设计好就可以了
当你提交的数据违反约束时,数据库会直接返回错误信息。在数据集的OnPostError根据错误信息来判断.