亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

Delphi操作ACCESS技巧集

2019-11-18 18:26:48
字體:
來源:轉載
供稿:網友
1.DELPHI中操作access數據庫(建立.mdb文件,壓縮數據庫)
以下代碼在WIN2K,D6,MDAC2.6下測試通過,
編譯好的程序在WIN98第二版無ACCESS環境下運行成功.
//在之前uses ComObj,ActiveX
//聲明連接字符串
Const
 SConnectionString       = 'PRovider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
                               +'Jet OLEDB:Database PassWord=%s;';

//=============================================================================
// Procedure: GetTempPathFileName
// Author   : ysai
// Date     : 2003-01-27
// Arguments: (None)
// Result   : string
//=============================================================================
function GetTempPathFileName():string;
//取得臨時文件名
var
 SPath,SFile:array [0..254] of char;
begin
 GetTempPath(254,SPath);
 GetTempFileName(SPath,'~SM',0,SFile);
 result:=SFile;
 DeleteFile(PChar(result));
end;

//=============================================================================
// Procedure: CreateAccessFile
// Author   : ysai
// Date     : 2003-01-27
// Arguments: FileName:String;PassWord:string=''
// Result   : boolean
//=============================================================================
function CreateAccessFile(FileName:String;PassWord:string=''):boolean;
//建立Access文件,如果文件存在則失敗
var
 STempFileName:string;
 vCatalog:OleVariant;
begin
 STempFileName:=GetTempPathFileName;
 try
   vCatalog:=CreateOleObject('ADOX.Catalog');
   vCatalog.Create(format(SConnectionString,[STempFileName,PassWord]));
   result:=CopyFile(PChar(STempFileName),PChar(FileName),True);
   DeleteFile(STempFileName);
 except
   result:=false;
 end;
end;

//=============================================================================
// Procedure: CompactDatabase
// Author   : ysai
// Date     : 2003-01-27
// Arguments: AFileName,APassWord:string
// Result   : boolean
//=============================================================================
function CompactDatabase(AFileName,APassWord:string):boolean;
//壓縮與修復數據庫,覆蓋源文件
var
 STempFileName:string;
 vJE:OleVariant;
begin
 STempFileName:=GetTempPathFileName;
 try
   vJE:=CreateOleObject('JRO.JetEngine');
   vJE.CompactDatabase(format(SConnectionString,[AFileName,APassWord]),
       format(SConnectionString,[STempFileName,APassWord]));
   result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
   DeleteFile(STempFileName);
 except
   result:=false;
 end;
end;

//=============================================================================
// Procedure: ChangeDatabasePassword
// Author   : ysai
// Date     : 2003-01-27
// Arguments: AFileName,AOldPassWord,ANewPassWord:string
// Result   : boolean
//=============================================================================
function ChangeDatabasePassword(AFileName,AOldPassWord,ANewPassWord:string):boolean;
//修改ACCESS數據庫密碼
var
 STempFileName:string;
 vJE:OleVariant;
begin
 STempFileName:=GetTempPathFileName;
 try
   vJE:=CreateOleObject('JRO.JetEngine');
   vJE.CompactDatabase(format(SConnectionString,[AFileName,AOldPassWord]),
       format(SConnectionString,[STempFileName,ANewPassWord]));
   result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
   DeleteFile(STempFileName);
 except
   result:=false;
 end;
end;

2.ACCESS中使用SQL語句應注意的地方及幾點技巧
以下SQL語句在ACCESS XP的查詢中測試通過
建表:
   Create Table Tab1 (
       ID Counter,
       Name string,
       Age integer,
       [Date] DateTime);
技巧:
   自增字段用 Counter 聲明.
   字段名為關鍵字的字段用方括號[]括起來,數字作為字段名也可行.

建立索引:
   下面的語句在Tab1的Date列上建立可重復索引
   Create Index iDate ON Tab1 ([Date]);
   完成后ACCESS中字段Date索引屬性顯示為 - 有(有重復).
   下面的語句在Tab1的Name列上建立不可重復索引
   Create Unique Index iName ON Tab1 (Name);
   完成后ACCESS中字段Name索引屬性顯示為 - 有(無重復).
   下面的語句刪除剛才建立的兩個索引
   Drop Index iDate ON Tab1;
   Drop Index iName ON Tab1;

