各位大哥
我用ado+access2000
在一个demo的access2000数据库中有一张表:country
有四个字段:name,capital,contient,area
我在form1上放了四个edit,用于录入新的数据,代码如下:procedure TForm1.Button1Click(Sender:TObject);
begin
with adoTable1 do
begin
Insert;
FieldByName('Name').AsString:=Edit1.Text; //国家名称
FieldByName('Capital').AsString:=Edit2.Text; //首都
FieldByName('Continent').AsString:=Edit3.Text; //所在洲
FieldByName('Area').AsInteger:=StrToInt(Edit4.Text); //面积
Post;
Refresh;
end;
end;但是由于name是关键字,我在录入的时侯,怎么确保name字段不重复?要对edit1.text进行怎样的操作?
谢谢
我用ado+access2000
在一个demo的access2000数据库中有一张表:country
有四个字段:name,capital,contient,area
我在form1上放了四个edit,用于录入新的数据,代码如下:procedure TForm1.Button1Click(Sender:TObject);
begin
with adoTable1 do
begin
Insert;
FieldByName('Name').AsString:=Edit1.Text; //国家名称
FieldByName('Capital').AsString:=Edit2.Text; //首都
FieldByName('Continent').AsString:=Edit3.Text; //所在洲
FieldByName('Area').AsInteger:=StrToInt(Edit4.Text); //面积
Post;
Refresh;
end;
end;但是由于name是关键字,我在录入的时侯,怎么确保name字段不重复?要对edit1.text进行怎样的操作?
谢谢
解决方案 »
- 数据源连接错误DBEdit:field not found,求助
- 怎么看整个工程中的类结构图?
- 怎样用delphi直接打印一张测试页
- 怪事,我按F7执行到一个timer事件后就反复的执行只好reset,然后提示internal error:URW2871
- 请问这个错误是由什么引起的?怎么解决?
- adoquery后面根本不能接fieldbyname,是不是?
- ★如何让主窗体在桌面上能显示但在任务栏中却没有显示?如何让窗体在按win+m时缩小到系统托盘?
- 请教高手!!!
- ADO查询不支持Between语句吗?(正确即加分)
- 谁有大富翁的离线浏览数据库啊
- 请问怎样使用delphi里的DbiPackTable函数来对Foxpro数据库的数据进行完全的删除,急,谢谢!
- 怎样得到IE的版本
begin
Insert;
FieldByName('Name').AsString:=Edit1.Text; //国家名称
FieldByName('Capital').AsString:=Edit2.Text; //首都
FieldByName('Continent').AsString:=Edit3.Text; //所在洲
FieldByName('Area').AsInteger:=StrToInt(Edit4.Text); //面积
try
Post;
except
ShowMessage("重复");
end;
Refresh;
end;
或者
with adoTable1 do
begin
First;
while not EOF do
if FieldByName('Name').AsString=Edit1.Text then showmessage('有了');
else Next;
end;
begin
showmessage('有了');
exit;//加这个或者break跳出循环,我只是一个例子,你应该在这里自己写你想要的效果和处理
end
else Next;
end;
begin
First;
while not EOF do
begin
if FieldByName('Name').AsString=Edit1.Text then
begin
showmessage('有了');
end;
Next;
end;
end
try
post
except
showmessage('error').
end
结果提示error后又发生相同的出错。
怎么办?救救我!究竟用那种方法好?
1。在Tools->Debugger Options菜单下,选择Language Exceptions页面,将Stop on Delphi
Exceptions选项去掉就行了
2。不要在DELPHI环境下运行,也就是直接执行可执行文件,那样就会提示你的异常信息
提交前:
adoTable2.close;
adoTable2.sql.clear;
adoTable2.add('select * from table where name='''+edit1.text+'''');
adoTable2.open;
if (adoTable2.recordcount<>0) then
showmessage('已经有这个名字了!')
else
adoquery1.insert;
............
就是用另外一个数据集来检测即将提交的记录是否存在
begin
close;
sql.clear;
sql.add('select * from country ');
open;
if FieldByName('name').value:=trim(edit1.text) then
begin
ShowMessage('数据库中已存在');
end; end;
with adoTable1 do
begin
Insert;
FieldByName('Name').AsString:=Edit1.Text; //国家名称
FieldByName('Capital').AsString:=Edit2.Text; //首都
FieldByName('Continent').AsString:=Edit3.Text; //所在洲
FieldByName('Area').AsInteger:=StrToInt(Edit4.Text); //面积
try
Post;
except
ShowMessage("名称重复,请重新输入!");
Edit1.clear;
edit1.SetFocus;
exit;
end;
Refresh;
end;
如果有相同的THESAMENAME会大于0,若没有则可以插入了
adoTable2.close;
adoTable2.sql.clear;
adoTable2.add('select * from table where name='''+edit1.text+'''');
adoTable2.open;
if (adoTable2.recordcount<>0) then
showmessage('已经有这个名字了!')
else
adoquery1.insert;
............
就是用另外一个数据集来检测即将提交的记录是否存在但是用adotbale2.recordcount<>0检测好呢?
还是用:
first
if not eof() then 来检测好?