Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли узнать количество таблиц у SQL сервера [D6, D7, MSSQL]


__Пупкин ©   (2005-10-16 11:00:00) 

Т.е. надо прочитать структуры БД: получить имена всех таблиц а в таблица все поля.


__Пупкин   (2005-10-16 11:28:00) [1]

Спасибо. Ты мне помог.


isasa   (2005-10-16 11:17:00) [2]

Если использовать ADO.
Соединиться, юзаем
function EditConnectionString(Component: TComponent): Boolean;
из
$Delphi$\Source\Property Editors -> AdoConEd.pas

var SourceConnection: TADOConnection;
   tNameBo: TComboBox;
...
 if EditConnectionString(SourceConnection) then begin
   tNameBox.Items.Clear;
   SourceConnection.GetTableNames(tNameBox.Items, false);
...

Поля можно вывести в TListView

procedure TConnForm.FillFieldList;
var mF : TListItem;
   i : integer;
begin
 FieldList.Clear;
 for i:=0 to testTable.FieldCount-1 do begin
   mF:=FieldList.Items.Add;
   mF.Caption:=testTable.Fields[i].FieldName;
   mF.SubItems.Add(DataTypeStr(testTable.Fields[i].DataType));
   mF.SubItems.Add(IntToStr(testTable.Fields[i].DataSize));
 end;
end;

function TConnForm.DataTypeStr(fType : TFieldType) : string;
begin
 case fType of
   ftUnknown:  Result:='Unknown or undetermined';
   ftString:  Result:='Character or string field';
   ftSmallint:  Result:='16-bit integer field';
   ftInteger:  Result:='32-bit integer field';
   ftWord:  Result:='16-bit unsigned integer field';
   ftBoolean:  Result:='Boolean field';
   ftFloat:  Result:='Floating-point numeric field';
   ftCurrency:  Result:='Money field';
   ftBCD:  Result:='Binary-Coded Decimal field that can be converted to Currency type without a loss of precision.';
   ftDate:  Result:='Date field';
   ftTime:  Result:='Time field';
   ftDateTime:  Result:='Date and time field ';
   ftBytes:  Result:='Fixed number of bytes (binary storage)';
   ftVarBytes:  Result:='Variable number of bytes (binary storage)';
   ftAutoInc:  Result:='Auto-incrementing 32-bit integer counter field';
   ftBlob:  Result:='Binary Large OBject field';
   ftMemo:  Result:='Text memo field';
   ftGraphic:  Result:='Bitmap field';
   ftFmtMemo:  Result:='Formatted text memo field';
   ftParadoxOle:  Result:='Paradox OLE field';
   ftDBaseOle:  Result:='dBASE OLE field';
   ftTypedBinary:  Result:='Typed binary field';
   ftCursor:  Result:='Output cursor from an Oracle stored procedure (TParam only)';
   ftFixedChar:  Result:='Fixed character field';
   ftWideString:  Result:='Wide string field';
   ftLargeint:  Result:='Large integer field';
   ftADT:  Result:='Abstract Data Type field';
   ftArray:  Result:='Array field';
   ftReference:  Result:='REF field';
   ftDataSet:  Result:='DataSet field';
   ftOraBlob:  Result:='BLOB fields in Oracle 8 tables';
   ftOraClob:  Result:='CLOB fields in Oracle 8 tables';
   ftVariant:  Result:='Data of unknown or undetermined type';
   ftInterface:  Result:='References to interfaces (IUnknown)';
   ftIDispatch:  Result:='References to IDispatch interfaces';
   ftGuid:  Result:='globally unique identifier (GUID) values';
   ftTimeStamp:  Result:='Date and time field accessed through dbExpress';
   ftFMTBcd:  Result:='Binary-Coded Decimal field that is too large for ftBCD.';
   else
     result:='???';
 end;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо