知识大全 Delphi中的Access技巧小结
Posted 语句
篇首语:知识养成了思想,思想同时又在融化知识。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi中的Access技巧小结相关的知识,希望对你有一定的参考价值。
Delphi中的Access技巧小结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
DELPHI中操作ACCESS数据库(建立 mdb文件 压缩数据库) 以下代码在WIN K D MDAC 下测试通过 编译好的程序在WIN 第二版无ACCESS环境下运行成功 //在之前uses ComObj ActiveX //声明连接字符串 Const SConnectionString = Provider=Microsoft Jet OLEDB ;Data Source=%s; + Jet OLEDB:Database Password=%s; ;
//============================================================================= // Procedure: GetTempPathFileName // Author : ysai // Date : // Arguments: (None) // Result : string //============================================================================= function GetTempPathFileName():string; //取得临时文件名 var SPath Sfile&:array [ ] of char; begin GetTempPath( SPath); GetTempFileName(SPath ~SM SFile); result:=SFile; DeleteFile(PChar(result)); end;
//============================================================================= // Procedure: CreateAccessFile // Author : ysai // Date : // 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 : // 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 : // 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;
ACCESS中使用SQL语句应注意的地方及几点技巧 以下SQL语句在ACCESS XP的查询中测试通过 建表: Create Table Tab ( ID Counter Name string Age integer [Date] DateTime); 技巧: 自增字段用 Counter 声明 字段名为关键字的字段用方括号[]括起来 数字作为字段名也可行
建立索引: 下面的语句在Tab 的Date列上建立可重复索引 Create Index iDate ON Tab ([Date]); 完成后ACCESS中字段Date索引属性显示为 有(有重复) 下面的语句在Tab 的Name列上建立不可重复索引 Create Unique Index iName ON Tab (Name); 完成后ACCESS中字段Name索引属性显示为 有(无重复) 下面的语句删除刚才建立的两个索引 Drop Index iDate ON Tab ; Drop Index iName ON Tab ;
ACCESS与SQLSERVER中的UPDATE语句对比: SQLSERVER中更新多表的UPDATE语句: UPDATE Tab SET a Name = b Name FROM Tab a Tab b WHERE a ID = b ID; 同样功能的SQL语句在ACCESS中应该是 UPDATE Tab a Tab b SET a Name = b Name WHERE a ID = b ID; 即:ACCESS中的UPDATE语句没有FROM子句 所有引用的表都列在UPDATE关键字后 上例中如果Tab 可以不是一个表 而是一个查询 例: UPDATE Tab a (Select ID Name From Tab ) b SET a Name = b Name WHERE a ID = b ID;
访问多个不同的ACCESS数据库 在SQL中使用In子句: Select a * b * From Tab a Tab b In db mdb Where a ID=b ID; 上面的SQL语句查询出当前数据库中Tab 和db mdb(当前文件夹中)中Tab 以ID为关联的所有记录 缺点 外部数据库不能带密码 补充:看到ugvanxk在一贴中的答复 可以用 Select * from [c:\\aa\\a mdb;pwd= ] table ; ACCESS XP测试通过
在ACCESS中访问其它ODBC数据源 下例在ACCESS中查询SQLSERVER中的数据 SELECT * FROM Tab IN [ODBC] [ODBC;Driver=SQL Server;UID=sa;PWD=;Server= ;DataBase=Demo;] 外部数据源连接属性的完整参数是: [ODBC;DRIVER=driver;SERVER=server;DATABASE=database;UID=user;PWD=password;] 其中的DRIVER=driver可以在注册表中的 HKEY_LOCAL_MACHINE\\SOFARE\\ODBC\\ODBCINST INI\\ 中找到异构数据库之间导数据参见 碧血剑 的 // delphibbs /delphibbs/dispq asp?lid=
ACCESS支持子查询
ACCESS支持外连接 但不包括完整外部联接 如支持 LEFT JOIN 或 RIGHT JOIN 但不支持 FULL OUTER JOIN 或 FULL JOIN
ACCESS中的日期查询 注意:ACCESS中的日期时间分隔符是#而不是引号 Select * From Tab Where [Date]># #; 在DELPHI中我这样用 SQL Add(Format( Select * From Tab Where [Date]>#%s#; [DateToStr(Date)]));
cha138/Article/program/Delphi/201311/24888相关参考