Access數據庫有一個名爲 「SQL Server的兼容語法」(在微軟的Access 2003-性能,它在工具 - >表/視圖 - > SQL Server的兼容語法;在Access 2007+,它在Office徽標 - >訪問選項 - >對象設計師 - >查詢設計)。如何通過Delphi在MDB文件上設置「SQL Server Compatible Syntax」屬性?
如何通過Delphi設置此選項? (ADO,ADOX或任何其他方式...)
感謝。
Access數據庫有一個名爲 「SQL Server的兼容語法」(在微軟的Access 2003-性能,它在工具 - >表/視圖 - > SQL Server的兼容語法;在Access 2007+,它在Office徽標 - >訪問選項 - >對象設計師 - >查詢設計)。如何通過Delphi在MDB文件上設置「SQL Server Compatible Syntax」屬性?
如何通過Delphi設置此選項? (ADO,ADOX或任何其他方式...)
感謝。
要修改這些屬性,您必須使用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.
您幾乎可以肯定需要使用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();
}
}
}
}