sql server2000的问题(100分)

  • 主题发起人 主题发起人 wangfangzhen
  • 开始时间 开始时间
W

wangfangzhen

Unregistered / Unconfirmed
GUEST, unregistred user!
我用控件TTable来写程序,数据库是sql server2000,进行一个插入操作,保存后为什么
记录指针会跳到第一条记录,而不是当前记录,在sql server7.0下就没有这种问题
 
last;
都有这样的问题吧
 
我试过,在sql server7.0没有这种问题
 
如果这样的话用bookmark好了
 
应该不会吧,是不是刷新了,重建数据集,当然要跳到第一条记录了。
 
定义个主键。
 
查查bookmark的帮助,上面有例子
 
我没有刷新,数据表也有主键,但是每次保存后都跳到第一条记录,而不是当前记录
 
保存前先记录当前记录,
保存后再用Locate函数进行定位就可以了
 
加入缓存就好了
 
我试过了没有问题,没有你说的那种现象,
由于表建立了索引,引起排序,结果指针在post后指向的是我
刚刚加入的纪录
 
记录未保存,怎么记录当前记录,缓存我也用了,但插入一条记录后保存,记录就会跳到
第一条,而不是刚刚保存的记录
 
你用的什么连接方式?
 
to:唐佐平
数据量大时你还用Locate函数,那你的程序就死了
用书签吧,看帮助简单
 
to zqs10597249:
书签我还不会用呢,能教我一下吗,谢谢,
最好给个例子,可以发邮件给我,Tang_717@163.com
先谢了,
 
看的懂吧。在你要对数据集(比如现在你的记录在100条)进行操作前定义个TBookmark
Bookmark: TBookmark;
Bookmark:=query1.DataSet.GetBookmark;
在操作完了(有可能你是对数据集刷新,那记录变为第一条,想回到100),
query1.GotoBookmark(Bookmark);
query.FreeBookmark(Bookmark);
这样光标就回到100条的位置了。
procedure TQueryFrm.CB_FieldChange(Sender: TObject);
var
Bookmark: TBookmark;
lItem:string;
FieldName,KeyFieldName:string;
pos:integer;
begin
CB_Values.Clear;
FDbGrid.DataSource.DataSet.DisableControls;
Bookmark:=FDbGrid.DataSource.DataSet.GetBookmark;
FDbGrid.DataSource.DataSet.First;
//得到字段名
FieldName:=GetFieldName(CB_Field.text);
//判断是否是查找字段
if FDbGrid.DataSource.DataSet.FieldByName(FieldName).FieldKind = fkLookup then
begin
pos:=GetKeyFieldPos(CB_Field.text);
FList[pos].Clear;
FListV[pos].Clear;
KeyFieldName:=GetKeyFieldName(CB_Field.text);
end;
while not FDbGrid.DataSource.DataSet.Eof do
begin
lItem:=FDbGrid.DataSource.DataSet.FieldByName(FieldName).asstring; //FDbGrid.Columns[CB_Field.ItemIndex].FieldName
if (CB_Values.Items.IndexOf(litem) <> -1) or (lItem = '') then
begin
FDbGrid.DataSource.DataSet.Next;
continue;
end;
CB_Values.Items.Add(lItem);
//如果是查找字段
if FDbGrid.DataSource.DataSet.FieldByName(FieldName).FieldKind = fkLookup then
begin
FList[pos].Add(FDbGrid.DataSource.DataSet.FieldByName(KeyFieldName).asstring);
FListV[pos].Add(lItem);
end;
FDbGrid.DataSource.DataSet.Next;
end;
FDbGrid.DataSource.DataSet.GotoBookmark(Bookmark);
FDbGrid.DataSource.DataSet.FreeBookmark(Bookmark);
FDbGrid.DataSource.DataSet.EnableControls;
end;
 
to zqs10597249:
非常感谢你的帮助,我看懂了,
下次我就不会再说不知道了,
谢谢!!!
可以教个朋友吗?
我的QQ: 119552267
 
我的问题不是书签,怎么没人回答?
 
后退
顶部