ACCESS與SQLSERVER中的UPDATE語句對比:
   SQLSERVER中更新多表的UPDATE語句:
   UPDATE Tab1
   SET a.Name = b.Name
   FROM Tab1 a,Tab2 b
   WHERE a.ID = b.ID;
   同樣功能的SQL語句在ACCESS中應該是
   UPDATE Tab1 a,Tab2 b
   SET a.Name = b.Name
   WHERE a.ID = b.ID;
即:ACCESS中的UPDATE語句沒有FROM子句,所有引用的表都列在UPDATE關鍵字后.
上例中如果Tab2可以不是一個表,而是一個查詢,例:
   UPDATE Tab1 a,(Select ID,Name From Tab2) b
   SET a.Name = b.Name
   WHERE a.ID = b.ID;

訪問多個不同的ACCESS數據庫-在SQL中使用In子句:
   Select a.*,b.* From Tab1 a,Tab2 b In 'db2.mdb' Where a.ID=b.ID;
   上面的SQL語句查詢出當前數據庫中Tab1和db2.mdb(當前文件夾中)中Tab2以ID為關聯的所有記錄.
缺點-外部數據庫不能帶密碼.
補充:看到ugvanxk在一貼中的答復,可以用
   Select * from [c:/aa/a.mdb;pwd=1111].table1;
ACCESS XP測試通過

在ACCESS中訪問其它ODBC數據源
下例在ACCESS中查詢SQLSERVER中的數據
   SELECT * FROM Tab1 IN [ODBC]
   [ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;]
外部數據源連接屬性的完整參數是:
   [ODBC;DRIVER=driver;SERVER=server;DATABASE=database;UID=user;PWD=password;]
其中的DRIVER=driver可以在注冊表中的
   HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/
中找到
異構數據庫之間導數據參見 碧血劍 的
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1691966

ACCESS支持子查詢

ACCESS支持外連接,但不包括完整外部聯接,如支持
   LEFT JOIN 或 RIGHT JOIN
但不支持
   FULL OUTER JOIN 或 FULL JOIN

ACCESS中的日期查詢
注意:ACCESS中的日期時間分隔符是#而不是引號
   Select * From Tab1 Where [Date]>#2002-1-1#;
在DELPHI中我這樣用
   SQL.Add(Format(
       'Select * From Tab1 Where [Date]>#%s#;',
       [DateToStr(Date)]));

ACCESS中的字符串可以用雙引號分隔,但SQLSERVER不認,所以為了遷移方便和兼容,
建議用單引號作為字符串分隔符.


上一篇:在Delphi中如何把數據庫中的記錄引到word中

