如何用VFP打開一個PDF文件。。。

unlist 2005-10-21 11:09:02
在d:\abc.pdf
我想用VFP打開d:\abc.pdf
怎樣寫程序呢?
...全文
843 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gucciwu 2006-03-01
  • 打赏
  • 举报
回复
请问如何将vfp的报表保存为pdf文档?
zsjiaming 2005-10-24
  • 打赏
  • 举报
回复
上面的代码试了一下.效果不错.

至于pdf.ocx的版本.........主要是看机子上装的是哪一个版本.我的是5.0

发布的时候也许可以连同pdf.ocx一同发布

使用前要注册,不知免费使用的pdf有没有这个控件,我装的是个100多M的完整d版.
如果免费的有个pdf控件,就没有什么破解问题.单独注册pdf.OCX使用
十豆三 2005-10-24
  • 打赏
  • 举报
回复
在我的机子上必须为6,5不行。

我装的是Adobe Reader 6.0

控件名称: PDF.PdfCtrl.6
版本: 5.0
状态: 已注册
ProgID: PDF.PdfCtrl.6
CLSID: {CA8A9780-280D-11CF-A24D-444553540000}
TypeLib: {CA8A9783-280D-11CF-A24D-444553540000}
文件位置: C:\PROGRA~1\Adobe\ACROBA~1.0\Reader\ActiveX\pdf.ocx
文件大小: 416224 字节
创建于: 11/03/03 14:39:10
修改于: 05/18/04
访问于: 10/24/05
shamihu 2005-10-24
  • 打赏
  • 举报
回复
to: apple_8180(十豆三)
你自己在你电脑上看看吧,到底应该是"PDF.PdfCtrl.5"还是"PDF.PdfCtrl.6", ^-^
编程序不应该想当然,你说呢?
十豆三 2005-10-24
  • 打赏
  • 举报
回复
PDF reader ver 6.0

这句
OLEClass = "PDF.PdfCtrl.5", ;
应为

OLEClass = "PDF.PdfCtrl.6", ;

shamihu 2005-10-24
  • 打赏
  • 举报
回复
可惜CSDN不能贴图.
shamihu 2005-10-23
  • 打赏
  • 举报
回复
可以直接将PDF显示在VFP Form里的,机器里事先安装好PDF reader ver 6.0
将下面程序代码保存为一个prg文件,传入PDF 文件名作为参数,运行一下看看效果便知道了。


LPARAMETERS tFile

PUBLIC oform1

oform1=NEWOBJECT("form1")

IF VARTYPE(cFile) # "U"
oForm1.cmdFile.Visible = .f.
oForm1.cmdExit.Visible = .f.
oForm1.oleControl1.Top = 12
oForm1.oleControl1.LoadFile([&cFile])
ENDIF

oform1.Show
RETURN
**********************************************************
DEFINE CLASS form1 AS form

DoCreate = .T.
Caption = "pdfForm"
Name = "Form1"

ADD OBJECT cmdfile AS commandbutton WITH ;
Top = 12, ;
Left = 12, ;
Height = 27, ;
Width = 144, ;
Caption = "Select File", ;
Name = "cmdFile"

ADD OBJECT cmdexit AS commandbutton WITH ;
Top = 12, ;
Left = 168, ;
Height = 27, ;
Width = 84, ;
Caption = "E\<xit", ;
Name = "cmdExit"

ADD OBJECT olecontrol1 AS olecontrol WITH ;
OLEClass = "PDF.PdfCtrl.5", ;
Top = 48, ;
Left = 12, ;
Height = 192, ;
Width = 348, ;
Name = "Olecontrol1"

PROCEDURE Init
ThisForm.ReSize()
ENDPROC

PROCEDURE Resize
ThisForm.Olecontrol1.Height = ThisForm.Height - 60
ThisForm.Olecontrol1.Width = ThisForm.Width - 24
ThisForm.Olecontrol1.Refresh()
ENDPROC

PROCEDURE cmdfile.Click
LOCAL cFile
cFile = GETFILE([PDF])
IF !EMPTY(cFile)
THISFORM.oleControl1.LoadFile([&cFile])
ENDIF
ENDPROC

PROCEDURE cmdexit.Click
ThisForm.Release()
ENDPROC

