VFP编程:VFP报表输出

时间:2023年02月05日

/

来源:找点乐子

/

编辑:本站小编

收藏本文

下载本文

以下是小编为大家准备的VFP编程:VFP报表输出,本文共5篇,供大家参考借鉴,希望可以帮助到有需要的朋友。本文原稿由网友“找点乐子”提供。

篇1:VFP编程:VFP报表输出

设计报表的最终目的是要按照一定的格式输出符合要求的数据,报表文件的扩展名为.frx,该文件存储报表设计的详细说明。每个报表文件还带有扩展名为.frt的报表文件。报表文件不存储每个数据字段的值,只存储数据源的位置和格式信息。

报表文件按数据源中记录出现的顺序处理记录,如果直接使用表内的数据,数据就不会在布局内正确地按组排序。因此,在打印一个报表文件之前,应确认数据源中已对数据进行了正确排序。一般,建议报表的数据源使用视图或查询文件。

报表输出时,应该先进行页面设置,通过预览报表调整版面效果,最后再打印输出到纸介质上。

1.页面设置

规划报表时,通常会考虑页面的外观。例如页边距,纸张类型和所需的布局。在“页面设置”对话框中可以设置报表的左边距并为多列报表设置列宽和列间距,设置纸张大小和方向,步骤如下:

(1)从“文件”菜单中,选择“页面设置”,出现“页面设置”对话框。

(2)在“左页边距”框中输入一个边距数值。页面布局将按新的页边距显示。

(3)若要选择纸张大小,选择“打印设置”。

(4)在“打印设置”对话框中,从“大小”列表中选定纸张大小。

(5)若要选择纸张方向,从“方向”区选择一种方向,再选择“确定”。

(6)在“页面设置”对话框中,选择“确定”。

在更改了纸张的大小和方向设置时,需要注意该纸张大小是否可以设置所选的方向。例如,如果纸张定为信封,则方向必须设置为横向。

2.预览报表

通过预览报表,不用打印就能看到它的页面外观。例如,可以检查数据列的对齐和间隔,或者查看报表是否返回所需的数据。有两个选择:显示整个页面或者缩小到一部分页面。

“预览”窗口有它自己的工具栏,使用其中的按钮可以逐页地进行预览,

步骤如下:

(1)从“显示”菜单中选择“预览”命令,或在“报表设计器”中单击鼠标右键并从弹出的快捷菜单中选择“预览”命令,也可以直接单击“常用”工具栏中的“打印预览”按钮。

(2)在打印预览工具栏中,选择“上一页”或“前一页”来切换页面。

(3)若要更改报表图象的大小,选择“缩放”列表。

(4)若要打印报表,选择“打印报表”按钮。

(5)若想要返回到设计状态,选择“关闭预览”按钮。

注意:如果得到如下提示“是否将所做更改保存到文件?”那么,在选定关闭“预览”窗口时一定还选取了关闭布局文件。此时可以选定“取消”按钮回到“预览”,或者选定“保存”按钮保存所做更改并关闭文件。如果选定了“否”,将不保存对布局所做的任何更改。

3.打印输出

使用报表设计器创建的报表布局文件只是一个外壳,它把要打印的数据组织成令人满意的格式。如果使用预览报表,在屏幕上获得最终符合设计要求的页面后,就要打印出来。步骤如下:

(1)从“文件”菜单中选择“打印”命令,或在报表设计器中单击鼠标右键并从弹出的快捷菜单中选择“打印”命令,也可以直接单击“常用”工具栏中的“运行”按钮,出现“打印”对话框。

(2)在“打印”对话框中,设置合适的打印机、打印范围、打印份数等项目,通过“属性”设置打印纸张的尺寸、打印精度等。

(3)选择“确定”按钮。Visual FoxPro就会把报表发送到打印机上。

如果未设置数据环境,则会显示“打开”对话框,并在其中列出一些表,从中可以选定要进行操作的一个表。

