2008年11月22日

修復及壓縮 ACCESS 的 MDB

修復及壓縮 ACCESS MDB

3 種方式 :

方法 1:

使用 DAO 物件 ( Data Access Object )

設定引用項目 Microsoft DAO x.x Object Library

目前 DAO 物件有 3.51 版的 Microsoft DAO 3.5 Object Library ( For Access 97 以前的 MDB ) 
3.6 Microsoft DAO 3.6 Object Library  ( For Access 2K 以後的 MDB )

不設定引用 ( Early Binding ) 也可使用 Late Binding 方式來建立 DAO 3.5 3.6 版本的 DBEngine
Set dbe = CreateObject("DAO.DBEngine.35") ' Set dbe = CreateObject("DAO.DBEngine.36") 

Compact
壓縮 ( Defragmentation ) 資料庫 動作如下

語法

DBEngine.CompactDatabase OldDb, NewDb, Locale, Options, Password 

  
OldDb   :  
欲處理之來源 MDB 

 
  NewDb   :   為處理後之目的 MDB 

   Locale 參數 :
       dbLangGeneral   :   English, German, French, Portuguese, Italian, and Modern Spanish 
       dbLangChineseSimplified   :   Simplified Chinese (
繁體中文
       dbLangChineseTraditional   :   Traditional Chinese (
簡體中文 )

   Options 參數 :
       dbVersion10   :   M$ Jet db engine ver 1.0 file format while compacting. 
       dbVersion11   :   M$ Jet db engine ver 1.1 file format while compacting.
       dbVersion20   :   M$ Jet db engine ver 2.0 file format while compacting.
       dbVersion30   :   M$ Jet db engine ver 3.0 file format (compatible with ver 3.5) while compacting. 

       dbEncrypt   :   Encrypt the database while compacting.
       dbDecrypt   :   Decrypt the database while compacting 

   PS : Jet ( Joint Engine Technology ) 

Sample : 

DBEngine.CompactDatabase "C:\Src.mdb", "C:\Dst.mdb", _
         dbLangChineseTraditional, dbVersion40 + dbEncrypt 

PS : dbVersion40
請調整成適當的版本 

By the way , DAO  3.5
有提供 MDB 修復 ( Repair ) 的方法
DBEngine.RepairDatabase "MDB
路徑 + 檔名"  

PS : 3.5
以後之版本已無此方法 ( 已併入 CompactDatabase )  

 

================================================================

 


方法 2:  

使用 JRO 物件

設定引用項目 Microsoft Jet and Replication Objects X.X library  

語法

JetEngine.CompactDatabase(SourceConnection, DestConnection) 

參數

SourceConnection  :   String 值,指定與欲壓縮之來源資料庫的連接。 
      
SourceConnection 指定的資料庫已經開啟,就會發生錯誤。 

DestConnection  :   String 值,指定與壓縮後才建立之目的地資料庫的連接。 
      
DestConnection 指定的資料庫已經存在或已經有相同名稱的其它檔案存在,就會發生錯誤。 

Connection String :
 

屬性 

說明 

Provider 

 

指示提供者的名稱,用來連接到資料來源。
若未指定此屬性,會採用 Microsoft.Jet.OLEDB.4.0 提供者。
若來源字串的提供者名稱和目的地字串的提供者名稱不同,就會發生錯誤。 

Data Source

指示資料庫的名稱。
來源和目的地連接資訊都需要此屬性。

User Id

若來源資料庫設有安全保護時,指示使用者的名稱。

Password

若來源資料庫設有安全保護時,指示使用者的密碼。

Locale Identifier

指示新資料庫的國別 id
若省略此 id,則目的地資料庫的國別 id 會和來源資料庫相同。
國別指定資料庫字串比較的排列順序。

Jet OLEDB:Database Password

若資料庫設有密保護,指示密碼

Jet OLEDB:Engine Type

 

指示要開啟或將建立的來源資料庫版本。
您可以使用的 OLE DB 引擎類型為:
1 for JET Version 1.0
2 for JET Version 1.1
3 for JET Version 2.x
4 for JET Version 3.x
5 for JET Version 4.x
若省略目的地資料庫的此資訊,它會預設成 5
目的地資料庫的值不可以是比來源資料庫的版本還新。

Jet OLEDB:Registry Path

設定 Windows Registry 機碼的資訊,包括 Microsoft Jet Database Engine 的值。

Jet OLEDB:System Database

指示系統資料庫的位置。

Jet OLEDB:Encrypt Database

指示是否加密新的資料庫。若此省略此參數,則新的資料庫會和來源資料庫擁有相同的加密。

Jet OLEDB:Don't Copy Locale on Compact

指示資料庫要使用的排列順序,取代任何每個資料行國別設定。(Boolean.)

Jet OLEDB:Compact Without Relationships

指示是否複製關係至新的資料庫。 (Boolean.)

Jet OLEDB:Compact Without Replica Repair

指示是否試著尋找其它抄本來修復受損複寫式資料庫。(Boolean.)

 

Sample:

Dim jro As New jro.JetEngine

jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
來源MDB", _
                                    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
目的MDB;Jet OLEDB:Engine Type= 4"


 

================================================================

 

 

方法 3:  

 

如果機器上有裝 M$ Access , 也可直接使用 Access Repair / Compact MDB資料庫

 

或寫程式來呼叫 Access來做

 

建立 Access 應用程式物件

    設定引用項目 Microsoft Access X.X Object Library

    Dim objAcc As New Access.Application

    Dim objAcc As Object

    Set objAcc = CreateObject("Access.Application")

之後

    Call objAcc.CompactRepair("c:\A.mdb", "C:\B.mdb", False)

即可

 

 

VB.Net 透過 JRO 修復 Access MDB

資料來源處:http://blog.blueshop.com.tw/hammerchou/archive/2006/10/11/42107.aspx

 

VB.Net 透過 JRO Compact / Repair Access MDB

 

Imports System

Imports System.IO

 

Public Class Form1

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        ' C:\db1.mdb Compact / Repair

        If Compact_MDB("C:\db1.mdb") Then MessageBox.Show("OK !")

    End Sub

 

    Private Function Compact_MDB(ByVal strFile As String) As Boolean

 

        ' Jet Access (MDB) 連線字串; Jet ( Joint Engine Technology )

        Dim strCn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}"

 

        ' "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Jet OLEDB:Engine Type=5"

 

        ' Path.GetTempFileName 方法: 在磁碟上建立具命之零位元組的唯一暫存檔案,

        '   然後傳回該檔案的完整路徑。

        Dim strTmpFile As String = Path.GetTempFileName.Replace(".tmp", ".mdb") ' tmp 副檔名改成mdb

 

        ' 建立物件陣列存放引數(參數) , 來源, 目的

        Dim objPara As Object() = New Object() {String.Format(strCn, strFile), String.Format(strCn, strTmpFile)}

 

        ' Activator 成員: 包含本機或遠端建立物件型別的方法,或者取得對現有遠端物件的參考。

        ' Activator.CreateInstance 方法(Type)  : 使用最符合指定參數的建構函式,建立指定型別的執行個體。

        Dim objJRO As Object = Activator.CreateInstance(Type.GetTypeFromProgID("JRO.JetEngine"))

        ' Type.GetTypeFromProgID 方法: 取得與指定的程式識別項(ProgID) 關聯的型別;

        '   如果在載入Type 時發生錯誤,則傳回null

        ' JRO.JetEngine Microsoft Jet and Replication Objects X.X library 

 

        ' Type.InvokeMember 方法

        ' Type.InvokeMember (String, BindingFlags, Binder, Object, Object[])

        objJRO.GetType.InvokeMember("CompactDatabase", Reflection.BindingFlags.InvokeMethod, _

                                                                    Nothing, objJRO, objPara)

 

        ' 使用指定的繫結條件約束並符合指定的引數清單,來叫用指定的成員。

        ' BindingFlags 列舉型別,InvokeMethod 指定要叫用方法。

 

        File.Delete(strFile) ' File.Delete 方法: 刪除Compact 前之mdb

        File.Move(strTmpFile, strFile) ' File.Move 方法: Compact 過的mdb 檔改成()正確檔名

 

        ' Marshal.ReleaseComObject 方法釋放JRO COM 物件

        Runtime.InteropServices.Marshal.ReleaseComObject(objJRO)

        objJRO = Nothing

 

        Return True

 

    End Function

 

