⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 数据库技巧3.txt

📁 Vfp 文档 一些经典编程文章 可供初学者学习编程时使用
💻 TXT
📖 第 1 页 / 共 2 页
字号:
内容 
 
1 
 在Visual Foxpro中操作WORD97对象。 
2 用VFP管理WORD文档。 
3 如何修复被破坏的数据表 
4 使GRID表格中显示的记录内容更醒目 
 
5 在VFP5.0中实现不定长文本的紧凑打印  
6 VFP常见错误及处理方法 
 
7 在VFP中控制EXCEL 

1、在VFP中操作WORD对象

          要把VFP与WORD结合使用,主要应用了OLE技术,众所周知,自从OLE技术推出以来,完全改变了软件世界的面貌,不需通过DDE技术,把可以方便地实现两个应用程序之间的通信。VFP提供了许多OLE对象的操作函数,而WORD97也支持OLE技术,通过相应的编程,用户可以在程序中激活OLE对象,并对其进行一系列的操作,例如在表单中可以通过插入OLE对象方式,激活WORD文档,如图所示:

 

 

 

 

 

 

 

 

     在对象类型中选择WORD文档,完成后按确定按钮,即可对此WORD OLE对象进行编程,主要用到属性列表如下:

属性名 
 说明 
 
Autosize 
 设定OLE对象大小是否可随其中插入的对象自动调整尺寸 
 
Autoverbmenu 
 设定激活OLE对象鼠标右键支持的快捷菜单 
 
Autoactivate 
 设定是否可以执行鼠标右键OLE对象的弹出菜单 
 
Autovermenu 
 设定OLE的执行状态为何种方式 
 

     以上介绍了一个在表单中建立WORD对象的方法,这里再介绍一个在PRG程序中打开WORD文档并对其进行编辑的例子,通过查看注册表内容中可知,WORD97在注册表中的OLE automation为WORD.APPLICATION,由此可在程序中调用此方法来激活WORD97进入字处理环境中,语法如下:

CREATEOBJECT("WORD.APPLICATION")

通过这段代码创建WORD对象后并不立即启动WORD97,这是因为createobject()函数执行时只是将WORD.APPLICATION OLE对象变成在VFP环境中的一个OLE对象而并未将其显示于桌面中,我们可以通过把WORD的VISIBLE默认属性为设置为.F.而使其在桌面中显示,完整的调用代码如下:

PUBLIC MYWORD

MYWORD=CREATEOBJECT("WORD.APPLICATION")

MYWORD.VISIBLE=.T.

运行以上代码后,读者朋友可能会发现,WORD97启动后,既没有打开原有的文档,也没有新建一文档,这是因为,以上代码还缺少应用一个方法,它就是ADD,新建一文档使用方法如下:

MYWORD.DOCUMENTS.ADD

同理,打开文档的代码如下:

MYWORD.DOCUMENTS.ADD("***.DOC")

关于WORD支持什么样的OLE方法及属性,可使用小工具OLE/COM object viewer,此工具在VISUAL STUDIO光盘中的COMM目录下即可找到,有兴趣的朋友可详细试用。 
 

 

2、用VFP管理WORD文档。

        除了在VFP中调用WORD进行文字处理外,我们还可以对WORD文档进行管理,大家可能有这样的经验,日常工作中用WORD97建立了大量的文档,由于数目日渐增多,查找不便,难于管理,事实上,我们可以用VFP编写一管理系统对日常工作中的文档进行管理,这里可涉及了一个很关键的技术性问题,即如何把不同目录下的文档集中在同一数据表中呢?只要用数据表存贮各WORD文档,就可以生成管理表单对文档进行新增、删除、编辑了。

    笔者通过试验发现:可使用命令APPEND GENERAL把文档COPY到数据表中的通用字段中,用函数GETDIR()选择不同的当前目录来复制所需要的WORD97文档,再用ADIR()将需要管理的WORD文档存放在一数组中,完整的代码如下:

CREA table oletable(name c(40),worddoc g) &&建立表oldtable.dbf,其中name为WORD

CD getdir() &&文档名

nfiles=adir(awordfiles,"*.doc") &&把选取的文档放到一数组awordfiles中,

IF nfiles>0 &&并把文档数目放在变量nfiles中

for i=1 to nfiles

APPEND blank

REPLACE oletable.name with awordfiles(i,1) &&把文档存放在数据表中

APPEND general worddoc from awordfiles(i,1)

ENDFOR

ELSE

MESSAGEBOX("此目录下无此文件类型!")

ENDIF

    运行以上的代码就可以把文档内容存放中数据表中的通用字段,同时建立管理表单后就能方便地管理文档了。本例主要解决了如何存放文档的问题,至于如何通过数据表进行管理WORD文档,及具体的功能就需要大家根据不同的要求编写相应的表单了。

    应用OLE技术,我们在VFP应用系统中不单可对WORD97进行操作,也可以与所有支持OLE技术的应用程序进行数据交换,如:EXCEL、INTERNET EXPLORER等等,关于更深一层的OLE应用问题,并非一文能解释,笔者在此不再讨论,欢迎大家对上文提出意见。 
 
