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

相关参考

知识大全 将文件导入到数据库中的方法小结

  大型的数据库开发中常常遇到数据源是平面文件的情况对于这样的数据源无法使用数据库对其数据进行有效的管理  本文介绍几种常见的数据导入的方法希望能够给读者以启迪另外本文所涉及到的数据库均为ORACLE

知识大全 delphi中的split函数

  delphi中的split函数类似于vb中的split函数  typeuserarray=arrayofstring;cha138/Article/program/Delphi/2013

知识大全 java多线程小结

  /*进程是一个正在执行的程序  *每一个进程执行都有一个执行顺序该顺序是一个执行路径或者叫一个控制单元  *  *线程就是进程中的一个独立的控制单元  *   线程在

知识大全 asp.net基础小结

  一动态网页和静态网页  起初看到这两个概念会以为动态网页就是网页带有flash的页面而静态网页就是不会动的网页现在看来这种理解是错误的大错特错所谓的动态网页呢其实是指网页和服务器有交互的服务器中的

知识大全 简析Delphi中的XML编程

简析Delphi中的XML编程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  XML(eXten

知识大全 Delphi中的图形显示技巧

程序开发小技巧:Delphi中的图形显示技巧  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!目前在许

知识大全 Delphi中的时间操作技术

Delphi中的时间操作技术  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在编写应用程序时我们需

知识大全 Delphi中的图形显示技巧[2]

Delphi中的图形显示技巧[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  垂直交错效果 

知识大全 Delphi中的图形显示技巧[3]

Delphi中的图形显示技巧[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  雨滴效果  原

知识大全 Delphi中的图形显示技巧[1]

Delphi中的图形显示技巧[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  概述  目前在