![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Description MS SQL -> Delphi DBGRID [D7]
bolt © (2007-01-04 13:11:00)Всем ПРИВЕТ!!
На днях сталкнулся с такой проблемкой, может кто что посоветует:
MS SQL + ADO
При создании таблицы в MS SQL у каждого поля есть такая вещь как Description, интересно МОЖНО ЛИ в DBGrid в имя заголовка столбца грузить етот самый Description из MS SQL?
Всем СПАСИБО и ДОСТОЙНОЙ ПРИБЫЛИ в НОВОМ ГОДУ!
MsGuns (2007-01-07 18:26:00) [1]
type
// Дескриптор SQL-сервера
PMSSQLServerDef = ^RMSSQLServerDef;
RMSSQLServerDef = record
ServerName: string; // Имя сервера
InstanceName: string; // Установочный ид-р сервера
IsClustered: boolean; // Флаг включения в серверный кластер
Version: RSQLServerVersion; // Версия сервера
Port: integer; // Коммуникационный порт
Path: string; // Путь к серверу в сети
end;
// Дескриптор SQL колонки (поля)
PSQLFieldDef = ^RSQLFieldDef;
RSQLFieldDef = record
FldName: string;
PKey: boolean;
AInc: boolean;
IsNULL: boolean;
FldType: string;
FType: TFieldType;
Length: word;
Scale: byte;
Description: string;
end;
// Определение списка полей таблицы базы данных сервера MS SQL Server
function SQLServ_GetTableFieldsList(SQLServer: PMSSQLServerDef; DataBase,TableName: string; ListFields: TList): boolean;
var
i: integer;
fd: PSQLFieldDef;
begin
result := false;
for i := 0 to ListFields.Count-1 do Dispose(PSQLFieldDef(ListFields[i]));
ListFields.Clear;
with TADODataSet.Create(nil) do
try
ConnectionString := 'Provider=SQLOLEDB;'+
';Persist Security Info=false'+
';User ID=sa'+
';Data Source='+SQLServer.ServerName;
CommandText := 'use '+DataBase+' Exec sp_columns '+TableName;
Open;
while not EOF do
begin
fd := NEW(PSQLFieldDef);
fd.FldName := FieldByName('COLUMN_NAME').AsString;
fd.PKey := false;
fd.FldType := FieldByName('TYPE_NAME').AsString;
fd.AInc := (Pos('IDENTITY',UpperCase(fd.FldType))>0);
fd.IsNULL := (FieldByName('IS_NULLABLE').AsString='YES');
fd.Length := StrToInt(FieldByName('LENGTH').AsString);
fd.Scale := 0;
if UpperCase(fd.FldType)='NUMERIC' then
fd.Scale := StrToInt(FieldByName('SCALE').AsString);
fd.Description := 'No Description';
ListFields.Add(fd);
Next;
end;
Close;
// Извлечение описателей
CommandText := 'use '+DataBase+' select sc.name, sp.value '+
'from sysobjects so, syscolumns sc, sysproperties sp '+
'where so.id=sc.id and so.id=sp.id and '+
'sp.smallid=sc.colorder and so.name='+QuotedStr(TableName);
Open;
for i := 0 to ListFields.Count-1 do
if Locate(Fields[0].FieldName,PSQLFieldDef(ListFields[i]).FldName,[]) then
PSQLFieldDef(ListFields[i]).Description := Fields[1].AsString;
Close;
result := true;
finally
Free;
end;
end;
CoolLamer (2007-01-07 14:48:00) [2]
SELECT objname, [value] as description
FROM ::::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', 'ЗДЕСЬ ИМЯ ТАБЛИЦЫ', 'column', NULL)
bolt (2007-01-04 15:01:00) [3]Спасибо!
Johnmen (2007-01-04 14:47:00) [4]http://sql.ru/forum/actualthread.aspx?bid=1&tid=365397
bolt (2007-01-04 13:27:00) [5]: ))
Наверное я немного не правильно задал вопрос!
DBGrid.Columns[x].Title:= это понятно, вопрос в том что должно стоять после =, то есть как из Delphi обратиться к Description поля id, таблицы Base, вот в чем ВОПРОС?
Johnmen (2007-01-04 13:21:00) [6]DBGrid.Columns[x].Title:=етот самый Description из MS SQL