|
P> Visual FoxPro 5.0 作 为 一 个 前 端
数 据 库 应 用 开 发 工 具, 受 到 人 们 的 喜 爱, 在 我 国 应 用 面 相 当 广 泛。 本 人 在 用Visual
Foxpro 5.0 进 行 软 件 开 发 中 发 现 了Foxpro 5.0 中 的 一 个 错 误, 现 把 该 错
误 的 情 况 公 布 出 来。
当 用Foxpro 5.0 的 表 单 设 计 向 导 进
行 一 对 多 的 表 单 设 计 时, 顺 这 该 向 导 生 成 了 表 单 以 后, 执 行 该 表 单, 当 你 按
增 加 按 扭 向 子 表 中 增 加 记 录 时, 会 发 现 子 表 的 表 格 中 的 编 辑 框 并 不 能 编 辑
你 所 增 加 的 记 录。 经 查 找 发 现, 引 起 该 错 误 的 原 因 是 由 于 在Foxpro 5.0 的wizstyle.vcx
类 库 中 一 个 名 叫txtbtns 的 类 的 脚 本 错 误 产 生 的。 具 体 操 作 方 法 如 下:
在Foxpro 5.0 的 类 浏 览 器 中 打 开 文
件 名 为VFP 安 装 目 录\wizards\wizstyle.vcx 的 类 库 文 件, 在 类 浏 览 器 中
双 击 类 名 为txtbtns 的 类 以 打 开 类 设 计 器。 在 类 设 计 器 中 双 击 增 加 按 扭 查
看 该 按 扭 的 事 件 脚 本, 在click 事 件 的 脚 本 中 有 如 下 一 段 文 字( 行 前 有&&
是 我 加 的 注 解):
*Add child record
&&是否向子表增加记录
IF INLIST(oAddRec.AddOption,OPT_ADD_CHILD,OPT_ADD_BOTH)
* Need to check
GO m.nSaveRec
&&子表关键字是否为空或者该关键字字段类型
和将要加进该字段的值的类型是否匹配
IF EMPTY(m.cChildKey) OR TYPE("m.cChildKey")
#TYPE(oAddRec.KeyValue)
APPEND BLANK IN (m.cChildAlias)
ELSE
INSERT INTO (m.cChildAlias) ((m.cChildKey))
VALUES (oAddRec.KeyValue)
ENDIF
GO m.nSaveRec2
ENDIF
这 段 代 码 的 意 思 是 当 用 户 选 取 了 向
子 表 增 加 记 录, 则 检 查 存 放 子 表 关 键 字 字 段 名 的 变 量 是 否 为 空 或 者 关 键 字
字 段 类 型 和 将 要 加 进 该 字 段 的 值 的 类 型 是 否 匹 配。 如 果 存 放 子 表 关 键 字 字
段 名 的 变 量 为 空 或 者 是 两 者 类 型 不 匹 配, 则 在 子 表 增 加 一 条 空 记 录, 否 则
增 加 一 条 关 键 字 值 等 于 父 表 关 键 字 值 的 记 录。 这 段 代 码 的 错 误 在 语 句
IF EMPTY(m.cChildKey) OR TYPE("m.cChildKey")#TYPE(oAddRec.KeyValue)
中, 应 把 这 条 语 句 改 为: pre> IF EMPTY(m.cChildKey) OR TYPE((m.cChildKey))
#TYPE(oAddRec.KeyValue)
因 为 前 一 语 句 的TYPE("m.cChildKey")
判 断 的 是 变 量m.cChildKey 的 类 型 而 不 是 子 表 关 键 字 字 段 的 类 型。 改 为 后
一 条 语 句 就 正 确 了。
|