取一个mdb数据库所有表, 所有表和表中字段的注释

Posted on 2007-12-29 15:33  leeson  阅读(916)  评论(0)    收藏  举报

//文件名(filename) D:\mdb.js
//功能: 取一个mdb数据库所有表, 所有表和表中字段的注释,字段类型,长度. 存成一个INI文件
//运行方式
//cscript d:\mdb.js //NoLogo MDB文件名 INI文件名

 

//取参数
var args = WScript.Arguments;
var strMDB_FN = args(0);
var strINI_FN = args(1);

//var strMDB_FN = "d:\\1.mdb";
//var strINI_FN = "d:\\mdb.ini";

//打开INI文件.
var ForReading = 1, ForWriting = 2;
var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile(strINI_FN, ForWriting, true, TristateTrue);

function say(s)
{
WScript.StdOut.WriteLine(s);
}


function say_file(s)
{
f.WriteLine(s);
}

say("程序正在运行,请稍候...");

var dbe = new ActiveXObject("DAO.DBEngine.36");
var db = dbe.OpenDatabase( strMDB_FN );//数据库的名字

//say("数据库打开");

var nTableCount = db.TableDefs.Count;
say_file("[table]");

for(var j = 0; j < nTableCount; j ++)
{
var tabledefine = db.TableDefs(j);//枚举表
var strTableDescription = "";
var bError = true;
try
{
strTableDescription = tabledefine.Properties("Description");
bError = false;
}
catch(err)
{
}
if(bError)
strTableDescription = "";
say_file("表名:"+ tabledefine.name + " 表说明" + strTableDescription);
}

 

for(j = 0; j < nTableCount; j ++)
{

var tabledefine = db.TableDefs(j);//枚举表
say_file("[" + tabledefine.name + "]");
var nFieldCount = tabledefine.Fields.Count;

 

for(var i = 0; i < nFieldCount ; i ++)
{
var field = tabledefine.Fields(i);//枚举字段
var strFieldName = field.name ;
var strFieldType = field.types;
var strFieldSize = field.size;
var strDescription;
var bError = true;
try//如果字段说明为空, Properties("Description")会出错. 所以用try-catch, 否则程序会中断
{
strDescription = field.Properties("Description");//字段说明
bError = false;
}
catch(err)
{

}
if(bError)
strDescription = "";
say_file( "字段名:" + strFieldName + " 说明:" + strDescription + " 类型:" + strFieldType + " 长度:" + strFieldSize);
}

}


db.Close();

红细胞软件组织
RedCell Soft Organise.