Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Структура таблицы SQL сервера 
V
    Опции темы
LexuSS
Дата 22.7.2009, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 12.10.2007

Репутация: нет
Всего: нет



Подключаюсь к SQL-серверу (2000) через ADO, перебираю таблицы для поиска подходящей.
Как узнать структуру таблицы на которую установлен фокус?
Заранее спасибо!!!
PM MAIL   Вверх
Данкинг
Дата 22.7.2009, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



В смысле - список полей получить, что ли?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Akella
Дата 22.7.2009, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Не, ему нужен список полей с их свойствами, наверное.

Добавлено через 4 минуты и 57 секунд
В ADODataset загрузи таблицу например так:
Код

ADODataset1.CommandText := 'select * from table1 where id = -1';
ADODataset.Open;

А теперь цикл по всем полям набора данных.
where id = -1 нужно для того, чтобы в набор данных не попало ни одной записи, т.е. у тебя будут только поля (записи нам не нужны).
where id = -1 замени на своё условие.
PM MAIL   Вверх
Данкинг
Дата 22.7.2009, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Akella, не понял, а чем просто AdoTable.Fields[]..... плохо?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Akella
Дата 22.7.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Эм... всмысле, а чем плохо? Расскажи, чем плохо?
PM MAIL   Вверх
Данкинг
Дата 22.7.2009, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Я просто не понял, зачем запрос на выборку делать?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
LexuSS
Дата 23.7.2009, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 12.10.2007

Репутация: нет
Всего: нет



Мне нужно узнать тип каждого поля поля (то есть число, текст или логическое поле).
Список плей найти не сложно....
PM MAIL   Вверх
Akella
Дата 23.7.2009, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(LexuSS @  23.7.2009,  06:42 Найти цитируемый пост)
Мне нужно узнать тип каждого поля поля

Ну так узнавай, в чём же дело. Или клавиша f1 выламана?
PM MAIL   Вверх
insoft
Дата 23.7.2009, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 14.2.2007
Где: Тюменская область , г.Тобольск

Репутация: 3
Всего: 3



ну я бы сделал так
Код

function AccessType(fd:TFieldDef):string;
begin
 case fd.DataType of
  ftString: Result:='TEXT('+IntToStr(fd.Size)+')';
  ftSmallint: Result:='SMALLINT';
  ftInteger: Result:='INTEGER';
  ftWord: Result:='WORD';
  ftBoolean: Result:='YESNO';
  ftFloat : Result:='FLOAT';
  ftCurrency: Result := 'CURRENCY';
  ftDate, ftTime, ftDateTime: Result := 'DATETIME';
  ftAutoInc: Result := 'COUNTER';
  ftBlob, ftGraphic: Result := 'LONGBINARY';
  ftMemo, ftFmtMemo: Result := 'MEMO';
 else
  Result:='MEMO';
 end;
end;


ну а использовать проще простого
Код

var
  i:integer;
  s:string;
begin
 with NameTable.FieldDefs do
   begin
     for i:=0 to Count-1 do
       begin
         s:=s + ' ' + Items[i].Name;
         s:=s + ' ' + AccessType(Items[i]);
         s:=s + ',';
       end;
   end;

 Memo1.Clear;
 Memo1.lines.Add (s);

PM MAIL WWW   Вверх
kobra
Дата 23.7.2009, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 1
Всего: 9



Код

ADODataset1.CommandText := 'select top 0 * from table1';
ADODataset.Open;
пустой запрос наверно луще так делать smile

структуру таблицы можно запросом из служебных таблиц (не рекомендуется). это самый наглядный вариант, но нужны соответствуищие права.

запросом из служебных видов или хранимои процедуры.

связать с таблицей AdoTable и проитис в цикле по полям.

Это сообщение отредактировал(а) kobra - 23.7.2009, 21:47
PM MAIL   Вверх
LexuSS
Дата 24.7.2009, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 12.10.2007

Репутация: нет
Всего: нет



Большое спасибо!!!
Всё получилось, а запросом к какой служебной табличке можно?
прав достаточно... смотрел в них но не понял как поле к таблице привязывается. что там еще можно узнать?
PM MAIL   Вверх
kobra
Дата 24.7.2009, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 1
Всего: 9



как уже писал, в таблицы лазить не рекомендуется.
правилный подход - ползоватся видами или процедурами
dbo.sp_databases
dbo.sp_tables
dbo.sp_columns
INFORMATION_SCHEMA.COLUMNS
INFORMATION_SCHEMA.TABLES
если залезиш, там ещо много интересного smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0605 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.