CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  VFP

下面是个热心朋友写的,我运用在实际中,但是报错.请教

楼主fuchongpppp(天冷不宜私奔)2004-09-01 19:53:54 在 其他数据库开发 / VFP 提问

有2个DBF。一个为a.dbf.一个为b.dbf      
  在a里一个这样的字段dm1.下面有记录      
  dm1      
     
    1      
     
    120      
         
    23      
     
    ....      
     
  在b里一个这样的字段dm2.下面也有记录      
     
  dm2      
     
    22      
     
    120      
     
    23      
     
    1      
     
    .....      
     
  现在我想写个语句把其中b.dbf中的记录如果在a.dbf中的记录也有就找出来。该如何写啊  
  ************************************************************************************  
  下面是个热心朋友写的,我运用在实际中,但是报错  
   
  sele   1  
  use   d:\gdk.dbf  
  sele   2  
  use   d:\bd59999.dbf  
  copy   to   temp  
  use   temp  
  sele   1  
  go   top  
  do   while   not   eof()  
  zd1=stock_ac2  
                      zd2=inv_code       ************报字段inv_code   没有方向,但是这个字段肯定存在,上面加句  
                                                    ****sele     2就不报.请问如何解决  
                    sele   2  
  loca   for   stock_ac2=zd1   and   inv_code=zd2   and   not   dele()  
  if   found()  
  dele  
  endif  
  sele   1  
  if   not   eof()  
  skip  
  endif  
  enddo  
  sele   2  
  copy   to   3.dbf   for   dele()  
  use   3.dbf  
  reca   all  
  clos   data  
  问题点数:20、回复次数:8Top

1 楼cdbqss1(胖胖)回复于 2004-09-01 21:56:08 得分 0

select   *   from   b   where   b.dm2   in   (select   a.dm1   from   a)行不?  
  Top

2 楼dfwxj(清风)回复于 2004-09-02 00:15:08 得分 0

字段不明Top

3 楼apple_8180(十豆三)回复于 2004-09-02 09:13:13 得分 0

你的d:\gdk.dbf   没有inv_code字段,如果不行,你把gdk.dbf   和bd59999.dbf的所有字段告诉我。Top

4 楼okzdf(okzdf)回复于 2004-09-02 10:05:59 得分 0

胖胖說的對,用嵌套SQL語句可以完成!Top

5 楼fuchongpppp(天冷不宜私奔)回复于 2004-09-02 11:25:16 得分 0

网友胖胖写的在FOXPRO里面执行不了Top

6 楼apple_8180(十豆三)回复于 2004-09-02 12:55:18 得分 20

**我得知你这两表的字段,把代码改了一下:你试一下,肯定没问题:  
   
  sele   1  
  use   d:\gdk.dbf  
  sele   2  
  use   d:\bd59999.dbf  
  copy   to   temp  
  use   temp  
  sele   1  
  go   top  
  do   while   not   eof()  
  zd1=stock_ac2  
                  sele   2  
  loca   for   inv_code=zd1   and   not   dele()  
  if   found()  
  dele  
  endif  
  sele   1  
  if   not   eof()  
  skip  
  endif  
  enddo  
  sele   2  
  copy   to   3.dbf   for   dele()  
  use   3.dbf  
  reca   all  
  clos   dataTop

7 楼dfwxj(清风)回复于 2004-09-03 00:34:20 得分 0

if   not   eof()  
  skip  
  endif  
   
   
  这三行代码是什么意思?看不懂,在外层循环时已经用到了“not   eof()”这个条件,所以在循环休内这个表达式永远是.t.!Top

8 楼apple_8180(十豆三)回复于 2004-09-03 08:50:23 得分 0

**dfwxj(清风)说的有道理,那么最精简代码为下:  
  sele   1  
  use   d:\gdk.dbf  
  sele   2  
  use   d:\bd59999.dbf  
  copy   to   temp  
  use   temp  
  sele   1  
  go   top  
  do   while   not   eof()  
  zd1=stock_ac2  
                    sele   2  
  loca   for   inv_code=zd1   and   not   dele()  
  if   found()  
  dele  
  endif  
  sele   1  
  skip  
  enddo  
  sele   2  
  copy   to   3.dbf   for   dele()  
  use   3.dbf  
  reca   all  
  clos   data  
  Top

相关问题

  • 邹建新书有段程序报错,等热心高手给看一下
  • BC 菜鸟使用动态指针 编译器报错,请热心高手指点,代码如下,谢谢
  • query报错!!
  • jdbc--sqlserver报错
  • 窗体报错
  • mysqldump报错
  • link报错
  • 编译报错
  • make报错
  • ado报错

关键词

  • 字段
  • 代码
  • code
  • sele
  • zd
  • dbf
  • dele
  • inv
  • dbfreca allclos
  • dbfsele

得分解答快速导航

  • 帖主:fuchongpppp
  • apple_8180

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

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