如何取得Access中数字字段的字段长度和精度?(100分)

  • 主题发起人 主题发起人 alaclp
  • 开始时间 开始时间
请看这个例程,关键点如下:
Recordset:=ADOServer.ConnectionObject.OpenSchema(adSchemaColumns,
VarArrayOf([Null, Null, list_TableName.Items[nLoop]]),EmptyParam);
RecordSet.MoveFirst;

RecordSet.Fields['ORDINAL_POSITION'].Value,
RecordSet.Fields['COLUMN_NAME'] .Value,
GetDataType(RecordSet.Fields['DATA_TYPE'] .Value),
RecordSet.Fields['CHARACTER_MAXIMUM_LENGTH'].Value,
RecordSet.Fields['NUMERIC_PRECISION'] .Value,
RecordSet.Fields['NUMERIC_SCALE'] .Value,
RecordSet.Fields['IS_NULLABLE'] .Value]);


{ 得到字段表 }
procedure TwinDBTools.list_TableNameClick(Sender: TObject);
var
nLoop:Integer;
RecordSet:_RecordSet;
begin
sTableName:='';
txt_TableName.Enabled:=false;
rb_Data.Enabled:=true;
nLoop:=0;
while nLoop<list_TableName.Items.Count-1 do begin
if list_TableName.Selected[nLoop]=true then break;
nLoop:=nLoop +1;
end;
if nLoop<list_TableName.Items.Count then begin
sTableName:=list_TableName.Items[nLoop];
Recordset:=ADOServer.ConnectionObject.OpenSchema(adSchemaColumns,
VarArrayOf([Null, Null, list_TableName.Items[nLoop]]),EmptyParam);
RecordSet.MoveFirst;
dbField.Close;
dbField.CreateDataSet;
while not RecordSet.EOF do begin
dbField.AppendRecord([
RecordSet.Fields['ORDINAL_POSITION'].Value,
RecordSet.Fields['COLUMN_NAME'] .Value,
GetDataType(RecordSet.Fields['DATA_TYPE'] .Value),
RecordSet.Fields['CHARACTER_MAXIMUM_LENGTH'].Value,
RecordSet.Fields['NUMERIC_PRECISION'] .Value,
RecordSet.Fields['NUMERIC_SCALE'] .Value,
RecordSet.Fields['IS_NULLABLE'] .Value]);
RecordSet.MoveNext;
end;
dbField.Sort:='ColumnCode ASC';
txt_TableName.Text:=sTableName;
dbDataSet.Close;
dbDataSet.CommandText:='SELECT * FROM '+sTableName;
try
dbDataSet.Open;
except
on e:exception do begin
pbc_ShowRunning('');
sql_ShowWarning('读取‘'+sTableName+'’数据表数据失败!',e.Message);
exit;
end;
end;
end;
end;
 
我想要取得字段定义信息中的DelcimalPlaces属性的值,
这个值在Access中的文档管理器中可以看到,不知道
Access是如何实现读取这个值的?
 
多人接受答案了。
 
RecordSet.Fields['NUMERIC_SCALE'].Value就是DelcimalPlaces!!!!
 
后退
顶部