2014-01-31 34 views

回答

3

要修改這些屬性,您必須使用Microsoft Office Access database engine Object Library。從Delphi中,您可以使用選項組件 - >導入組件 - >導入類型庫導入此庫。

試試這個例子。

uses 
    ActiveX, 
    ComObj, 
    Variants, 
    SysUtils, 
    DAO_TLB in '..\12.0\Imports\DAO_TLB.pas'; 


procedure test; 
var 
    LEngine : _DBEngine; 
    LDataBase : Database; 
begin 
    LEngine:=CoDbEngine.Create as _DBEngine; 
    //Open the access database 
    LEngine.OpenDatabase('C:\Foo\Bar.accdb', dbDriverNoPrompt, false, ''); 
    LDataBase:=LEngine.Workspaces.Item[0].Databases.Item[0]; 
    LDataBase.Properties.Item['ANSI Query Mode'].Value := 1; 
    Writeln('Done'); 
    LDataBase.Close(); 
end; 

begin 
try 
    CoInitialize(nil); 
    try 
     Test; 
    finally 
     CoUninitialize; 
    end; 
except 
    on E:EOleException do 
     Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode])); 
    on E:Exception do 
     Writeln(E.Classname, ':', E.Message); 
end; 
Writeln('Press Enter to exit'); 
Readln; 
end. 
1

您幾乎可以肯定需要使用DAO來進行更改。下面的C#代碼做的,但遺憾的是我不能提供實際的Delphi代碼:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Microsoft.Office.Interop.Access.Dao; 

namespace daoTest 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // COM reference required: 
      //  Microsoft Office 14.0 Access Database Engine Object Library 
      var dbe = new DBEngine(); 
      dbe.OpenDatabase(@"C:\Users\Gord\Desktop\test.mdb"); 
      Database db = dbe.Workspaces[0].Databases[0]; 
      try 
      { 
       db.Properties["ANSI Query Mode"].Value = 1; 
       Console.WriteLine("ANSI Query Mode has been enabled for this database."); 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine(e.Message); 
      } 
      finally 
      { 
       db.Close(); 
      } 
     } 
    } 
} 
相關問題