Delphi的Bug?还是我没弄清楚?(50分)

  • 主题发起人 主题发起人 lxwizard
  • 开始时间 开始时间
L

lxwizard

Unregistered / Unconfirmed
GUEST, unregistred user!
我用foxpro2.5建数据库,其中有两个表:Stations.dbf,equips.dbf
两个表中均有一字段:stationno为索引字段。
我想将Stations.dbf和equips.dbf联动起来查询(也就是stations中的一条记录
对映equips中的多条记录)。
我在Form中放了一个Table1,一个Query1,以及两个DataSource和两个DBGrid。
Query用于提取Stations中数据,而Table用于提取equips中的数据。在Query中
的SQL里面写如下:
SELECT DISTINCT
Stations."area",
Stations."County" ,
Stations."Town" ,
Stations."Stationno"
FROM Stations,Equips
WHERE (Stations.stationno=equips.stationno)

然后将Table1中的MasterField和MasterSource属性设置好,使之与Query1建立
联结,这一切应该没有问题。我是从一个例子上照抄的,只不过改了一下数据库。
(例中的数据库是用Paradox弄的)。
运行的结果是,query1返回正确的结果,而table1则针对当前指向的Stations的记录仅返回
一条记录,实际上应该为多条记录。我感到十分奇怪。我将这两个表导入Access97。然后在
BDE中注册了一个库。我只要将Query1和Table1中的databasename属性改为我注册的Access
数据库名即可访问这两个表了,这一切也不会有问题吧。其它我什么不改,运行后情况就
变了,一切正常,一对多的关系正确无误。这下我就有些头大了,我已经被Delphi的这类
问题整得没招了。在建Web数据中过程中,用DBF数据时能得到正确结果,而用Access的同
样内容的表的数据时,无返回值。现在是DBF数据有问题,而Access数据正常。
其实,同一个问题,在infopower2000中也会碰到。比如记录过滤,随infopower2000带来几个
例子,其中一个就是演示过滤功能的,我将其中的数据库换成DBF格式的则过滤功能不正常。
不信各位可以试试。
哪位高人可以指点一二,这是Delphi本身的问题呢,还是我什么地方没弄对?谢谢!

 
将SQL语句改为:
SELECT DISTINCT
Stations."area",
Stations."County" ,
Stations."Town" ,
Stations."Stationno"
FROM Stations

试试!
这末大一篇,看着头大。 {B-(
 
我把问题说简单一吧:我用同样的程序试图完成两个有关系的数据表的查询,比如客户名单和客户购货清单两个库表吧。客户名单中有索引项:客户编号(在该表中此项不能有重复记录),客户购货清单中也应该有索引项:客户编号(在该表中此项可以有重复记录)。如果将这两个表通过客户编号建立联结,应该是一对多的关系,我没说错吧。现在的问题是:如果库表是用Access或Paradox构建的话,一切正常。但如果用Foxpro构建两个DBF文件的话,则查询结果变成了一对一,客户购货清单只查出一条记录,其它记录不知哪里去了。
不要费力去找语句的麻烦,SQL语句不会有问题,最好自己试一试,然后告诉我怎样解决。多谢!
 
别那么肯定地说sql不会有问题.
如果我没搞错的话, 是distinct在作怪, 去掉它
 
我再说一遍,SQL语句没问题,如果有问题的话无论用ACCESS还FOXPRO的库结果都一
样,如果去掉DISTINCT得到的还是一对多关系?不要信口开河,自己试试吧。再说
一遍:程序不变,只变数据库,用Access和Paradox正常,用FoxPro不正常,为什么?
请高手赐教,谢谢!
 
别骂我灌水,我没怎么用过DBF,但是,我提议你试试VISUAL FOXPRO 3.0 以后
的数据库,如果我没记错的话,3.0之前的dbf还没有明确的主从关系呢
而只是独立的表,当然就不行了.所以试试看:)
 
To Crane:
你说的可能有一定道理,但不知你是否用过infopower2000这套非常棒的数据库构
件,其中有一个按几个字段过滤的例子,如果把数据库改成DBF(单个文件)则过
滤结果也不正常。比如:按某字段内容以“C”开头过滤,此时过滤结果正确。但再
下,如果以其它字母开头开始过滤,则返回结果为空,这显然不正常。而用Access
则不会有问题。所以我头大,我之所以要用DBF库而不用ACCESS是因为用Delphi做
的ISAPI查询Access时出问题,而DBF不出问题。我曾经就Web数据问题在网易发过帖子,没人理我。难道非要逼我用ASP+ACCESS+PWS吗?
 
你确定你的驱动程序正确?
同样是DBF, foxpro和DBase的库文件头可是完全不同哦. 访问foxpro的dbf一定要
用foxpro驱动程序的Alias
 
多人接受答案了。
 
后退
顶部