有个合同表
合同号 品名代码
001-4 001
001-4 002
我想在两条纪录之间插入一条纪录。代码如下:
dm1.ADOQuery1.Insert();
dm1.ADOQuery1.FieldByName("hth").AsString="001-4 " ;
// DBGrid1.Refresh();
插入之前,我已经把鼠标定位在第二条纪录上,插入后,确实在两条纪录之间产生了一条空纪录,但只要我一移动鼠标,新增的纪录就跑到最后去了。为什么?
我已经把主健,索引之类的东西都去掉了,也没有设置排序方面的东西。
我就是想在两条纪录之间产生一个空纪录(除合同号外)其实,我的这个显示在那里的空行时用户为了特殊需要在输入、输出时才有的。一定要显示在那里才能完成打印要求,在数据库里是没有的(在数据库里我考虑用一个字段来描述他的前面有几个空行),如果为了这个目的加顺序号的话,控制起来可能很麻烦,因为用户说不定要加几条空行。就需要有一个确定乃至调整顺序号的函数。我设想的合同用户数目可能会达到200条。
合同号 品名代码
001-4 001
001-4 002
我想在两条纪录之间插入一条纪录。代码如下:
dm1.ADOQuery1.Insert();
dm1.ADOQuery1.FieldByName("hth").AsString="001-4 " ;
// DBGrid1.Refresh();
插入之前,我已经把鼠标定位在第二条纪录上,插入后,确实在两条纪录之间产生了一条空纪录,但只要我一移动鼠标,新增的纪录就跑到最后去了。为什么?
我已经把主健,索引之类的东西都去掉了,也没有设置排序方面的东西。
我就是想在两条纪录之间产生一个空纪录(除合同号外)其实,我的这个显示在那里的空行时用户为了特殊需要在输入、输出时才有的。一定要显示在那里才能完成打印要求,在数据库里是没有的(在数据库里我考虑用一个字段来描述他的前面有几个空行),如果为了这个目的加顺序号的话,控制起来可能很麻烦,因为用户说不定要加几条空行。就需要有一个确定乃至调整顺序号的函数。我设想的合同用户数目可能会达到200条。
begin
try
with dm1.ADOQuery1 do begin
...
Place := GetBook;
Close ;
Open ;
GotoBook(Place);
FreeBook(Place);
FormMain.DBGrid1.SelectedRows.CurrentRowSelected := true;
end;
except
//
end;
end;
我同意思虫了的意思用SQL语句如下:
self.adoquery1.colose;
self.adoquery1.sql.clear;
self.adoquery1.sql.add('select * from table order by 合同号,品名代码');
self.adoquery1.sql.add('Declare gyb_OfficeID SCROLL CURSOR for select * from table ');
在用游标进行操作,就可以OK!哈
爱理不理的代码似乎没有解决排序的问题。
我不设排序的话,应该是我在那里插入,新纪录就应该一直保存在那里才对,为什么不呢?是不是有某种自动排序的机制。
请继续执教。我再现等。
我以为只不过是另一种refresh的方法,真行吗?我没试,现在不方便,明天试验。
问题是我新增以后并不马上提交,close,再open,不就又恢复了原样吗(没有插入之;)?
经试验,我的想法时正确的,关闭再打开,恢复原样。
TO 电脑世界
最近较忙,没搞懂游标时怎么回事,如何利用呢?游标是哪里的概念呢?SQL SERVER,DATASET,ORACLE?
请各位大虾赐教。
我之所以叫嚷“亏了”,只不过是UP的另一种说法而已,别见怪。
我已经另加了一个序号子段,解决了这个问题,但感觉不爽。
游标就是任何一种数据库都有的,你可以在SQL SERVER的书中去找一下,很简单的!
现在要我写条出来,我写不出来,我在外面网吧上网,向边没资料!
不好意思哈!
如果,等我回去了,你还没写出来的话,我就给你!