知识大全 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

相关参考