Access技巧集

转载 2004年10月20日 09:16:00

ACCESS技巧集
作者:ysai
转载请保持文章完整并标明出处

1.DELPHI中操作ACCESS数据库(建立.mdb文件,压缩数据库)
以下代码在WIN2K,D6,MDAC2.6下测试通过,
编译好的程序在WIN98第二版无ACCESS环境下运行成功.
//声明连接字符串
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(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;

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为关联的所有记录.
缺点-外部数据库不能带密码.

在ACCESS中访问其它ODBC数据源
下例在ACCESS中查询SQLSERVER中的数据
    SELECT * FROM Tab1 IN [ODBC]
    [ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;Dat

ACCESS技巧集

ACCESS技巧集作者:ysai转载请保持文章完整并标明出处1.DELPHI中操作ACCESS数据库(建立.mdb文件,压缩数据库)以下代码在WIN2K,D6,MDAC2.6下测试通过,编译好的程序在...
  • oushengfen
  • oushengfen
  • 2007年12月08日 20:38
  • 419

Delphi操作ACCESS技巧集

1.DELPHI中操作ACCESS数据库(建立.mdb文件,压缩数据库)以下代码在WIN2K,D6,MDAC2.6下测试通过,编译好的程序在WIN98第二版无ACCESS环境下运行成功.//在之前us...
  • cwxiao888
  • cwxiao888
  • 2004年02月22日 23:12
  • 752

ACCESS技巧集(DELPHI AND SQL)

1.DELPHI中操作ACCESS数据库(建立.mdb文件,压缩数据库)以下代码在WIN2K,D6,MDAC2.6下测试通过,编译好的程序在WIN98第二版无ACCESS环境下运行成功.//在之前us...
  • ysai
  • ysai
  • 2004年02月18日 23:36
  • 972

Dbgrid使用技巧(上)-

Dbgrid使用技巧(上)- -                                       在 Delphi 语言的数据库编程中,DBGrid 是显示数据的主要手段之一。但是 DBG...
  • xiaomaoxia
  • xiaomaoxia
  • 2006年04月28日 15:56
  • 1356

Access几个小技巧总结

1、查询Access中的表名称  select name from MSysObjects where type=1 and flags=0 MSysObjects  2、几个查询结果Unio...
  • xbt312
  • xbt312
  • 2016年05月20日 14:30
  • 155

关于Firefly提交时报错的处理办法。

Q10045 – submit本地变更集时报错现象:提交变更集的时候报错“This branch has been changed during your submit.”或者“Unknown err...
  • hjbill04
  • hjbill04
  • 2010年09月16日 15:43
  • 481

在Delphi中的Access技巧集

1.DELPHI中操作ACCESS数据库(建立.mdb文件,压缩数据库)   以下代码在WIN2K,D6,MDAC2.6下测试通过, 编译好的程序在WIN98第二版无ACCESS环境下运行成功。  /...
  • baodong
  • baodong
  • 2008年05月17日 20:51
  • 466

Delphi中的Access技巧集

(本文摘自网络)1.DELPHI中操作ACCESS数据库(建立.mdb文件,压缩数据库) 以下代码在WIN2K,D6,MDAC2.6下测试通过, 编译好的程序在WIN98第二版无ACCESS环境下运行...
  • xuchaofu
  • xuchaofu
  • 2008年03月29日 16:11
  • 351

DELPHI中操作ACCESS技巧集

1.DELPHI中操作ACCESS数据库(建立.mdb文件,压缩数据库)以下代码在WIN2K,D6,MDAC2.6下测试通过,编译好的程序在WIN98第二版无ACCESS环境下运行成功.//声明连接字...
  • Avan_Lau
  • Avan_Lau
  • 2010年12月20日 16:53
  • 550

First集Follow集通俗易懂的讲解加实例

文法: S→ABc A→a|ε B→b|ε First集合求法: 能由非终结符号推出的所有的开头符号或可能的ε,但要求这个开头符号是终结符号。如此题A可以推导...
  • u013503014
  • u013503014
  • 2015年01月13日 21:22
  • 5566
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Access技巧集
举报原因:
原因补充:

(最多只允许输入30个字)