【聚杰网数据库编程】VFP5.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.nSaveRec2ENDIF 这 段 代 码 的 意 思 是 当 用 户 选 取 了 向 子 表 增 加 记 录, 则 检 查 存 放 子 表 关 键 字 字 段 名 的 变 量 是 否 为 空 或 者 关 键 字 字 段 类 型 和 将 要 加 进 该 字 段 的 值 的 类 型 是 否 匹 配。 如 果 存 放 子 表 关 键 字 字 段 名 的 变 量 为 空 或 者 是 两 者 类 型 不 匹 配, 则 在 子 表 增 加 一 条 空 记 录, 否 则 增 加 一 条 关 键 字 值 等 于 父 表 关 键 字 值 的 记 录。 这 段 代 码 的 错 误 在 语 句
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 的 类 型 而 不 是 子 表 关 键 字 字 段 的 类 型。 改 为 后 一 条 语 句 就 正 确 了。




