如何判断数据库中的数据已经存在??很简单的!!

tflb 2003-08-18 10:26:35
例如我有一个DBedit是学号,输入新的学号后判断新学号是否已经存在!如果存在弹出错误信息,如果不存在执行下一步!先谢谢了!!
...全文
215 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzjzhao 2003-08-26
  • 打赏
  • 举报
回复
艺无止境

建议另加一ADOQuery进行判断
datamodule1.ADOQ_query.
procedure TF_main.suiButton15Click(Sender: TObject);
begin
with datamodule1.ADOQ_query. do
begin
close;
SQL.Clear;
SQL.Add('select * from 学生表 where 学号=:xh');
parabyname('xh'):= trim(dbedit1.text);
open;
if recordcount>0 then
begin
smd1.Caption := '系统提示';
smd1.Text:= '您输入的"学号"在系统中已经存在,请重新输入!';
smd1.ShowModal;
dbedit1.SetFocus ;
exit;
end;
datamodule1.adoq_xs.post;
end;
这样不会影响你向数据库写入东西;


hiflower 2003-08-26
  • 打赏
  • 举报
回复
QuotedStr('dbedit.text'));这里应该怎么写呀!

QuotedStr(dbedit.text));
tflb 2003-08-25
  • 打赏
  • 举报
回复
up
tflb521 2003-08-24
  • 打赏
  • 举报
回复
不懂!!:(
karach 2003-08-24
  • 打赏
  • 举报
回复
if select ...=DbEdit then
you la
tflb 2003-08-24
  • 打赏
  • 举报
回复
还是不行呀!能不能给写一个完整点的??
kejian 2003-08-23
  • 打赏
  • 举报
回复
if datamodule1.ADOQ_xs.recordcount>0 then
begin
smd1.Caption := '系统提示';                -+
smd1.Text:= '您输入的"学号"在系统中已经存在,请重新输入!'; |==这段用showmessage
smd1.ShowModal;                      -+ 不行吗?
dbedit1.SetFocus ;
exit;
end;





====================================================================

像和尚的唐僧。。。

====================================================================
chz_ok 2003-08-23
  • 打赏
  • 举报
回复
if adotable1.locate('学号字段名',edit1.text,[]) then
shoemessage('库中以有该学号的记录!');
tflb 2003-08-23
  • 打赏
  • 举报
回复
up
pairs 2003-08-23
  • 打赏
  • 举报
回复
你的思路没有什么问题,不过在datamodule1.adoq_xs.post;之前要加上
datamodule1.adoq_xs.Edit;
jiuqiang 2003-08-23
  • 打赏
  • 举报
回复
pairs是对的。
tflb 2003-08-23
  • 打赏
  • 举报
回复
if datamodule1.ADOQ_xs.locate('学号',dbedit1.text,[]) then
showmessage('库中以有该学号的记录!');

if datamodule1.ADOQ_xs.locate('学号',dbedit1.text,[]) then
begin
showmessage('库中以有该学号的记录!');
end;
都不进行判断呀!!!请在指点一下???
CHINAIMP 2003-08-23
  • 打赏
  • 举报
回复
用你DBedit连接的Query或者Table使用Locate('学好',xuehao,[]),如果存在就返回True,失败False
tflb 2003-08-23
  • 打赏
  • 举报
回复
我只是想判断一下新输入的'学号'在数据库里有没有,如果没有哪么就向下进行,如果有哪么就提示"已经有了
对于大家的帮助我非常高兴,但有的我看不懂,有的看懂了,但应用一个不行,
希望哪位大大能帮助给写一个,能实现就行,或者帮助改一下也行,在此谢过了!!
zhiwuyang602 2003-08-23
  • 打赏
  • 举报
回复
你是如果不存在就添加吧?
这样啊
query1.sql := 'insert ....................................';
try
query1.execsql ;
except on exception do
if exception.message=reason1 then
else if exception.message=reason2 then
else

......
end;
tflb 2003-08-23
  • 打赏
  • 举报
回复
QuotedStr('dbedit.text'));这里应该怎么写呀!
tflb 2003-08-23
  • 打赏
  • 举报
回复
if datamodule1.ADOQ_xs.locate('学号',dbedit1.text,[]) then
showmessage('库中以有该学号的记录!');

if datamodule1.ADOQ_xs.locate('学号',dbedit1.text,[]) then
begin
showmessage('库中以有该学号的记录!');
end;
都不进行判断呀!!!请在指点一下???
liangzisiyun 2003-08-23
  • 打赏
  • 举报
回复
是啊。推荐用定位Locate()。
tflb 2003-08-22
  • 打赏
  • 举报
回复
procedure TF_main.suiButton15Click(Sender: TObject);
begin
with datamodule1.ADOQ_xs do //用Query 组件要设置 DatabaseName 属性
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM 学生表 WHERE 学号='+QuotedStr('dbedit.text'));
Open;
if not IsEmpty then
ShowMessage('已存在');
end;
end;
请问帮我改一下!!谢谢了!!
hiflower 2003-08-22
  • 打赏
  • 举报
回复
with Table1 do //用Table 组件要设置 DatabaseName 和 TableName 属性
begin
Open;
Filter:='学号='+QuotedStr('ABC0001');
if FindFirst then
ShowMessage('已存在');
end;

with Query1 do //用Query 组件要设置 DatabaseName 属性
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM tablename WHERE 学号='+QuotedStr('ABC0001'));
Open;
if not IsEmpty then
ShowMessage('已存在');
//也可以这样:
Close;
SQL.Clear;
SQL.Add('SELECT * FROM tableName');
Open;
Filter:='学号='+QuotedStr('ABC0001');
if FindFirst then
ShowMessage('已存在');
end;
加载更多回复(10)

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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