ENDDEFINE
十豆三 2005-10-21
  • 打赏
  • 举报
回复
1、首先要安装PDF阅读工具。

2、然后利用API来调用默认关联的程序打开PDF文件,请详见:

在VFP中我们可以用run来调用由VFP自身生成的.exe文件。命令格式:
run c:\..\*.exe

当调用非VFP自身生成的.exe文件时,需要加上绝对路径和参数。
一般来说,用VFP运行非VFP自身生成的可执行文件时,会有一个黑色的窗口显示一下。可以通过加上/n来隐藏这个窗口。例如运行Windows下的扫雷游戏,命令格式如下:
RUN/n C:\Windows\Winmine.exe
下面运行一个更复杂一点的程序。用word打开c:\下的一个名为mlx.doc的word文件,命令格式如下:
run /n3 C:\Program Files\Microsoft Office\Office\Winword.exe C:\mlx.doc
参数:n 在运行时隐藏VFP的黑色窗口。
3 表示以最大化的方式运行程序。1正常方式、2最小化方式、3最大化方式

在这种情况下,虽然可以通过加上参数使程序程序能够流畅运行,但还是要指定绝对路径,而在实际开发时我们常常无法确定所需要启动的应用程序的文件名及其绝对路径。比如,在上例中,我们无法确定用户的word到底安装在什么地方,如果用户把word安装到了别的地方,上述命令便会出错。再如,一个.gif文件,有的用户喜欢用ACD See来打开,有的用户喜欢用IE来打开,有的用户喜欢用豪杰来打开,……
为了解这种情况我们可以调用Windows的文件关连来打开文件。即所有的文件都用系统默认的程序来打开。这就要调用Windows的Win32 API函数。调用方式如下:

DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,;
STRING lpszOP, ;
STRING lpszFile, ;
STRING lpszParams, ;
STRING lpszDir, ;
INTEGER fsshowcmd
DECLARE INTEGER GetDesktopWindow IN win32api
HWND = GetDesktopWindow()
lpszOP = "open"
* 指定要打开的文件名
lpszFile ="c:\mlx.doc"
lpszParams = ""
lpszDir = "c:\temp"
fsshowcmd = 1
* 执行ShellExecute命令
LNRETURN = ShellExecute(HWND, lpszOP,lpszFile, lpszParams, lpszDir,fsshowcmd)

可以用任意的文件名来替换上文中的 c:\mlx.doc 。如果指定的文件名Windows无法找到相应的关连程序,这时程序将不会做出反应。有关的参数可以自行偿试进行修改,以达到最佳效果。
tch789 2005-10-21
  • 打赏
  • 举报
回复
up
unlist 2005-10-21
  • 打赏
  • 举报
