CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

关于lookup字段,主从表的问题----郁闷很久了

楼主kissmett(雨岸一帆)2004-08-01 01:38:46 在 Delphi / 数据库相关 提问

我的需求很简单:  
          通过物资科目,物资大类,物资小类标示一类物资[物资科目下分大类,大类下面分小类],在库存表里存储每类物资的库存量  
   
  现有4个表:  
          物资科目表,物资大类表,物资小类表,和物资库存表  
           
  表结构分别如下:  
   
          物资科目表:(物资科目id,物资科目name)  
          物资大类表:(物资科目id,物资大类id,物资大类name)  
          物资小类表:(物资大类id,物资小类id,物资小类name)  
           
          物资库存表:(物资科目id,物资大类id,物资小类id,物资库存量)  
   
  目的:  
          在dbgrid中显示出物资各级分类的名称,而非编号,而且修改时,当科目改变后,大类列表自动改变;大类改变后,小类列表自动改变;  
          [于是,我采取了建立查询字段(lookupfield)和主从表,来解决这个问题]  
   
   
  我的做法是这样的:  
      1。用了4个TADOTable分别指向上面提及的4个表[还有几个TDataSource],分别为:  
          tbl_mat_store(指向物资库存表),ds_mat_store(用于帮定dbgrid等,数据感知控件);  
          tbl_mat_sub(物资科目表),ds_mat_sub(用于建立和tbl_mat_first_class的主从关系);  
          tbl_mat_first_class(物资大类表),ds_mat_first_class(用于建立和tbl_mat_second_class的主从关系);  
          tbl_mat_second_class(物资小类表);  
           
      2。设置物资科目,大类,小类表之间的主从关系:  
          这里我将tbl_mat_sub设置为tbl_mat_first_class的主表,tbl_mat_first_class设置为tbl_mat_second_class的主表  
          [详细过程不写了,请各位大虾相信我是设对了]  
           
      3。在物资库存表tbl_mat_store中建立3个查询字段如下:  
          lkupf_mat_sub[Key   Fields:物资科目id,Dataset:tbl_mat_sub,Lookup   Keys:物资科目id,Result   Field:物资科目name]  
          lkupf_mat_first_class[Key   Fields:物资大类id,Dataset:tbl_mat_first_class,Lookup   Keys:物资大类id,Result   Field:物资大类name]  
          lkupf_mat_second_class[Key   Fields:物资小类id,Dataset:tbl_mat_second_class,Lookup   Keys:物资小类id,Result   Field:物资小类name]  
          [其实也就是正规的做法,呵呵]  
           
      4。添加了dbgrid,dbLookupComboBox,等控件,用于数据的增删改  
            这些数据感知控件都用ds_mat_store连接,显示库存信息,其中:  
            用了3个dbLookupComboBox分别显示物资科目,物资大类,小类,即分别指向上面刚刚建立的3个查询字段  
   
   
  问题出现了:  
          我在我的计算机上作了一遍,一切OK,增删改查都可以。  
          同事按照上述的步骤在他的机器上作了一遍,一加载窗体,就报错EOleException   with   message   '发生未知错误。   '程序就停在了   Application.Run;这一句上;  
          于是,我们在代码里能try的地方都try了一下[Application.Run;也try了],并想在except时输出错误信息[on   e:Exception   do   ShowMessage(e.Message);]可是调试时一句都没抓到  
          又重新找了一台机器重做了一下,窗体加载都没有问题,数据能正常显示,但是每当运行tbl_mat_store.Insert;就会出错,错误也是EOleException   with   message   '发生未知错误。   ',用try也抓不到  
          更奇怪的是,今天同事来,重新运行他做的那个,竟然一点为题都没有了,见鬼了。。。          
   
  我怀疑:  
          这是不是与Delphi在窗体初始化的时候对窗体上数据集的加载顺序有关?还是和tbl们在代码中声明的先后顺序有关?还是和天气有关?嗬嗬,晕了  
          另外,我想问在作Lookup字段和主从表的时候有什么注意的问题没有?大家遇到过类似的情况没有?  
          兄弟姐妹们有时间的话也试试,看看还有什么情况发生,能指条道的给指指,不胜感激  
             
  另外,我还能提供的线索:          
          [我们所有的机器硬件配置相同,delphi7.61版也相同,一个盘装出来的]  
          [除了物资库存表tbl_mat_store的LockType被我改为ltBatchOptimistic以外,其他tbl都是默认设置]  
          [各个物资分类表中的数据是完整的,每个科目都有对应的大类,每个大类都有对应的小类]  
          [现在,我不能准确的回忆起,我建立表的主从关系和查询字段的顺序了,难道设计期这个顺序如此重要???]  
  问题点数:40、回复次数:7Top

1 楼sixgj(轰炸机)回复于 2004-08-01 11:35:19 得分 0

负复杂啊。Top

2 楼kissmett(雨岸一帆)回复于 2004-08-01 17:35:49 得分 0

自己顶一下Top

3 楼kfarvid(傻小子)回复于 2004-08-01 17:55:23 得分 0

没细心看!这种情况太奇怪了!我见过的都没这么奇怪!Top

4 楼pdbird(老巢)回复于 2004-08-02 13:37:42 得分 0

用QUERY就可以很好的解决这样的问题。  
  Top

5 楼chenjiong(准程序员:升级中....)回复于 2004-08-02 17:58:37 得分 0

太多了,没仔细看,D6的话装了补丁没有?  
  Top

6 楼kissmett(雨岸一帆)回复于 2004-08-03 02:54:46 得分 0

我用的是Delphi7.61版,没打补丁,也不知该打何种补丁  
  老大们,提供一些思路,建立查询字段,主从关系的要点,补丁的信息   啊。。。Top

7 楼longtusoft(神灯之主)回复于 2004-08-03 07:46:56 得分 40

楼主:  
  你这个情况我遇到过.是这样解决的.  
  把LOOKUP字段的LOOKUPCATCHED设置为TRUE就解决了.Top

相关问题

  • 主从表与Lookup 字段汇用,在新增时报错,各位进来看看,先给100,分不够可能加。
  • 主从表结构,主表插入新记录时,当插入关联字段后,从表的显示问题。
  • 作WinForm程序,遇到一SQL语句,有关主从表(根据从表某一字段和,修改主表一字段值)
  • 请帮忙优化一个查询:关于主从表的一个查询语句,不想group by一堆字段
  • Lookup字段问题
  • 主从表联结?????
  • 主从表问题
  • 主从表保存
  • 主从表问题。
  • 求主从表SQL

关键词

  • 字段
  • 科目
  • 数据
  • 控件
  • 查询
  • 解决
  • 物资
  • mat
  • 类
  • tbl

得分解答快速导航

  • 帖主:kissmett
  • longtusoft

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo