关于table控件的locate问题(100分)

  • 主题发起人 主题发起人 小小豆豆龙
  • 开始时间 开始时间

小小豆豆龙

Unregistered / Unconfirmed
GUEST, unregistred user!
我用table控件通过odbc远程连接sql server
在程序里使用locate查找数据,但找到的记录总是目标记录的下一个
比如我要找10号记录,但locate找到的是11号记录
请问我应该如何解决这个问题?(要求不能使用别的控件)
急,急,急
 
不会呀,你把那部分的源代码贴出来看看
 
不太可能,除非有别的代码干扰!
 
我的代码如下:
if table2.Locate('cmd_id',cmds,[]) then begin
tname:=table2.fieldbyname('table_name').asstring;
feet:=table2.fieldbyname('feetype').asstring;
feec:=table2.fieldbyname('feecode').asstring;
table2.Active:=false;
table2.TableName:=tname;
table2.Active:=true;
table2.Last;
msg:=table2.fieldbyname('message').asstring;
table2.Edit;
table2.FieldByName('tflag').asinteger:=table2.FieldByName('tflag').asinteger+1;
table2.Post;
table2.Active:=false;
table2.TableName:='smstemp';
table2.Active:=true;
table2.Append;
table2.FieldByName('Serial_ID').asinteger:=111;
table2.FieldByName('phone_num').asstring:='test';
table2.FieldByName('cmd_id').asstring:=cmds;
table2.FieldByName('datetime').asdatetime:=now;
table2.FieldByName('feetype').asstring:=feet;
table2.FieldByName('feecode').asstring:=feec;
table2.FieldByName('message').asstring:=msg;
table2.Post;
end;
tname变量值是我查找到记录中的一个字段的值,但是它显示的总是下一个记录的字段值
我都头痛死了,我不知道这是bug还是我程序有问题,但是我查了很久,我的程序不存在问题
 
我想要这种功能还不知道怎么做,你是怎么搞的。
 
代码好象没有错,你看一下你的'cmd_id'字段,定位时参数cmds所对应的'table_name'是什么?
 
别拿我寻开心了,我都苦恼死了,
我写其中几条记录给你们看看
cmd_id table_name feetype feecode
015 hzxw 02 20
016 gnxw 02 20
234 mrxh 02 20
122 wzcx 02 200
 
哈哈,我也遇到过,原来好好的,后来也是这样了,找不到解决的办法,就用select 查找了。[:D]
 
table2.Locate('cmd_id',cmds,[loCaseInsensitive])
 
哈哈,我也遇到过,原来好好的,后来也是这样了,找不到解决的办法,就用select 查找了。[:D]
 
请问delphi7会出现这样的现象吗?我这没delphi7
 
可能是从 0 开始计数!!
 
不明白,试一试对于其它的数据表操作:
看看效果如何?

另外,考虑一下是否是,该数据表的类型特殊。
//odbc通过“驱动接口”对数据库进行操作,
//“接口驱动”对用户(程序员)提供相同的界面,
//但是难保有的数据库驱动在某个方面存在bug
 
你在新建一个工程,还使用这个ODBC,在做一下,看看是不是还这样?
 
if table2.Locate('cmd_id',cmds,[]) then begin
[red]table2.Prior[/red];
tname:=table2.fieldbyname('table_name').asstring;
feet:=table2.fieldbyname('feetype').asstring;
.

.
.

 
没人能从根本上解决我的问题,我想取消,请问如何取消?
 
我没有看但是我好象记得有个参数可以控制其定位是在查找到的记录上,
还是其上或其下的!
你可以查一下!
 
我终于发现问题所在了,如果对表加一唯一性索引就不会发生上述情况,如果不加任何索引
就会发生这种情况
 
为什么一定要用table控件,至少改用QUERY控件,用一下select就搞定了!不会这么烦的!
否则你的SQL SERVER会慢得出油!
 
后退
顶部