在命令窗口或程序中使用REPORT FORM(报表文件名>[PREVIEw]命令也可以打印或预览指定的报表。

篇2:VFP编程技巧

在VFP中如何历遍所有文件夹和文件

在VFP中,能象一些杀毒软件那样,找遍磁盘的所有文件夹和文件吗?

答案是肯定的,而且很简单:

*利用VFP的Create Cursor -SQL命令建立有5个字段的临时库

*结合前面提到的ADIR函数便可完成,

下面是具体代码:

dqml=''C:'' &&需扫描的盘符

use

Create Cursor mylsdbf (wjmc c(120),wjcd n(10),wjrq d,wjshj c(10),wjsx c(6))

xGS=1

xCD=0

append BLANK

REPL wjmc WITH dqml

do while !eof()

nRecn=Recn()

dqml=allt(wjmc)+''\\''

x=adir(Mysz,(dqml+''*.*''),''rashd'')

if x0

for I=3 to x

Mysz(I,1)=dqml+Mysz(I,1)

xGS=xGS+1

xCD=xCD+Mysz(I,2)

endf

append from array Mysz for allt(wjmc)''.'' AND allt(wjmc)''..'' and ''D''$wjsx

endi

go nRecn

skip

endd

use

这里有以上例子的源代码实例下载

在VFP如何利用低级文件操作函数读取*.INI文件

VFP为我们提供了16个低级文件操作函数,充分利用这些函数,几乎可对所有文件进行本来只有汇编、C等语言才能进行的操作。

*.INI文件其实也是ASCII码文本文件,只不过有其特定的规律而已。

下面以读取system.INI中[boot.description]关键字里的mouse.drv标识符中的值为例来说明:

nPath_ls=fullpath(''command.com'',2)

nPath=strtran(nPath_ls,''COMMAND.COM'',''system\\'') &&取得Windows\\system\\的目录名

dkwjm=nPath+''system.ini''&&需打开文件的路径和文件名

Fp=Foren(dkwjm,0) &&以只读(默认方式0可以不用)打开文件

if Fp<0

wait wind ''打不开您指定的文件''

retu

endi

do while !Feof(Fp)

wjnr=Fgets(Fp) &&从打开的文件中读取一行

if atc(''mouse.drv'',wjnr)=1

exit

endi

endd

=Fclose(Fp) &&关闭打开的文件

x=atc(''='',wjnr)

nQdz=iif(x>1,suns(wjnr,x+1),'''') &&nQdz=''标准鼠标''字符串

retu

我只不过是说明如何运用VFP提供的这些函数,至于如何建立和改写文件,为何用Fgets()来读取数据而不用Fread()来读取数据等,可以查阅VFP帮助,

VFP3.0的帮助是一本很好的中文教科书。

如何改变文件的最后修改日期和时间

在WINDOW 9X下我们没办法来改变一个文件的日期和时间,那在VFP能办到吗?

在WINDOW 9X下文件的日期和时间有创建、修改和访问三种,在通常情况下我们所说的文件日期和时间指的是修改这一项。

那在VFP下如何改文件日期和时间呢:

Fp=Foren(''需打开的文件'',2) &&以读写方式打开文件

if Fp<0

wait wind ''打不开您指定的文件''

retu

endi

wjnr=Fread(fp,1) &&从打开的文件头中读一个字节到wjnr

=Fseek(Fp,0,0) &&将文件指针移到文件头(回到原来的位置)

=Fwrite(Fp,wjnr,1) &&向打开的文件头中写入一个字节

=Fclose(Fp)&&关闭打开的文件

即把读取的那个字节原封不动的再写入文件,从而达到了将当前系统

的日期和时间来改写文件的日期和时间目的。

如何在程序的开始检测权限和根据权限操作

在一个程序的开始部分,如何根据不同的口令字来区分不同的登权限,各自的

口令字和权限设置又如何加以保密,以防止非法查看和修改?

我们辛辛苦苦编制的程序又如何根据每台机器的硬件来加以判断用户的合法

与非法,以防止非法拷贝?

针对以上问题,我编制了一个简单的程序实例供有兴趣的朋友参考。

该实例并非十分完美,也很简单,意在提供一种思路,大家可根据自己的情

况,加以完善。

实例共有一个数据表和四个模块组成,分别是:

一、KLK.DAT

这是经过vfpjmdbf.vcx加密后的数据表,解密后的表结构如下:

========================================================

表文件名: KLK.DBF

数据记录数: 3

最近更新的时间: 10/17/

代码页: 936

字段 字段名 中文含义 类型 宽度 小数位 索引 排序

1 BH 编号 字符型 2

2 XM 姓名 字符型 8

3 PASSKL 口令字 字符型 12

4 QX 权限 数值型 1

5 VARJB 硬盘卷标 数值型 12

篇3:VFP与Excel交互编程

VFP(Visual Foxpro)是一种关系型数据库管理系统,由于其强大的数据处理能力及良好的兼容性,使其成为数据库应用程序开发人员强有力的工具而广为使用; 而Excel则是一个优秀的电子表格处理软件,在兼容性、操作界面、公式运算、图表等方面有着独到的优势,成为广大办公应用人员必备的首选软件,上述两种软件在各自的应用领域均得到了广泛的应用,同时上述两种软件还具有良好的交互编程能力,为两者相辅相成、取长补短奠定了良好的基础。

本文将结合实例介绍VFP与Excel交互编程的方法,在VFP中除了使用OLE技术外,还可使用DDE技术与外部服务器进行数据交换,本文主要讲解VFP中使用OLE技术与Excel交换数据,Excel中借助内置的VBA使用VFP提供的Application对象来调用VFP中的一些功能。其功能可简述如下:VFP数据表“学生成绩.DBF”中含“学号、姓名、语文、数学”等字段,示例程序将从Excel工作簿“VFP交互.XLS”的工作表“查询”中用“条件”区域(一般为一个矩形区中的数据,该区域名称指定为“条件”,数据形如“语文>60”、“数学<90”等)中的数据作为查询的条件,用“连接条件”区域(一般为一个单元格,其值为“or”或者“and”)来获取组合“条件”的逻辑连接,并将该连接信息的内容以工作表的形式显示出来,然后调用VFP中针对给定表的SQL查询来找出给定条件的记录并显示到Excel中。下列程序均在VFP 6.0与Excel 中调试通过。

Excel驱动VFP

Excel内置的VBA语言(Visual Basic For Application)为Excel功能的扩展提供了便利的手段,用户可使用该语言直接驱动VFP完成数据检索等功能。程序首先生成一个VFP对象,然后用VFP的DoCmd方法执行VFP搜索命令串,其搜索结果再借助于VFP的DataToClip方法拷贝至剪切板,最后VBA将其粘贴至工作表的正确位置,为了每次运行时能将结果插入到工作表中,依次对操作的工作表以“搜索结果”、“搜索结果1”等进行编号。

Sub exceluseFox ()

Dim oFox As Object ’声明oFox为一个对象

Dim SCommand As String

’SQL对应的命令串变量

Dim cell As Variant

Dim choice As String

Dim join As String

Dim first As Boolean

Dim found As Boolean ’搜索结果标志,若表单中有搜索结果,则为真

Set Fox = CreateObject(“VisualFoxPro

.Application”)

’启动VFP,生成VFP对象

Sheets(“查询”).Select

’选择对应的工作表“查询”

join = Range(“连接条件”)

’在单一表格中的一个元素,其值为and或者or

choice = “” ’置连接串初值为空

first = True ’一般情况下连接串后需要加上逻辑连接符and 或 or,首次例外

For Each cell In Range(“条件”) ’产生连接条件,形成where语句的连接逻辑串

If first Then

choice = choice + cell ’形成第一次出现的where子句后的字符串

first = False

’修改首次进入标志,以后的连接均需要加上逻辑连接符

Else

choice = choice + “ ” + join + “ ” + cell

’join的值是and或者是or

End If

Next cell

Sheets.Add ’ 产生新的工作表单

’找一个不重复的工作表名

found = False

’工作表名中前四个汉字有没有“搜索结果”的标志变量

n = 1

For Each cell In Worksheets

If InStr(1, cell.Name, “搜索结果”) 0 Then

found = True ’找到对应的工作表

If n < Val(Mid(cell.Name + Space(2), 5, 2)) Then

n = Val(Mid(cell.Name + Space(2), 5, 2))

’形成形如搜索结果1、搜索结果2等的表单名

End If

End If

Next cell

If Not found Then

ActiveSheet.Name = “搜索结果”

Else

n = n + 1 ’值增1

ActiveSheet.Name = “搜索结果”& n

’形成工作表名

End If

SCommand =“SELECT * FROM d:\\vfp\\学生成绩表WHERE”+choice +“ INTO CURSOR TEMP” ’形成VFP查询命令串

oFox.DoCmd Scommand ’执行VFP命令串

oFox.DataToClip “temp”, , 3

’将搜索结果以文本方式拷贝至剪切板

Range(“a1: a1”).Select

’指向拷贝目标区域左上角单元

ActiveSheet.Paste ’粘贴搜索结果

篇4:VFP实验报告

学院:                     专业:                     年级:                 姓名:                  学号:                   实验室号:              计算机号:              实验日期: 年  月  日     指导教师签字:     成绩:

实验:熟悉VFP开发环境

1. 先在D盘建一个文件夹,并将其命名为092221004.在桌面打开VFP系统,在菜单栏上选择“工具” “选项”,此时跳出一个选项框,选定“文件位置”中的“默  认目录”,然后选择“修改”,将其设为“D92221004”,最后选择“设为默认值” ,“确定”,即可。

2. 在桌面打开VFP系统,在菜单栏上选择“工具” “选项”,此时跳出一个选项框,选定“区域”,然后在“日期格式”栏的下拉选项中选择“年月日”;勾选“日期分隔符”和“年份(或98)”项,并在“日期分隔符”其后面输入“-”;最后选择“设为默认值” ,“确定”,即可。

3. 在桌面打开VFP系统,在菜单栏上选择“工具” “选项”,此时跳出一个选项框,选定“区域”,然后在“小数位数”项输入小数位数的多少,最后选择“设为默认值” ,“确定”,即可。

4. 在桌面打开VFP系统,在菜单栏上选择“显示”,此时跳出一个工具栏对话框,勾选“调色板”后选择右边的“定制”,跳出定制工具栏,在“分类”中选定“调色板”,在其右边中选定红色,并将其拖动到主窗口,关闭定制工具栏,最后将其移到常用工具栏下。

5. 打开VPF系统,在菜单栏上选择“文件”,在“文件”的下拉栏中选定“新建”弹出新建选框,在左边的“文件类型”中选定“项目”然后点击右边的“新建文件”弹出创建的对话框,在该对话框的项目文件框中键入“学生成绩管理”后点击“保存”,在菜单栏上选择“文件”,在“文件”的下拉栏中选定“新建”弹出新建选框,在左边的“文件类型”中选定“数据库”然后点击右边的“新建文件”弹出创

建的对话框,在该对话框的数据库名框中键入“学生成绩”后点击“保存”。

区别: 如果是在项目中建立数据库,则命令窗口不会显示命令。

6. “CREATE PROJECT”是建立项目文件命令,“CREATE DATABASE” 是建立数据库命令,“ MODIFY DATABASE”打开默认目录下的数据库,“MODIEF PROJECT”是打开默认目录下的项目文件

7. 退出VFP系统的命令是“Quit”;其他退出VFP系统的方法:

方式一:单击应用程序窗口中的“关闭”按纽

方式二:在“文件”菜单中选择“退出”命令.

方式三:在命令窗口中键入QUIT命令.

方式四:同时按下Alt和F4组合键.

方式五:单击应用程序窗口左上角的控制菜单图标,从弹出的菜单中选择“关闭”命令.或者双击控制菜单图标。

一、实验目的

1. 熟悉VFP集成开发环境;

2. 项目管理器的使用;

3. 常用命令的使用;

二、实验内容

1. 在硬盘上新建一个以自己学号命名的文件夹,并将此文件夹设置为默认目录.要使此设置关闭VFP系统后再进入VFP系统时仍然有效该如何保存?

2. 设置日期格式为年月日格式,年份四位数显示和两位数显示如何设置,以短划线”-”作为日期分隔符,要使以上设置关闭VFP系统后再进入VFP系统时失效该如何保存?

3. 如何将现在小数点后只保留2位改成保留更多的位数?

4. 定制工具栏操作:如何将调色板工具栏里的红色添加到常用工具栏里?

5. 在默认目录下建立“学生成绩管理”项目文件和“学生成绩”数据库.分别在项目中建立数据库和不在项目中建立数据库,比较他们的区别;

6. 观察上述第5题的操作过程中命令窗口中出现的命令,并指出各命令的作用;

7. 退出VFP系统的命令是什么?有哪些方法可以退出VFP系统?

三、实验环境

1. 硬件:学生用微机、局域网环境

2. 软件:Windows 2000中文操作系统、Visual Foxpro 6.0

四、实验步骤

描述实验的具体操作步骤和方法,内容见后附的`手写材料。

五、实验调试与结果分析

描述实验的调试过程,实验中发生的现象、中间结果、最终得到的结果,并进行分析说明,分析可能的误差或错误原因等.内容见后附的手写材料。

六、总结

说明实验过程中遇到的问题及解决办法;新发现或个人的收获;未解决/需进一步研讨的问题或建议新实验方法等。内容见后附的手写材料。

篇5:VFP编程中的变量操作

一、问题的提出

早期的数据库编程语言,如dBaseⅢ、Foxbase 2.0等对于变量的定义一般不需要作显式的说明也可引用,只要求用户对其进行相应的赋值,系统中就可为该变量准备相应的存储空间,系统中也能认同该变量,正是由于我们大多数编程人员具有这样的编程经验,在数据库编程时对于变量不作一些说明直接引用,往往会导致一些错误的发生,而这些错误在编程调试中是不易发现的,特别是局部与全局变量在递归中的使用问题;数据库在升级及更新换代的过程中,亦然兼容大多数人对于简单变量不定义但能使用的这种用法,另一方面更倡导结构化的设计思想,如果用户在阅读VFP提供的一些范例,不难看出它的编程风格完全和结构化的编程思想是一致的,

笔者认为站在VFP的角度就应该完全按照结构化的思想来设计程序:如程序结构化、过程函数中的变量不用或者少用全局变量,内部使用的变量一般作局部变量进行定义;当然所有这些均建立在可视化的前提下,这是无容置疑的。笔者下面的一道程序正是犯了未定义局部变量而滥用全局变量的毛病。

二、实例

下面是笔者通过在VFP中的插入一个oleCtrol控件来实现将磁盘中的文件目录保存到一个目录树中以实现打开一个目录及迭起一个目录的操作,在装填oleCtrol的数据时对于目录树宜采用递归调用,其形式可采用深度优先搜索法,对于该结点在插入到oleCtrol后,然后对于与该结点相邻的所有结点为普通结点直接插入到oleCtrol中,若为子目录结点则递归调用该插入子程序(即深度遍历目录结构)。

下面是有关将用户选择的目录中的数据填入到目录树中的一个递归程序,其过程叫做filltree(m.path,m.count),其代码如下:

*procedure filltree(m.path,m.nlevel)

parameters m.path,m.nlevel

local nlvl,DirArr,nTotDir

**由于该处缺少对于程序中的变量I的定义而导致程序不正常运行,改进后该位置增加了对于变量I的定义

**该过程仅需要一个参数,其它参数可以缺少,对于缺少的参数进行设定

m.path=alltrim(m.path)

if (parameters()<2) or (type(“m.nlevel”)#“N”)

nlvl=0

else

nlvl=m.nlevel

endif

lvl=nlvl+1

*将当前参数传过来的m.path及所处的层数保存在对象oleControl1中

this.olecontrol1.AddItem(LOWER(m.path))

this.olecontrol1.Indent(m.nlvl-1)=m.nlvl

*列出当前目录下的所有目录,并排序

DIMENSION DirArr[1,1]

nTotDir=ADIR(DirArr,m.path+“*.”,“D”)

ASORT(DirArr)

*对于当前目录下的所有目录实施相同的填充目录树的方式进行目录树的填入

*即对于当前目录下的其它所有目录均采用filltree进行递归调用的处理

FOR i = 1 TO m.nTotDir

IF DirArr[m.i,1] != '.' AND ATC('D',DirArr[m.i,5])#0

THIS.FillTree(m.path+DirArr[m.i,1]+'\\', m.nlvl)

ENDIF

ENDFOR

****过程结束

其中filltree是该表单form的一个方法程序,通过新建方法来设定的,filltree中的参数m.path是借助于命令按钮Directory传递过来的,Directory的Click事件是这样的,

**Directory的命令按扭事件借助于getdir()得到当前的路径

local m.cdir

m.cdir=getdir()

thisform.olecontrol1.clear

thisform.filltree(m.cdir)

在上述程序运行的过程中,只能检索到一个目录,且是一个死循环,花了一上午的时间,终于被我检查出来了,这就是在该过程中对于过程中用到的变量i没有定义,而该变量i是作为深度优先搜索算法中的中间变量,在递归调用返回时应恢复到其调用递归前的状态,即是借助于局部数据区域保存的数据,或者说是每一次递归调用时,临时又分配一个这样的内存变量来保存数据,递归返回时撤消其生存的空间而恢复父进程的一些变量,可是由于没有被定义,而对于数据库语言将其作为全程变量来进行处理,该变量的值并不能在递归返回时恢复,因而出现死循环,可是对于变量没有被定义这样的处理,在VFP中是容许的,但是作为该种版本的数据库系统并不倡导这种处理方式,而这些也正是初次接触VFP或者是惯于使用Foxbase等语言的同志容易犯的错误所在,对于其它的高级语言如Pascal、C等语言,由于其变量要求先定义后引用的限制则不可能出现这种问题。

三、结束语

笔者是一个学习VFP的新手,对于象我这样一个学习VFP的新手来说,我认为除了要继承Foxbase等低级数据库的编程技巧外,更应去适应高版本的语言系统的一些规范,如对于VFP中的类的认识理解,对于VFP中编程中的一些模块化的风格(在过程或函数中少用或不用转移语句,对于过程或函数内部的变量应加以说明,一般不得使用全程变量)的理解,如上例中由于在方法程序中对于所使用的变量i进行显示的说明而导致程序严重的错误,而这种错误一般是不易发现的,这些错误也往往是容易犯的,希望通过此篇文章的阐述,让读者以此为戒,不犯同样的错误。

VFP教程 十一、应用程序开发

汇报表

编程简历

报表怎么造句

营业员报表岗位职责

下载VFP编程:VFP报表输出(集锦5篇)
VFP编程:VFP报表输出.doc
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
点击下载本文文档