回复
謝謝
第五章 项目管理器 5.1 项目管理器介绍 5.2 项目连编 5.3 项目信息和项目文档 5.1 项目管理器介绍 "项目管理器"是Visual FoxPro 6.0应用程序的文件、数据、 对象的组织管理中心,利用"项目管理器"可以在项目中添 加或移去文件、创建新文件或修改已有文件、查看表的内容 以及把文件与其他项目关联起来。 1. 项目管理器的组成 ( (1 1)选项卡: )选项卡:" "项目管理器 项目管理器" "有六个选项卡 有六个选项卡, ,其中 其中" "全部 全部" "选项卡显 选项卡显 示的是后面 示的是后面5 5个选项卡的全部内容,即 个选项卡的全部内容,即" "数据 数据" "、 、" "文档 文档" "、 、" "类 类 " "、 、" "代码 代码" "和 和" "其他 其他" "。这 。这5 5个选项卡独立管理相应文件对象。 个选项卡独立管理相应文件对象。 ( (2 2)分层结构视图: )分层结构视图:如果要在某个选项卡列出的文件中找出某个文 如果要在某个选项卡列出的文件中找出某个文 件对象,只需找到相应的文件大类,然后单击其左边的 件对象,只需找到相应的文件大类,然后单击其左边的" "+" +",就 ,就 会展开列出其下级文件类型。如果没有 会展开列出其下级文件类型。如果没有" "+" +"出现,那说明当前对 出现,那说明当前对 象并没有文件加入其中。 象并没有文件加入其中。 " "+" +"点击之后会变成 点击之后会变成" "- -" "标志,如果 标志,如果 这时点击 这时点击" "- -" ",那么就可以折叠展开的文件。 ,那么就可以折叠展开的文件。 ( (3 3)命令按钮: )命令按钮:在 在" "项目管理器 项目管理器" "窗口右边有 窗口右边有6 6个命令按钮, 个命令按钮, 即 即" "新建 新建" "、 、" "添加 添加" "、 、" "修改 修改" "、 、" "运行 运行" "或 或" "打开 打开" "或 或" "浏览 浏览 " "、 、" "移去 移去" "及 及" "连编 连编" ",其中 ,其中" "运行 运行" "或 或" "打开 打开" "或 或" "浏览 浏览" "分 分 别与所选中的文件对象有关,并且做相应的改变。 别与所选中的文件对象有关,并且做相应的改变。 n n 新建: 新建:在 在" "项目管理器 项目管理器" "中新建并加入新的项目。单击不同的 中新建并加入新的项目。单击不同的 对象,将建立不同的项目。 对象,将建立不同的项目。 n n 添加: 添加:是将一个已经创建的现成项目添加到 是将一个已经创建的现成项目添加到" "项目管理器 项目管理器" "中。 中。 n n 修改: 修改:当选中一个项目,点击 当选中一个项目,点击" "修改 修改" "按钮,则会打开相应的 按钮,则会打开相应的 设计器或编辑修改的对话框,可以在窗口内做任何操作和修改工作。 设计器或编辑修改的对话框,可以在窗口内做任何操作和修改工作。 n n 运行: 运行:运行一个程序文件或查询等。 运行一个程序文件或查询等。 n n 打开、关闭 打开、关闭:指将某个项目设置为打开或关闭状态。 :指将某个项目设置为打开或关闭状态。 n n 浏览: 浏览:浏览一个表或文件。 浏览一个表或文件。 n n 移去: 移去:选中一个项目,点击 选中一个项目,点击" "移去 移去" "按钮,将提示你将该项目 按钮,将提示你将该项目 从 从" "项目管理器 项目管理器" "中移去,或者从磁盘上永久性的删除。选择删除 中移去,或者从磁盘上永久性的删除。选择删除 一定要小心,文件删除后不能恢复。 一定要小心,文件删除后不能恢复。 n n 连编: 连编:打开一个 打开一个" "连编项目 连编项目" "对话窗口,其中包括编译应用程 对话窗口,其中包括编译应用程 序( 序(.app .app),编译可执行文件( ),编译可执行文件(.exe .exe),或者连编 ),或者连编" ".com" .com"和 和 " ". .dll dll" "文件,以及其他的操作选项。 文件,以及其他的操作选项。 2. 建立一个新项目 ( (1 1)从 )从" "文件 文件" "菜单中选择 菜单中选择" "新建 新建" "命令,打开 命令,打开" "新建 新建" "对话框。 对话框。 ( (2 2)选择 )选择" "项目 项目" ",有两种方式: ,有两种方式:" "新建文件 新建文件" "和 和" "向导 向导" "。这里选择 。这里选择" "新建 新建 文件 文件" "。 。 ( (3 3)打开 )打开" "创建 创建" "对话框。在 对话框。在" "项目文件 项目文件" "中输入项目名称,在 中输入项目名称,在" "保存在 保存在"
第四章 数据库和表的高级应用 4.1 数据库的使用 4.2 数据库的高级应用 4.3 设置表属性 4.4 建立表间的关系 4.5 使用多个表 4.1 数据库的使用 4.1.1 向数据库添加数据表 向数据库添加表有两种方法:菜单方式和命令方式。 菜单方式添加表 在"项目管理器"中,从"数据"选项卡中选择 数据库,例如,"教师管理"数据库,如图4-1所示, 单击"修改"按钮,打开"数据库设计器",如图4- 2所示。 图4-1 选择数据库 图4-2 数据库设计器 图4-3 向数据库添加表 从"数据库"菜单中选择"添加表"命令或单击" 数据库设计器"工具栏上的"添加表"按钮,在"打 开"对话框中选定"jsqk.dbf",然后单击"确定" 按钮。这时"jsqk.dbf"表就添加到"教师管理"数 据库中了。如图4-3所示。 2. 命令方式添加表 【格式】:ADD TABLE <数据表名> 【功能】:向已打开的数据库中添加数据表。 在命令窗口中输入如下代码: OPEN DATABASE "教师管理" ADD TABLE jsqk.dbf 只有明确地把一个表添加到数据库中,才能使它成为 数据库的一部分。即使在打开数据库后,执行MODIFY STRUCTURE命令修改表的结构,也不能把表添加到数 据库中。一个表只能加入到一个数据库中,如果要把数 据库中的表添加到另外一个数据库中去,必须先把该表 从本数据库中移去。 4.1.2从数据库中移去表 从数据库中移去一个表也可以采用菜单方式和命令 方式: 1. 菜单方式移去表 在"项目管理器"中,从"数据"选项卡中选择表 所在数据库,单击"修改"按钮,打开"数据库设计 器"。 从"数据库设计器"菜单中单击要移去的表,例如 jsqk.dbf表,此时该表标题变为深色,表明该表已被选 中。 执行系统菜单中的"数据库"下的"移去"命令, 或单击"数据库设计器"工具栏上的"移去表"按钮, 出现"把表从数据库中移去还是从磁盘上删除"的对 话框。这里选"移去"按钮。 最后单击"确定"按钮。这时"jsqk.dbf"表就从 "教师管理"数据库中移去了。 如果选择"删除", 则从当前数据库中移去表的同时,还将其从磁盘上删 除了。 2. 命令方式移去表 【格式】:REMOVE TABLE <数据表名> 【功能】:从已打开的数据库中移去数据表。 在命令窗口中输入如下代码: OPEN DATABASE "教师管理" REMOVE TABLE jsqk.dbf 4.1.3 展开或折叠一个表 4.1.4 重排数据库的表 打开数据库设计器,从"数据库"菜单中选择" 重排,再从"重排表和视图"对话框中选择适当的 选项. 4.2 数据库的高级应用 4.2.1 使用其它数据库中的表 若要访问其他数据库中的表,我们可以使用USE命令 和"!"符号访问该表。使用"!"符号可以引用一个 不在当前数据库中的表。例如:当前数据库为"教师管 理",打开数据库"学生管理"中的STUDENT.DBF表, 可输入如下命令: USE 学生管理!STUDENT BROWSE 这里,将自动打开数据库"学生管理",但并不把它设 为当前数据库。当关闭表时,数据库也会自动关闭。 4.2.2创建存储过程 存储过程是存储在.DBC文件中的Visual FoxPro代码, 是专门操作数据库中数据的代码过程。存储过程可以提 高数据库的性能,因为在打开一个数据库时,它们便加 载到内存中。 如要创建、修改或移去存储过程,可以在"项目管理 器"中,选择并展开一个数据库,选定"存储过程", 然后选择"新建"、"修改"或"移去"按钮。 使用存储过程主要是为了创建用户自定义函数,字段 级规则和记录级规则将引用这些函数,当把一个用户自 定义函数作为存储过程保存在数据库中时,函数的代码 保存在.DBC文件中,并且在移动数据库时,会自动随数 据库移动。使用存储过程能使应用程序更容易管理,因 为可以不必在数据库文件之外管理用户自定义函数。 4.2.3引用多个数据库 1. 打开多个数据库 打开一个数据库后,表和表之间的关系就由存储在该数据库中 的信息来控制。您可以同时打开多个数据库。例如,在运行多个 应用程序时,可以使用多个打开的数据库,每个应用程序都以不 同的数据库为基础。也可能您想打开多个数据库,从而能使用应 用程序数据库之外的另一数据库中的存储信息。 【方法】: 在"项目管理器"中,选定一个数据库,然后选择"修改"按 钮或"打开"按钮。 使用 OPEN DATABASE命令。 打开新的数据库并不关闭其他已经打开的数据库,这些已打开 的数据库仍然保持打开状态,而新打开的数据库成为当前数据库。 2. 设置当前数据库 当打开多个数据库时,Visual FoxPro 将最后打开的数据库 设置为当前数据库
第 1 页 (共 8 页) 学习中心_________ 姓 名_____________ 学 号 西安电子科技大学网络与继续教育学院 《数据库应用系统》全真试题 (闭卷 90 分钟) 题号 一 二 三 四 五 总分 题分 30 30 4 12 24 得分 一、 选择一个正确的答案填空: (15*2=30 分) 1、___________ 不可以作为查询和视图的输出类型。 A、自由表 B、表单 C、临时表 D、数组 2、创建数据库后,系统自动生成扩展名为 ________ 的三个文件。 A、 .SCX、.SCT、.SPX B、 .DBC、.DCT、.DCX C、 .PJX、.PJT、.RPJ D、 .DBF、.DBT、.FPT 3、建立两张表之间的临时关系时,必须设置的是___________。 A、主表的主索引 B、主表的主索引和子表的主控索引 C、子表的主控索引 D、主表的主控索引和子表的主控索引 4、以下的四组函数,返回值的数据类型是一致的_____。 第 2 页 (共 8 页) A、DTOC(DATE()), DATE(), YEAR(DATE()) B、LEN("VFP 5.0"),CTOD("5/20/2006"), SPACE(8) C、EOF( ) , RECOUNT( ) , DBC( ) D、STR("3.14",3,1), DTOC(DATE()), SUBSTR("ABCD",3,1) 5、在命令窗口中执行了命令 X=100 后,则默认该变量的作用域是 _________。 A、全局 B、局部 C、私有 D、不定 6.VFP 是一种 ________ 模型的数据库管理系统。 A、层次 B、网络 C、对象 D、关系 7.VFP 系统环境下,运行表单的命令为_______。 A、DO FORM <表单名> B、REPORT FORM <表单名> C、DO <表单名> D、只能在项目管理器中运行 8.要求一个表中的数值型字段数据精度具有 3 位小数,则该字段的宽度 至少定义为_________ 。 A、4 位 B、5 位 C、6 位 D、12 位 9.由计算机、操作系统、DBMS、数据库、应用程序等组成的整体称为 ___________。 A、数据库应用系统 B、数据库管理系统 C、文件系统 D、软件系统 10.创建数据库后,系统自动生成扩展名为 ________ 的三个文件。 A、 .SCX、.SCT、.SPX B、 .DBC、.DCT、.DCX C、 .PJX、.PJT、.RPJ D、 .DBF、.DBT、.FPT 11. 在 Visual FoxPro 中创建含备注字段的表和表的结构复合索引文件后, 第 3 页 (共 8 页) 系统自动生成的三个文件的扩展名为 ___________ 。 A、.PJX、.PJT、.PRG B、.DBF、.CDX、.FPT C、.FPT、.FRX、.FXP D、.DBC、.DCT、.DCX 12.有关查询与视图,下列说法中不正确的是______。 A、查询是只读型数据,而视图可以更新数据源 B、查询可以更新源数据,视图也有此功能 C、视图具有许多数据库表的必性,利用视图可以创建查询和视图 D、视图可以更新源表中的数据,存在于数据库中 13. 在 Visual FoxPro 中,关于查询和视图的正确描述是 A、查询是一个预先定义好的 SQL SELECT 语句文件 B、视图是一个预先定义好的 SQL SELECT 语句文件 C、查询和视图是同一种文件,只是名称不同 D、查询和视图都是一个存储数据的表 14.下列说法中正确的是___________。 A、视图文件的扩展名.vcx B、查询文件中保存的是查询的结果 C、查询设计器实质上是 SELECT-SQL 命令的可视化设计方法 D、查询是基于表的并且是可更新的数据集合 15、如果一个数据库表的 append 触发器设置为.F.,则不允许对该表作 _________的操作。 A、修改记录 B、删除记录 C、增加记录 D、显示记录 二、填空题: (15*2=30 分) 1.打开一张空表,在不移动记录指针的情况下,函数 BOF()的值是 ;函数 EOF()的值是 。如果打开的表中有一条记录, 第 4 页 (共 8 页) 在不移动记录指针的情况下,函数 BOF()的值是 ;函数 EOF() 的值是 ;函数 RECNO()的值是 。 2. 已知 Y="1",Z="2",X12="good",则表达式 X&Y&Z 的值为 。 3.学生表(XS.DBF)的表结构为:学号(XH,C,8),姓名(XM,C,8), 性别(XB,C,2)班级(BJ,C,6),写出用 Insert 命令向 XS 表添加一条 新记录,记录内容为: XH XM XB

2,727

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