下一篇:Delphi的消息處理

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区在线视频| 国产精品久久久久999| 久久成人人人人精品欧| 国产一区二区美女视频| 久久亚洲精品一区二区| 91香蕉嫩草影院入口| 亚洲第一区在线观看| 九九视频直播综合网| 国内精品中文字幕| 欧美丰满少妇xxxxx做受| 亚洲成色777777女色窝| 亚洲摸下面视频| 欧美综合国产精品久久丁香| 国产精品日韩欧美大师| 伊人青青综合网站| 日本道色综合久久影院| 在线精品国产欧美| 久久亚洲国产成人| 国产成人在线一区二区| 欧美激情视频网| 色综合伊人色综合网| 日日骚av一区| 日韩激情片免费| 欧美激情视频一区二区| 亚洲一区二区三区777| 久久视频中文字幕| 91久久国产精品91久久性色| 国产精品扒开腿做爽爽爽视频| 91精品久久久久久久久青青| 国产欧美日韩丝袜精品一区| 欧美日韩精品中文字幕| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲第一视频网| 亚洲第一综合天堂另类专| 日韩中文在线中文网在线观看| 2024亚洲男人天堂| 欧美激情精品久久久久久变态| 久久精品电影一区二区| 中文字幕在线视频日韩| 久久欧美在线电影| 97不卡在线视频| 日韩国产激情在线| 精品久久久在线观看| 亚洲一区二区三区乱码aⅴ| **欧美日韩vr在线| 7777免费精品视频| 中文字幕日韩精品有码视频| 欧美日韩色婷婷| 欧美成人合集magnet| 精品久久久久久久大神国产| 国产美女精品免费电影| 亚洲男人天堂网站| 日韩大片免费观看视频播放| 日韩电影免费在线观看| 欧美黑人xxxⅹ高潮交| 69视频在线播放| 亚洲大胆美女视频| 国产精品成人久久久久| 日韩欧美国产骚| 91超碰中文字幕久久精品| 日韩在线精品一区| 亚洲福利在线观看| 91中文在线视频| 国内精品久久久久久久| 欧美福利视频在线观看| 一本色道久久88精品综合| 久久久精品一区| 欧美成人午夜激情| 亚洲成人教育av| 日韩在线观看免费全集电视剧网站| 色妞色视频一区二区三区四区| 亚洲成人性视频| 国产91色在线免费| 欧美日韩精品在线| 精品国内产的精品视频在线观看| 欧美尺度大的性做爰视频| 日韩国产精品亚洲а∨天堂免| 少妇av一区二区三区| www.日本久久久久com.| 精品视频中文字幕| 亚洲精品国产精品国自产在线| 亚洲欧美成人一区二区在线电影| 国产精品一区二区三区免费视频| 性色av一区二区三区红粉影视| 日日噜噜噜夜夜爽亚洲精品| 精品高清一区二区三区| 爽爽爽爽爽爽爽成人免费观看| 欧美激情久久久久久| 欧洲亚洲女同hd| 欧美性理论片在线观看片免费| 九九视频直播综合网| 欧美激情奇米色| 国产日韩一区在线| 97视频免费在线看| 欧美性猛交xxxx黑人猛交| 欧美成人免费va影院高清| 久久久久国产精品www| 欧美日韩亚洲精品一区二区三区| 国产一区二区丝袜高跟鞋图片| 91超碰中文字幕久久精品| 国产精品美女久久久久久免费| 精品国产乱码久久久久久虫虫漫画| 久久影视三级福利片| 欧美日韩亚洲精品一区二区三区| 亚洲www视频| 国产69久久精品成人看| 国产97色在线| 久久精品久久精品亚洲人| 91精品国产高清久久久久久久久| 亚洲欧美国产视频| 国产精品福利观看| 欧美一级淫片videoshd| 成人综合网网址| 国产999精品| 亚洲国产精彩中文乱码av在线播放| 色综合久久久久久中文网| 国产亚洲精品久久久久动| 国产精品视频午夜| 欧美一级视频在线观看| 亚洲一区二区自拍| 国内伊人久久久久久网站视频| 国产成人在线播放| 亚洲人成电影在线播放| 日韩最新在线视频| 夜夜嗨av一区二区三区四区| 亚洲自拍小视频免费观看| 国产经典一区二区| 在线亚洲欧美视频| 欧美成人激情视频免费观看| 国产精品自产拍在线观| 69视频在线免费观看| 亚洲精品久久久久久下一站| 亚洲专区国产精品| 精品福利在线观看| 久久久久免费精品国产| 久久久av亚洲男天堂| 欧美一区二区三区四区在线| 久久影院中文字幕| 九九精品视频在线| 国产精品wwww| 日韩精品在线视频美女| 午夜精品福利电影| 欧美激情伊人电影| 91av免费观看91av精品在线| 国产成人精品视| 日韩精品免费在线视频| 国产v综合v亚洲欧美久久| 日本久久久久久久久| 亚洲午夜未删减在线观看| 中文字幕久久亚洲| 伊人伊成久久人综合网小说| 2024亚洲男人天堂| 精品国产欧美成人夜夜嗨| 亚洲网在线观看| 国产98色在线| 久久99久久亚洲国产| 日本aⅴ大伊香蕉精品视频| 欧美激情videos| 91在线精品播放| 亚洲视频综合网| 国产成人精品久久久| 日韩欧美中文在线| 国内精品国产三级国产在线专| 亚洲综合第一页|