导航:首页 > 文件处理 > delphiaccess压缩

delphiaccess压缩

发布时间:2022-12-25 15:42:10

① 我用delphi做了一个图书管理系统,数据库用的是Access,怎么打包发给用户用

access 不需配置数据库 用winrar做一个安装界面 发给用户就行

把所有的文件放到一个目录中 先生成rar文件 后生成exe文件 设置一下安装参数 网上多得是。
用鼠标全选这些文件,在任意文件上单击右键,选择“添加到档案文件”(如图1),在弹出的对话框的“常规”选项卡中勾选“创建自解压格式压缩文件”,然后切换到“高级”选项卡,单击“自解压选项”按钮,在弹出的“高级自解压选项”对话框的“常规”选项卡中选择“在‘Program Files’中创建”,并在解压路径里填入“Windows自带游戏”(如图2),以使程序的默认安装路径为'C:\Program Files\ Windows自带游戏'。

② 怎样用DELPHI程序建数据库表的结构

分类: 电脑/网络 >> 程序设计 >> 其他编程语言
解析:

建议参考以下资料:

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;';

=============================================================================

Procere: 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;

=============================================================================

Procere: 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;

=============================================================================

Procere: 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;DataBase=Demo;]

外部数据源连接属性的完整参数是:

[ODBC;DRIVER=driver;SERVER=server;DATABASE=database;UID=user;PWD=password;]

其中的DRIVER=driver可以在注册表中的

HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\

中找到

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 怎么来压缩文件

使用时,需要Zlib.pas和 Zlibconst.pas两个单元文件,这两个文件保存在 Delphi 5.0安装光盘上
InfoExtrasZlib目录下,此外,在 InfoExtrasZlibObj目录中还保存了 Zlib.pas单元引用的
Obj文件,把这个目录拷贝到delphi的lib下,即可。可以适当的改动比如增加目录压缩和分文件压缩,其实就是在文件流前面增加一部分描述结构就是,不多说。使用
时,还要use zlib单元。 两个函数如下:

procere CompressIt(var CompressedStream: TMemoryStream; const CompressionLevel: TCompressionLevel);
// 参数是传递的流和压缩方式
var
SourceStream: TCompressionStream;
DestStream: TMemoryStream;
Count: int64; //注意,此处修改了,原来是int
begin
//获得流的原始尺寸
Count := CompressedStream.Size;
DestStream := TMemoryStream.Create;
SourceStream := TCompressionStream.Create(CompressionLevel, DestStream);
try
//SourceStream中保存着原始的流
CompressedStream.SaveToStream(SourceStream);
//将原始流进行压缩, DestStream中保存着压缩后的流
SourceStream.Free;
CompressedStream.Clear;
//写入原始图像的尺寸
CompressedStream.WriteBuffer(Count, SizeOf(Count));
//写入经过压缩的流
CompressedStream.CopyFrom(DestStream, 0);
finally
DestStream.Free;
end;
end;

procere UnCompressit(const CompressedStream: TMemoryStream; var UnCompressedStream: TMemoryStream);
//参数 压缩过的流,解压后的流
var
SourceStream: TDecompressionStream;
DestStream: TMemoryStream;
Buffer: PChar;
Count: int64;
begin
//从被压缩的图像流中读出原始的尺寸
CompressedStream.ReadBuffer(Count, SizeOf(Count));
//根据尺寸大小为将要读入的原始流分配内存块
GetMem(Buffer, Count);
DestStream := TMemoryStream.Create;
SourceStream := TDecompressionStream.Create(CompressedStream);
try
//将被压缩的流解压缩,然后存入 Buffer内存块中
SourceStream.ReadBuffer(Buffer^, Count);
//将原始流保存至 DestStream流中
DestStream.WriteBuffer(Buffer^, Count);
DestStream.Position := 0; //复位流指针
DestStream.Position := length(VER_INFO);
//从DestStream流中载入图像流
UnCompressedStream.LoadFromStream(DestStream);
finally
FreeMem(Buffer);
DestStream.Free;
end;
end;

使用的例子如下:
procere TForm1.Button5Click(Sender: TObject);
//把指定文件压缩然后保存为另外一个压缩包,
//呵呵,我使用的时候是把后缀改成cab,可以唬一些人吧?
var
SM: TMemoryStream;
begin
if OpenDialog1.Execute then
begin
if SaveDialog1.Execute then
begin
SM := TMemoryStream.Create;
try
Sm.LoadFromFile(OpenDialog1.FileName);
SM.Position := 0;
Compressit(sm, clDefault);
sm.SaveToFile(SaveDialog1.FileName);
finally
SM.Free;
end;
end;
end;
end;

procere TForm1.BitBtn2Click(Sender: TObject);
//把指定的压缩包解成原来的文件。
var
SM, DM: TMemoryStream;
begin
if OpenDialog1.Execute then
begin
if SaveDialog1.Execute then
begin
SM := TMemoryStream.Create;
DM := TMemoryStream.Create;
try
Sm.LoadFromFile(OpenDialog1.FileName);
SM.Position := 0;
UnCompressit(sm, dm);
dm.Position := 0;
dm.SaveToFile(SaveDialog1.FileName);
finally
SM.Free;
DM.Free;
end;
end;
end;
end;

④ Delphi+Access如何打包

用winrar压缩,或者装个InstallShield打包就好了。

⑤ 如何用DELPHI压缩ACCESS数据库

uses 97,2000;

procere CompactMdbDatabase(srcDbname,dstDbname,oldpwd,newpwd:string;bAccess97:boolean=true);
var idbEngine:_dbEngine;
begin
if oldpwd <>'' then oldpwd := ';pwd='+oldpwd;
if newpwd <>'' then newpwd := ';pwd='+newpwd;

if bAccess97 then
begin
idbengine := CreateComObject(97.CLASS_DBEngine) as _DBEngine;
idbEngine.CompactDatabase(srcDbname,dstDbname,newpwd,dbVersion30,oldpwd);
end else
begin
idbengine := CreateComObject(2000.CLASS_DBEngine) as _DBEngine;
idbEngine.CompactDatabase(srcDbname,dstDbname,newpwd,dbVersion40,oldpwd);
end;
end;

也可以参考一下文章:
利用Delphi压缩和修复MS Access 2000的数据库文件
http://www.delphibbs.com/keylife/iblog_show.asp?xid=4904

动态创建与压缩Access数据库
http://www.delphifans.com/infoview/Article_334.html

阅读全文

与delphiaccess压缩相关的资料

热点内容
项目经理叫醒程序员 浏览:342
autocad旋转命令 浏览:660
手机版wpsoffice怎么打包文件夹 浏览:579
在成都学车用什么app 浏览:818
grep命令管道 浏览:426
java修改重启 浏览:567
单片机供电方案 浏览:770
airpodspro一代怎么连接安卓 浏览:218
豌豆荚app上有什么游戏 浏览:283
公路商店app标签选什么 浏览:338
linuxoracle命令行登录 浏览:227
android深度休眠 浏览:171
php微信开发例子 浏览:845
医得app登录密码是什么 浏览:142
spring开发服务器地址 浏览:411
服务器上如何查看服务器的端口 浏览:678
单片机服务器编译 浏览:770
单口usb打印机服务器是什么 浏览:859
战地五开服务器要什么条件 浏览:956
在word中压缩图片大小 浏览:255