End Class

2008年11月15日

NIKON D80 3種焦模式 AF-A 、 AF-S 、 AF-C 的差異

-----------------------Q001-------------------------------
Q001:D80 的對焦點如何指定?
A001:
單點對焦下 , 輕暗快門後(液晶螢幕變暗) 使用方向鍵切換
得把鎖定卡榫從LOCK反推~就可以用方向鍵選對焦點了

-----------------------Q002-------------------------------
Q002:對焦模式有3種,AF-A 、 AF-S 、 AF-C ,AF-C是連續對焦,AF-A 跟AF-S 都是單次對焦,
但看說明書實在看不太懂A跟S對焦有什麼差別?
A002:
AF-A是Auto,就是會根據物體焦點變化與否,自動選定S或是C。

-----------------------Q003-------------------------------
Q003:感覺AF-A跟AF-S都一樣,不知什麼情況下才會去選定C?
A003:
如果你都拿固定物體來試,當然一樣囉。
因為AF-A在這時候會選擇使用S,和你自己選擇S是一樣的結果。
但是當你對到活動物體,例如路邊疾馳而過的車輛,就不一樣囉。
這時候AF-A就會自動選擇C,變成連續對焦;當然這和你選AF-C也是一樣的。

AF-A 他基本上是AF-S,但是碰到你已經鎖焦的物體一旦移動了,達到他判斷的條件之後(這是關鍵)
它會自動幫你切換成AF-C去追焦(也可說重新對焦), 基本上這是有點雞肋的功能
因為在低階機上,對焦速度&精準度&對焦點並不是那麼多且強,所以這個功能小弟我自己用到後來
乾脆都用AF-S