返回页首 
 

 

3、如何修复被破坏的数据表。(转载于计算机世界)

---- 目 前 在 我 国, 有 相 当 一 部 分 正 在 运 行 应 用 程 序 是 用Foxpro 编 写 的, 由 于 突 然 断 电、 程 序 非 法 关 闭 等 原 因, 经 常会 导 致Foxpro 数 据 库.DBF 文 件 被 破 坏, 如 果 数 据 库 被 破 坏了, 用Foxpro 打 开 数 据 库.DBF 时, 会 出 现"not a table/dbf" 错 误 
提 示, 导 致 无 法 用Foxpro 打 开。 

---- 首 先 介 绍 一 下Foxpro 数 据 库.DBF 的 文 件 结 构: 

---- Foxpro 数 据 库*.DBF 的 文 件 结 构 由 头 记 录 和 数 据 记 录 组
成, 头 记 录 定 义 该DBF 的 结 构 并 包 含 与 该 库 相 关 的 其 它 信
息。 头 记 录 由 文 件 位 置0 字 节 开 始。 

---- 数 据 库 头 部 几 个 关 键 字 节 含 义 如 下: ( 注: 库 文 件 中
存 储 整 数 时 低 位 字 节 在 前) 

---- 字 节 偏 移 说 明 

0             库文件的版本类型 

1-3        最近更新的日期(YYMMDD) 

4-7        库文件中记录的个数

8-9         第一条记录的起始位置 

10-11         一条记录的长度(包括删除标记)



---- 其 它 字 节 的 具 体 描 述 不 在 此 赘 述, 可 以 参 考 有 关 部 
门 书 籍 或 者 程 序 开 头 注 释 部 分。 

---- 在 实 际 工 作 中 发 现, 许 多 情 况 下 数 据 库 错 误 都 是 由 
于 记 录 个 数 比 实 际 记 录 个 数 大1 个, 以 至 于 数 据 库 无 法 用
打 开。 



---- 主 要 通 过 以 下 两 种 办 法 来 对 数 据 库 进 行 修 复。 



一、 用Pctools、NU 的Diskedit 等 工 具 软 件 进 行 恢 复: 

运 行Pctools, 选 中 无 法 打 开 的 数 据 库, 按E 文 件 进 入 编 辑 功
能, 按F1 切 换 显 示 模 式。 



按F3 进 行 编 辑, 将 开 始 的 第5 个 字 节 值 减1, 按F5 存 储, 然 后
退 出Pctools, 启 动Foxpro, 发 现 被 破 坏 的 数 据 库 可 以 打 开 使
用 了。 

---- 由 于 许 多 操 作 者 并 不 一 定 熟 悉 如 何 使 用Pctools, 因 此
我 建 议 大 家 可 以 用 比 较 熟 悉 的Excel 程 序 根 据 下 面 的 步 骤
来 进 行 数 据 库 的 恢 复。 

二、 用Excel 进 行 恢 复。 

启 动Excel, 选 择" 打 开" 按 钮, 出 现 打 开 对 话 框, 在 打 开 文 
件 类 型 中 选 择Dbase/Foxpro(*.DBF) 文 件 类 型, 再 选 中 被 破 坏
的 数 据 库 打 开, 这 时 不 要 做 更 改, 只 选 择" 保 存" 按 钮, 会
出 现" 另 存 为" 对 话 框, 仍 选 择 以 原 来 文 件 名 保 存, 会 提 
示" 文 件 已 经 存 在, 是 否 替 换 已 有 文 件 ?", 选 择" 是"。 



然 后 选 择" 文 件" 菜 单 上 的" 关 闭", 会 出 现 提 示" 数 据 库 文 
件 不 是Excel 格 式, 要 保 留 修 改 吗 ? 

要 保 存 为Excel 格 式, 单 击' 是', 然 后 在' 保 存 类 型' 下 拉 列 
表 框 选'Excel 工 作 簿'; 



要 用 现 有 格 式 保 存 并 替 换 原 来 的 文 件, 单 击' 是', 然 后 单
击' 保 存'; 



要 在 关 闭 文 件 时 维 持 现 有 格 式 并 不 作 保 存, 单 击' 否'。" 


---- 由 于 我 们 并 没 有 对 数 据 库 的 记 录 进 行 改 动, 只 是 为 
了 恢 复 数 据 库, 所 以 选 择 最 后 一 项" 在 关 闭 文 件 时 维 持 现
有 格 式 并 不 作 保 存", 因 此 单 击" 否", 退 出Excel。 

启 动Foxpro, 再 次 打 开 数 据 库 文 件, 发 现 数 据 库 文 件 已 可 
以 被 打 开 了, 但 是 观 察 数 据 库 的 结 构, 会 发 现 数 据 库 结 
构 中 的 索 引 不 见 了, 不 过 数 据 库 的 索 引 文 件 还 存 在。 我 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -