| 网站首页 | 业界新闻 | 群组 | 人才 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 252 人关注过本帖
标题:求助,程序连编后出现报表不能预览
只看楼主 收藏
FK1219
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-9-8
结帖率:100%
  已结贴   问题点数:18  回复次数:15   
求助,程序连编后出现报表不能预览
程序在项目管理器中运行均正常,但连编后当查询时出现两种情况,1、有一个表在查询时,只能出现四条空白无数据的记录,2、其他表查询时都是一闪就没了。
2017-10-06 09:16
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:114
帖 子:4363
专家分:17027
注 册:2014-5-20
  得分:4 
不好说,给代码看看。
2017-10-06 10:03
FK1219
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-9-8
  得分:0 


[此贴子已经被作者于2017-10-6 16:49编辑过]

2017-10-06 16:45
FK1219
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-9-8
  得分:0 
那位大侠帮个忙呀,
set safety off

public mz
public lb

mz=thisform.combo1.displayvalue
lb=thisform.combo2.displayvalue
DATE1=CTOD(Thisform.TexT1.Value)
DATE2=CTOD(Thisform.TexT2.Value)

if empty(mz) and empty(lb)
select * from spm where between(日期,date1,date2) order by 日期 asc into table lsspm
endif
if empty(mz) and thisform.combo2.value='直达'
select * from spm where between(日期,date1,date2) and 类别=='直达'  order by 日期 asc into table lsspm
endif
if empty(mz) and thisform.combo2.value='下水'
select * from spm where between(日期,date1,date2) and 类别=='下水'  order by 日期 asc into table lsspm
endif
if empty(mz)==.F.
select * from spm where between(日期,date1,date2) and 用户名称==mz  order by 日期 asc into table lsspm
endif

report form spm.frx preview
 
&& 另外问一下combo1怎么赋值到变量


[此贴子已经被作者于2017-10-9 08:45编辑过]

2017-10-06 16:52
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:版主
威 望:322
帖 子:11035
专家分:41799
注 册:2006-5-13
  得分:4 
不愿提供代码,大家如何帮你!
这种现象应该与是否连编无关,估计还是工作区或查询语句的问题,没有看到代码,只能瞎猜。

活到老,学到老! http://www.qs98.com E-mail:hu-jj@21cn.com
2017-10-07 09:24
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:114
帖 子:4363
专家分:17027
注 册:2014-5-20
  得分:0 
如果报表文件使用的数据表无数据记录,报表输出无效。
执行报表预览 REPORT FORM ... PREVIEW 之前看看:
MESSAGEBOX(RECCOUNT())
REPORT FORM ... PREVIEW
2017-10-07 16:19
FK1219
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-9-8
  得分:0 
代码谁帮看看,问题出在那了
2017-10-09 16:46
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:114
帖 子:4363
专家分:17027
注 册:2014-5-20
  得分:0 
if reccount()>0
    report form spm.frx preview
else
    messagebox("无数据记录")
endif
2017-10-09 16:49
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:18
帖 子:270
专家分:529
注 册:2014-4-9
  得分:4 
以下是引用FK1219在2017-10-6 16:52:01的发言:

那位大侠帮个忙呀,
set safety off

public mz
public lb

mz=thisform.combo1.displayvalue
lb=thisform.combo2.displayvalue
DATE1=CTOD(Thisform.TexT1.Value)
DATE2=CTOD(Thisform.TexT2.Value)

if empty(mz) and empty(lb)
select * from spm where between(日期,date1,date2) order by 日期 asc into table lsspm
endif
if empty(mz) and thisform.combo2.value='直达'
select * from spm where between(日期,date1,date2) and 类别=='直达'  order by 日期 asc into table lsspm
endif
if empty(mz) and thisform.combo2.value='下水'
select * from spm where between(日期,date1,date2) and 类别=='下水'  order by 日期 asc into table lsspm
endif
if empty(mz)==.F.
select * from spm where between(日期,date1,date2) and 用户名称==mz  order by 日期 asc into table lsspm
endif

report form spm.frx preview
 
&& 另外问一下combo1怎么赋值到变量

既然你使用==精确比较,那么变量(字段或内存)就要使用alltrim()函数压缩左右空格,除非你能保证你的变量的长度正好与常量的长度完全相同,否则即使有符合条件的记录,SELECT语句也查询不到符合条件的记录。比如说
select * from spm where between(日期,date1,date2) and 类别=='直达'  order by 日期 asc into table lsspm
就要改为:
select * from spm where between(日期,date1,date2) and alltrim(类别)=='直达'  order by 日期 asc into table lsspm


[此贴子已经被作者于2017-10-9 17:15编辑过]

2017-10-09 17:12
FK1219
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2017-9-8
  得分:0 
代码在VFP项目管理器中可以正常查询及预览运行,但是连编后,单独运行EXE文件时报表不能预览在屏幕下面提示没有记录,
2017-10-10 08:45







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.078166 second(s), 8 queries.
Copyright©2004-2017, BCCN.NET, All Rights Reserved