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

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

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


Наверх

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