远端数据库(比如sybase)中使用Table控件 问题多多,难道... 《请专家指点。(50分)

  • 主题发起人 主题发起人 XingQuguang
  • 开始时间 开始时间
忘了加说明,问题如下:

我编程阶段在本地access库上调通了一个delphi 应用程序,准备挪到sybase
上时,发现很多功能不能用,比如(定位)locate,(替换)lookup等,而这两个方法,是我程序中关键的函数,我该用什么办法补救呢?table控件是不是在远端数据库
上不好使,我该用什么控件去替代他的功能呢?本人新学d5不久,请前辈指点。
 
TQuery

TQuery, TTable都是继承自TBDEDataSet
Locate, Lookup都是TBDEDataSet的方法
 
不会吧,也许是sybase与access。
以前我将pardox-->oracle时也大致如此,后在oracle上改了
索引及其他后就ok.
 
在处理远端数据库时,不能用Ttable,用Tquery+TupdateSQL,否则会出现很多问题
的,特别是在多用户的时候出现更多的问题。
 
我是开发大型数据库的,还没有发现Table不能连接远程数据库的现象,可能是你的设置有问题,再仔细检查一下!你先看看是否已经真正的连接到了远程的数据库,可以通过ODBC或者BDE或者Delphi中的SQL Explorer,先用这些连接一下,如果没有连上,那就说明是数据库的连接设置不对,如果能够连上,那你就要检查程序了!
 
Table 的Locate不能用?
没见过
不过
最好不要用Ttable,TTable打开一张表进行操作
整张表会被锁住
有许多并发性问题
最好用TQuery
或者AOD
 
举例如下

表结构:
xm km
------- ---------
zhang probasta
li microeco

程序
table1.First ;
table1.Locate ('km','microeco',[]);
edit2.Text :=table1['xm'];

执行结果 edit2.text 总等于 zhang ,并没有定位到li
而我用table1.next 它却可以显示出 zhang
到底是哪里出了问题呢? 请前辈指点。
 
有没有定索引?
 
to foolishwolf

是把 km 定为索引吗? 是否这样才能使用locate('km'....

还是任意定一个索引都可以?
 
<b><font color=red>
SYSBASE与DELPHI连千万不要用TTABLE,
同时用DB-QUERY!!!
</b></font>

绝对经验之谈
 
Sorry, type mistake:
should be <B>DB-LIBRARY</B>
 
table->>>query
 
to silly

1. 能详细说一下吗?
2. DB-LIBRARY 是在开始安装delphi 时设置吗?
是否需要我从新安装delphi?
3. 为什么要用DB-LIBRARY?

谢谢
 
to wulianmin

query 的locate不灵,编译时不出错,可是它压根儿就不执行。
(不知是否跟DB-LIBRARY有关)我只有用select ,可是它太烦琐了,
我的所有的关于定位的语句都得从写。

比如判断某个表里是否有字段为某值的某个记录存在,用query
有什么好办法吗?
 
真的,我也建议用Tquery.
 
我劝你还是重写吧,把TABLE换成QUERY,再写一个带参数的小过程,
用到locate的地方,生成一段SQL语句传给这个过程,干吧。
 
在多用户环境下不要使用ttable。
 
测试结果如下:

1 用tquery时,参数一定要用主键字段才可用locate方法.
2 用Table时,设置一定要用DB-LIBRARY,才可用locate,lookup方法.

希望对同路人有帮助.

感谢silly,感谢大家的建议!

 
多人接受答案了。
 
后退
顶部