请教几个有关数据库的小问题,请大家帮我看看。(50分)

阿虫

Unregistered / Unconfirmed
GUEST, unregistred user!
我有个按钮用来对数据进行删除;代码如下:
procedure TForm1.ToolButton5Click(Sender: TObject);

var
count,i,pos:integer;
str:string;
begin
with dm do
begin
table1.active:=true;
str:=table1.fieldvalues['xuh'];
if not table1.locate('xuh',str,[locaseinsensitive]) then
begin
showmessage('没有记录可删除');
exit;

end;
table1.setkey;
table1.fieldbyname('xuh').asstring:=tabl_1.fieldbyname('xuh').asstring;
table1.gotokey;
pos:=table1.fieldbyname('xuh').asinteger;
count:=table1.recordcount-1;
table1.delete;

for i:=pos to count do
begin
table1.edit;
table1.fieldbyname('xuh').asstring:=inttostr(i);
table1.next;

end;
table1.refresh;
table1.refresh;
table1.active:=false;

end;
end;
我想实现对数据的删除,其记录序号的字段是XUH,上面是我写的程序,程序编译通过了,可录我
想删除其中某条记录时,出现这样的提示:字段XUH不是索引,不能被修改。原来我是对另外一个
字段进行索引的,这时我对XUH 建立索引,可是还是出现这样的提示,为什么,我那里不对呢?
我只有一个数据表格,没什么主从表之分,这样写不行吗?

2。我在写数据库程序时,建了一个数据模块DM,里面放了:TABLE,DATASOURCE两个控件。
原来我放了几个小按钮,用来控制数据记录的位置;
如:procedure TForm1.BitBtn1Click(Sender: TObject);
begin
with DM do
begin
tabl_1.Cancel;
tabl_1.First;
END;
后来我为个可以对数据进行查询,又放了一个QUERY控件。为了对数据查询,DATASOURCE的:
DATASET:QUERY1;
可这样一来,我那几个用来控制数据记录的按钮就没用了,有什么办法能让我即可以进行数据查询,
又可以控制数据记录的位置,就是能让我那几个按钮还可以用?


本人正在学习数据库,那些朋友可以留下QQ,可以让我常交流,常学习!



 
2.用两个DataSource
 
我想过了,用两个DATASOUCE,那样的话查找的记录和我用按钮控件的记录好象就不一至了吗
 
to 阿虫
在你的删除过程里,不是有个tabl_1 ,它对应的表有没有建立
关于 xuh 的索引?
在用TTable查找时,好象要指定查找字段上的索引名,而你的代码中没有。
建议:实现查询,最好用TQUERY。

对于第二个问题:
我不是很清楚你的意思,进行查询,需要用到datasource吗?好象不要吧。
你是不是用了数据感知控件TDBEDIT之类的?如果没有,
根本不要用到它(datasource)
另外,一个datasource在同一时刻只能针对一个数据集。你可以动态设置它的dataset
属性,将数据集设回原来的值。就可以让你的按钮可用。
--记得给分啊
 
to pcc_mmz1,那个TABL-1是我写错了,是TABLE才对,我用的是QUERY呀,它的数据集:DATASET是指向
QUERY了呀,还有,建立索引要用代码写出来了吗,不是在数据库中建立的吗。

2我用了DBEDIT控件了呀,动态设置DATASOURCE我想过的,不过没试,你的见意我试试,当然,希望再关注一下
我的问题,分不是问题,还可以再加点的。
 
删除数据,最好还是用QUERY或者ADOQUERY,写起来比较方便,也不容易出错。
 
TO 荷塘新月
问题是我现在只会用我这种方法,所以我希望就我这样的方法找到问题所在,如果让我换一种解决方法,

好象又走回头路了。
 
这种代码只可以用来试用,真的做东西,数据量稍微大一些,
会很慢的。
 
顶部