Вторник, 21.05.2024
Королевство Delphi
Главное меню
Статьи
Наш опрос
Как часто ви на этот сайт заходите?
Всего ответов: 159
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Базы данных » Разные

Создание таблиц и индексов в реалтайме

Давно я уже не писал про базы данных. Сегодня я решил вернутся к этой проблеме, потому что недавно ко мне пришёл интересный вопросец: "Как создавать индексы". Поэтому я решил сегодня рассказать тебе, как создаются таблицы и индексы в рантайме.

Для примера я бросил на форму две кнопки, один TEdit, TTable, TDataSource и DBGrid (см. рисунок 1). У DataSource1 свойство DataSet я поставил в Table1 , а у DBGrid в DataSource засунул DataSource1 . Всё это я сделал, чтобы можно было сразу увидеть созданную таблицу.

Кнопки у меня такие: первая для создания таблицы, а вторая для индексирования.

По нажатию первой, я намулевал вот что:

procedure TForm1.Button1Click(Sender: TObject);
begin
 with Table1 do
 begin
 Active := False;//Отключаю базу
 TableName := Edit1.Text;//Задаю имя новой базы
 FieldDefs.Clear;//Очищаю все текущие поля
 with FieldDefs.AddFieldDef do//Добавляю новое поле
 begin
 Name := 'Field1';//Задаю имя нового поля
 DataType := ftAutoInc;//Задаю тип autoincrement
 Required := True;// Делаю поле обязательным
 end;
 with FieldDefs.AddFieldDef do//Добавляю ещё новое поле
 begin
 Name := 'Field2';
 DataType := ftInteger;//Тип integer
 end;
 with FieldDefs.AddFieldDef do//Добавляю новое поле
 begin
 Name := 'Field3';
 DataType := ftString;//Тип строка
 Size := 30;// Размер строкового поля
 end;
 CreateTable;//Создаю новую базу с этими полями
 Active:=true;//Активирую её.
 end;
end;

В самом начале я устанавливаю Table1.Active в False, потому что создание таблицы можно производить только при отключённом компоненте. Если у тебя несколько компонентов ТTable связаны с базой, то нужно отключить их все.

Теперь процедура для кнопки 2, где я добавляю индексы. Обрати внимание, что таблица снова отключается Active := False.

procedure TForm1.Button2Click(Sender: TObject);
begin
 with Table1 do
 begin
 Active := False;//Отключаю таблицу
 IndexDefs.Clear;//Очищаю текущие индексы
 with IndexDefs.AddIndexDef do //Добавляю индекс
 begin
 Name := '';//Имя индекса. Это главный индекс, поэтому имя пустое
 Fields := 'Field1';//Индексируемое поле
 Options := [ixPrimary];//Тип индекса - главный
 end;
 with IndexDefs.AddIndexDef do//Добавляю ещё индекс
 begin
 Name := 'Fld2Indx'; //Имя индекса
 Fields := 'Field3'; //Индексируемое поле
 Options := [ixCaseInsensitive]; //Тип индекса (это вторичный)
 end;
 Active := true; //Активирую базу
 end;
end;

В моем примере я очищаю текущие индексы. Если ты хочешь сохранить их, то можно не очищать, а просто добавить.

Первый индекс я создаю главным. Для этого я указал ixPrimary. Если этот параметр не указан, то индекс будет вторичным.

Всё остальное описано в коментариях. Удачи!!!

Получить ссылку на материал

Категория: Разные | Добавил: Барон (06.12.2011)
Просмотров: 785 | Теги: реалтайм, индекс | Рейтинг: 0.0/0
[ Пожертвования для сайта ] [ Пожаловаться на материал ]

Если вам помог материал сайта кликните по оплаченной рекламе размещенной в центре

Поиск
Категории раздела
Access [1]
ADO [5]
Alias [4]
Oracle [1]
Delphi & SQL [15]
Разные [29]
Псевдоним [12]
СУБД клиент-сервер [3]
Королевство Delphi © 2010-2024
Яндекс цитирования