Access数据表的读取

yuFei 2005-10-01 07:59:57
在不能知道库中某个表的名称 时


如何得到数据库里所有表的名称??
...全文
140 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
changechange 2005-10-19
  • 打赏
  • 举报
回复
实例在

http://access911.net/csdn/FileDescription.asp?mdb=2005-10-19&id=15&mode=3

下载



unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses ComObj;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
conn:OleVariant;
rs:OleVariant;
i:integer;
begin
conn:=CreateOleObject('adodb.connection');
rs:=CreateOleObject('adodb.recordset');
conn.open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + ExtractFilePath(ParamStr(0)) + '\test.mdb;User ID=admin;Password=;Jet OLEDB:Database Password=');
rs:=conn.OpenSchema(20); //adSchemaTables 这里是列出表,还有很多很多参数,可以做很多很多事情,请参考 MSDN
// 列出所有表,包括系统表和用户表
repeat
for i:=0 to rs.fields.count-1 do
begin
if VarIsNull(rs.fields.item[i].value)=true then
begin
self.Memo1.lines.Add( rs.fields.item[i].name + '->' );
end
else
self.Memo1.lines.add(rs.fields.item[i].name + '->' + VarToStr(rs.fields.item[i].value));

end;
self.Memo1.Lines.Add('--------');
rs.movenext;
until rs.eof=true;
rs.close;
conn.close;
conn:= Unassigned;
rs:=Unassigned;

end;

end.
changechange 2005-10-19
  • 打赏
  • 举报
回复
关于此主题请参考:
《表》怎样使用一个查询获得数据库对象的名称(查询/窗体/表/报表/模块/宏)?查...
http://access911.net/index.asp?u1=a&u2=71FAB71E12DC
changechange 2005-10-19
  • 打赏
  • 举报
回复
用原生 ADO 来解决非常简单

请参考以下文章及其相关文章:

只用ado列出所有的表
http://access911.net/?kbid;72FAB71E14DC


上述是 VB 代码,你可以参考一下,用 DELPHI 解决
scrub 2005-10-18
  • 打赏
  • 举报
回复
晕啊 这个GetTableNames 估计是自定义的函数吧????
把他的代码给出来啊
海宏AA 2005-10-03
  • 打赏
  • 举报
回复
Select * From SysObjects Where xType In ('U')
polly_110 2005-10-01
  • 打赏
  • 举报
回复
对不起, 上面还没有写完
procedure TMainForm.FormCreate(Sender: TObject);
var
SL:Tstringlist;
TableExist:boolean;
index:integer;
begin
SL := ...... //接上面
polly_110 2005-10-01
  • 打赏
  • 举报
回复
var

SL:=Tstringlist.Create;
try
adoconnection1.GetTableNames(SL,false);
except
raise Exception.Create('装载源库列表错误!错误特征码2003');
end;
TableExist:=false;
for index := 0 to (SL.Count - 1) do
begin
//Export Table
if SL[index]=databasename then
begin
TableExist:=true;
break;
end;
end;
SL.free ;
if tableexist=false then //数据表不存在,则创建。

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