文档章节

创建 Access 数据库 mdb 数据库(delphi)

vga
 vga
发布于 2014/04/17 15:23
字数 256
阅读 89
收藏 0
 


function CreateAccessDB(MDBFile: string): Boolean;

  function CreateAccessFile(FileName: String; PassWord: string=''): boolean;
  var
    vCatalog: OleVariant;
  begin
    Result := False;
    if FileExists(FileName) then begin
      gLastError := '表"'+ FileName + '"已经存在.';
      Exit;
    end;
    try
      vCatalog := CreateOleObject('ADOX.Catalog');
      vCatalog.Create(format(MDBConnectionString, [FileName, PassWord]));
      Result := True;
    except
      on E: Exception do gLastError := E.Message;
    end;
  end;

  function CreateFieldTable(TableName: string): boolean;
  var
    ADOCon: TADOConnection;
    AdoQry: TADOQuery;
    TblLst: TStringList;
    idx: Integer;
  begin
    Result := False;
    ADOCon := TADOConnection.Create(nil);
    ADOCon.ConnectionString := format(MDBConnectionString, [MDBFile, '']);
    ADOCon.LoginPrompt := False;
    AdoQry := TADOQuery.Create(nil);
    TblLst := TStringList.Create;
    try
      try
        ADOCon.Connected := True;
        ADOCon.GetTableNames(TblLst);

        if TblLst.Find('Tab1', idx) then begin
          gLastError := '表' + 'Tab1' + '已经存在!';
          Exit;
        end else begin
          AdoQry.Connection := ADOCon;
          AdoQry.SQL.Text :=
            'Create Table [' + TableName + '] (' +
//            '[ID]   counter,' +
            '[FieldName] string,'  +
            '[ViewX] integer,' +
            '[ViewY] integer,' +
            '[X1] integer,' +
            '[Y1] integer,' +
            '[X2] integer,' +
            '[Y2] integer)';
          try
            AdoQry.ExecSQL;
            Result := True;
          except
            on e: Exception do
              gLastError := '创建表' + '"Tab1"' + '失败!(' + e.Message + ')';
          end;
          AdoQry.SQL.Text :=
            'Create Unique Index iFieldName ON [' + TableName + ']([FieldName])';
          try
            AdoQry.ExecSQL;
            Result := True;
          except
            on e: Exception do
              gLastError := '创建表' + '"Tab1"' + '失败!(' + e.Message + ')';
          end;
        end;
      except
        on e: Exception do
          gLastError := '打开数据库' + MDBFile + '失败!(' + e.Message + ')';
      end;
    finally
      TblLst.Free;
      AdoQry.Free;
      ADOCon.Free
    end;
  end;

begin
  if not CreateAccessFile(MDBFile) then begin
    writelog(gLastError);
    Exit;
  end;

  CreateFieldTable('FieldInfo');
end;

function OpenTable(MDBFile, TableBame: string): TQuery;
var
  qry: TADOQuery;
begin
  qry := TADOQuery.Create(nil);
  qry.ConnectionString := format(MDBConnectionString, [MDBFile, '']);
  qry.SQL.Text := 'select * from [' + TableBame + ']';
  qry.Open;
  Result := TQuery(qry);
end;

 

© 著作权归作者所有

vga

vga

粉丝 23
博文 371
码字总数 26854
作品 0
佳木斯
私信 提问
加载中

评论(1)

vga
vga 博主
MDBConnectionString =
'Provider=Microsoft.Jet.OLEDB.4.0;' +
'Data Source=%s;' +
'Jet OLEDB:Database Password=%s;';
远程数据库对象--Mmzrmo4Delphi

远程数据库对象。 很久没有发布东东了,今天看到盒子上有朋友发布了个三层的东东, 下来大概看了看,貌似使用起来不太方便,曾经用过ASTA和RmoObject,都不是那么让人满意,BUG多,并且庞大需...

匿名
2010/03/02
3.3K
0
PyPyODBC 1.3.5 发布,优化 Access 数据库文件接口

纯Python的ODBC库PyPyODBC 1.3.5 发布,除了Bug修复外,此次主要优化了在Windows平台上对Access数据库文件(*.mdb,*accdb)的编程接口 --------------------------------------------------...

派派技术小组
2017/01/30
1K
1
基于Delphi的三层数据库系统的实现方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/4024130 基于Delphi的三层数据库系统的实现方法 摘要随着中间件与Web技术的发展...

rdiframework
2009/03/25
0
0
批量将Access 2000 的mdb文件导入到SqlServer 2005中

场景:需要将一批Access 2000的mdb文件导入到Sql server 2005,Access数据库文件大概有几百个,全部结构相同,有同样的表名main0;总数据大概在5000w 显然用DTS数据导入导出是不太可能的事情,...

天山三害
2018/06/26
0
0
ylbtech-LanguageSamples-OLEDB

ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-OLEDB 1.A,示例(Sample)返回顶部 “OLE DB”示例 本示例演示了如何在 C# 中使用 Microsoft Access 数据库。它演示了如何创建数据...

吞吞吐吐的
2017/10/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

python学习10.04:Python list列表使用技巧及注意事项

前面章节介绍了很多关于 list 列表的操作函数,细心的读者可能会发现,有很多操作函数的功能非常相似。例如,增加元素功能的函数有 append() 和 extend(),删除元素功能的有 clear()、 remo...

太空堡垒185
14分钟前
3
0
新手插画学习的方法?教你如何自学?

插画学习的方法?教你如何自学? 从小喜欢画一些漫画头像随笔画,但是其实没有基础。个人偏好小清新手绘风的插画(如下图),每每看到都希望自己能画出这样的作品。 我其实很想说画这种美术功...

huihuajiaocheng
20分钟前
4
0
面试题

1、实现clone();

gtandsn
31分钟前
4
0
CentOS 7 部署 tesseract-ocr

官方地址 github yum-config-manager --add-repo https://download.opensuse.org/repositories/home:/Alexander_Pozdnyakov/CentOS_7/ 若提示 yum-config-manager: command not found 执行以......

阿白
31分钟前
3
0
JAVA比较器中comparator的使用

一个专用的比较器Comparator Comparator是一个专用的比较器,当一个不支持自比较或者自比较函数不能满足要求时,可写一个比较器来完成两个对象之间大小的比较。Comparator体现了一种策略模式...

daxiongdi
32分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部