VB FAQs Part III

201:我 在 寫 資 料 搜 尋 程 式 時 , 發 現 當 我 以 "直 轄 市 "為 …

202:請 問 VB 可 以 開 啟 .dbf 資 料 庫 嗎 ? 如 果 可 以 , 和 .mdb …

203:可 否 用 VB 寫 個 程 式 來 關 閉 Windows 95 ?

204:在 VB 實 例 領 航 手 冊 之 第 11章 有 關 印 表 的 部 份 …

205:VB 程 式 能 不 能 顯 示 .gif 及 .jpeg 的 圖 檔 ?


201 我 在 寫 資 料 搜 尋 程 式 時 , 發 現 當 我 以 "直 轄 市 "為 關 鍵 詞 時 , 可 以 找 到 , 三 個 字 分 開 單 獨 搜 尋 時 , "直 "、 "轄 "均 無 問 題 。 惟 獨 以 "市 "字 為 關 鍵 字 時 :

    ◇ 在 Access 2.0 會 找 出 無 "市 " 字 的 Recordset。

    ◇ 在 Access 7.0 則 找 不 到 部 分 資 料 , 例 如 有 四 筆 記 錄 , 分 別 為

    編號 法規
    1 直轄巿自治法
    2 省市警察學校組織條例
    3 市區道路規則
    4 縣巿議會組織法

則 (1)(4) 會 找 不 到 .....!請 教 有 什 麼 方 法 可 以 解 決 呢 ?

201 (註 : VB 與 Access 都 是 使 用 .MDB 格 式 的 資 料 庫 , 所 以 本 問 題 也 會 出 現 在 VB 裡 面 )

Access 2.0 的 問 題 是 因 為 尚 未 中 文 化 的 關 係 , 詳 細 討 論 及 解 決 方 案 請 參 閱 Run!PC 第 18期 p.42~43。

至 於 您 所 描 述 的 Access 7.0問 題 , 則 是 一 個 very、 very 有 趣 的 事 情 , 假 設 Access 7.0 『 中 文 版 』 真 有 那 樣 的 問 題 , 那 我 一 定 大 聲 疾 呼 把 Access 7.0 丟 到 垃 圾 筒 , 所 以 我 十 分 肯 定 這 不 是 Access 7.0 的 問 題 。

請 注 意 『 市 』 字 在 Big-5 中 文 碼 裡 面 有 兩 種 字 :『 市 』 及 『 巿 』 , 您 一 定 看 不 出 這 兩 個 字 有 什 麼 不 一 樣 , 讓 我 來 告 訴 您 : 第 一 個 『 市 』 字 底 下 的 『 巾 』 與 頭 部 是 分 開 的 , 另 一 個 『 巿 』 則 是 『 巾 』 穿 過 過 上 面 的 『 一 』 , 如 圖 -A, 由 於 這 兩 個 字 的 Big-5 內 碼 是 不 相 同 的 , 所 以 如 果 您 的 資 料 庫 中 同 時 含 有 這 兩 個 字 , 那 麼 查 詢 的 結 果 就 只 能 找 到 其 中 一 個 字 。

[回大綱]

202 請 問 VB 可 以 開 啟 .dbf 資 料 庫 嗎 ? 如 果 可 以 , 和 .mdb 資 料 庫 一 樣 , 還 是 需 要 別 的 軟 體 來 支 援 ? (如 : custom controls)
202 VB 可 以 開 啟 .dbf 的 檔 案 , 常 見 的 方 法 有 二 :

    (1) 使 用 OpenDatabase method、
    (2) 使 用 Data control。

以 下 說 明 Data control 開 啟 .dbf 檔 的 方 法 , 假 設 有 一 名 為 Authors.dbf 的 檔 案 , 開 啟 方 法 是 :

    (1) 將 Data Control 的 Connect 屬 性 設 定 為 "dBase III;"。
    (2) 將 Data Control 的 DatabaseName 屬 性 設 定 為 Authors.dbf 檔 。

這 樣 就 完 成 了 。 完 成 以 上 的 設 定 之 後 , 請 注 意 DatabaseName 屬 性 會 變 成 Authors.dbf 檔 所 在 的 目 錄 , 而 RecordSource 屬 性 會 變 成 Authors(原 來 是 空 的 )。 (註 : 有 關 Data control 的 用 法 請 參 閱 Run!PC 34 期 VB 專 欄 )

[回大綱]

203 可 否 用 VB 寫 個 程 式 來 關 閉 Windows 95 ?
203 VB 本 身 所 提 供 的 函 數 或 敘 述 無 法 關 閉 Windows, 因 此 需 呼 叫 API 函 數 ExitWindows(16 位 元 版 ) 或 ExitWindowsEx(32 位 元 版 )。 實 在 上 , 首 先 把 以 下 的 API 函 數 宣 告 放 到 Form 的 "(General)" 區 段 底 下 :

    #If Win16 Then

      Private Declare Function ExitWindows Lib "user" (ByVal dwReserved As Long, ByVal uReturnCode As Integer) As Integer

    #Else

      Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

    #End If

接 著 執 行 以 下 程 式 就 可 以 退 出 Windows 了 :

    #If Win16 Then

      Dim ret As Integer

      ret = ExitWindows(0&, 0) ' 退 出 Windows, 回 到 DOS

    #Else

      Dim ret As Long

      ret = ExitWindowsEx(1&, 0&)
      '退 出 Windows 95, 會 出 現 『 您 現 在 可 以 放 心 關 機 』

    #End If

[回大綱]

204 VB 實 例 領 航 手 冊 之 第 11章 有 關 印 表 的 部 份 , 敝 人 遇 到 一 些 問 題 , 煩 請 先 生 幫 忙 。 敝 人 使 用 之 VB版 本 為 4.0企 業 版 。 程 式 如 下 :

    Printer.FontSize = 30

    Printer.FontBold = True

    Printer.Print "This is Test !"

    Printer.Print "This is Test !"

    Printer.EndDoc

結 果 在 Windows95中 文 版 中 輸 出 大 小 及 粗 細 卻 不 如 預 期 (不 變 ), 同 樣 程 式 在 Windows 95英 文 版 中 也 一 樣 , 但 在 Windows NT中 執 行 卻 正 常 , 於 是 敝 人 將 程 式 用 VB4.0中 文 普 及 版 再 寫 一 次 ,其 結 果 不 論 95 or NT皆 正 常 . 若 用 VB3.0再 寫 一 次 ,其 結 果 不 論 95 or NT也 皆 正 常 .

204 這 是 VB 的 bug。

建 議 的 解 決 方 法 : 在 所 有 Printer.xxx 的 列 印 敘 述 之 前 , 加 上 『 Printer.Print " "』 (列 印 一 空 白 行 ),例 如:

    Printer.Print " "

    Printer.FontSize = 30

    Printer.FontBold = True

    ...

可 使 VB 的 Printer 物 件 變 正 常 。

[回大綱]

205 VB 程 式 能 不 能 顯 示 .gif 及 .jpeg 的 圖 檔 ?
205 VB 4.0 只 能 顯 示 .bmp、 .dib、 及 .wmf 格 式 的 圖 檔 , 如 果 想 要 顯 示 .gif 及 .jpeg 必 須 使 用 外 掛 的 control, 例 如 Media Architects 公 司 的 ImageKnife control, 不 過 VB 5.0 就 可 以 直 接 顯 示 .gif 及 .jpeg 格 式 的 圖 檔 了 。 (註 : VB 5.0 中 文 版 的 上 市 時 間 聽 說 是 4 月 底 以 後 )

[回大綱]