superlai (大笨熊) 批踢踢實業坊
AF, 自動對焦, 通常我們會跟對焦區域一起看, 對焦區域等等討論.
AF-S, 單次對焦, 顧名思義就是只對焦一次,
半含快門, 對焦後就固定, 有可能會因為你稍微移動或物體移動,
對焦點就會糊掉(也有可能不會),對焦後會"逼逼".
AF-C, 一直對焦(什麼伺服對焦??聽無啦!!), 顧名思義一直對焦,
半含快門後動作, 你會移動或物會移動的狀態, 他會一直對焦,
不會逼逼..要不然會逼不停..lol

再配合對焦模式 :
D80有三種對焦區域模式 - 其實就是選擇對焦點啦!!
一種由使用者選擇, 單點區域, 單對焦點
一種由使用者選擇, 但是物體移動的話, 會自動根據附近的對焦點找物體, 動態區域
(super book說的, 我存疑, 可能是我還沒遇過可動作的狀況吧!:p)
一種由電腦全權選擇, 電腦會判斷主體, 然後會標示出所有對到焦點的, 自動選擇區域
若你要的在裡面, 就按下快門吧!(不過通常都會判斷錯誤, 所以我從沒用過!:p)
所以由上面的文章整理可知,

根據你拍的主體動態性選擇AF-C或AF-S, 然後...
你會發現動態區域的特性跟AF-C很像, 所以...
除非主體固定不動, 應該說主體會落在對焦範圍, 要不然都會用AF-C,
然後配合動態區域去抓對焦點...

-----------------------THE END-------------------------------

2008年11月9日

[新手必讀]光圈優先使用時機

資料來源處:http://www.mobile01.com/topicdetail.php?f=257&t=279636&p=1

作者:bobbyns7 (mobile01)

文章編號: 2324999(mobile01)
文章日期: 2007-02-12 23:42(mobile01)

最近一年來,公司同仁大約有十位被我鼓吹買了DSLR01,但是大多不是以P模試拍,就是用AUTO,
於是我寫了幾篇有關拍攝的模式,希望新手們可以用的上.歹勢

在單眼相機中常會以A來代表光圈優先,只要設定光圈,相機會幫你設定快門以獲得良好的瀑光.



首先要釐清大光圈和小光圈的分別,
大光圈在單位時間內可以比小光圈獲得更多的光線.
以數字來說,大光圈像是F1.4,
F2.8 F
3.2,而小光圈像是F11,F13,F22...
數字越大光圈越小.

一般光圈優先設定在小光圈時,則所有的景像都會清楚,所以拍風景時,可以用小光圈來表現,而小數位相機的情境

模式通常以小山,來代表小光圈.

下圖為F14的風景照

下圖為F9的風景照

人帶景時,設在F8,兩個都很清楚

縮光圈時,太陽的光芒會很清楚
下圖為F13

晚上縮光圈時,也是會有星芒,下圖為F14


至於大光圈則是要將主体獨立出來,如拍人像時.而小數位相機的情境模式會以人頭來代表大光圈
下圖
F2.0 小孩後面都會不清楚,就是景深較淺

下圖 F1.4 背後景都不見了

在較暗環境,我也用大光圈以防手震,下圖F2.8

以F4來表現布的層次感

當背景是光線時也有很好的散景效果 F2.8

室內F2.5

把重點放在小孩時,我用F1.8把大人糊掉

當然也可以把前面主題糊掉,F2.5

這樣了解了嗎?勝利

2008年11月7日

20081031_貓

拍攝者: Robbin0919
拍攝時間: 2008/10/31
拍攝地點: 翡翠灣福華渡假飯店
使用相機: Nikon D80
使用鏡頭: Sigma 18-200mm F3.5-6.3 DC for Nikon (非OS)
主題說明:
在參加公司所舉辦部門活動過程中,巧遇到的一隻野貓~幸好它肯賞臉,所以就拍了幾張.....

相簿:http://www.flickr.com/photos/28494839@N07/tags/20081031cat/