Современная программа - это внушительный набор правил, посредством которых машину "инструктируют", как решать ту или иную задачу. - Билл Гейтс.
Предисловие
Для начала хотел бы сказать, что если вы хотите обменяться с этой рассылкой ссылками, то обращайтесь ко мне, ведущему рассылки, а не к автору текущей статьи.
Незабудьте указать код вашей рассылки и количество её подписчиков(последнее особого значения не имеет, т.к. я учитываю возможную перспективность). Если ваша рассылка мне понравится, то мы обменяемся.
Я подумал, что в рассылке можно было бы сделать ещё какие-нибудь разделы. Например краткие новости, юмор, объявления, вопрос-ответ или какие-нибудь голосования. Если у вас есть идеи на этот счёт или вы хотите приложить к этому руку(условно; вести свой раздел) - пишите.
Если дополнительные разделы вам совершенно не нужны, то сообщите и об этом.
Базы Данных с нуля
Создание, переименование и удаление
Обычно операции по созданию, переименованию и удалению таблицы Базы Данных происходят на этапе
разработки приложения. Но, тем не менее, эти действия можно выполнить и динамически, то есть во
время выполнения программы.
Для создания таблицы используется метод CreateTable. При вызове этого метода на диске
будет создана пустая таблица. Но, перед тем как вызвать данный метод, необходимо указать положение
и тип будущей таблицы, описать поля и индексы таблицы. Для задания местоположения используется
стандартное свойство TableName. Для указания типа создаваемой таблицы так же используется
стандартное свойство TableType. Для описания полей используется свойство FieldDefs
и метод Add. Аналогичным образом происходит описание индексов при помощи свойства
IndexDefs. Рассмотрим пример:
procedure TForm1.ButtonMakeTableClick(Sender: TObject);
begin
// Закрываем набор данных
Table1.Close;
// Указываем положение будущей таблицы
Table1.TableName:='Base\NewBase.db';
// Задаем тип таблицы
Table1.TableType:=ttParadox;
// Создаем таблицу БД
Table1.CreateTable;
// Указываем текущий индекс
Table1.IndexName:='indName';
// Открываем набор данных
Table1.Open;
// Связываем источник данных с набором данных
DataSource1.DataSet:=Table1;
// Задаем сетке источник данных
DBGrid1.DataSource:=DataSource1;
end;
Как видно из примера в свойстве FieldDefs нужно указать имя создаваемого поля, тип поля,
размер поля (если он необходим) и последним указываемым параметром является параметр Required,
который определяет должно ли поле обязательно содержать некоторое значение или нет. Если указать
значение True, то поле должно обязательно содержать некоторое значение, а если False,
то поле может не содержать никакого значения. А в свойстве IndexDefs нужно указать имя
создаваемого индекса, поле, по которому создается индекс, и параметр.
Обратите внимание на параметры, указываемые в квадратных скобках. Вот список часто используемых
значений (наиболее полный список Вы можете посмотреть в справочнике):
ixPrimary - Первичный индекс.
ixUnique - Уникальный индекс, в котором не допустимы повторы значений поля.
ixCaseInsensitive - Сортировка в независимости от регистра букв.
ixDescending - Сортировка записей по убыванию.
Для того чтобы переименовать таблицу необходимо воспользоваться методом RenameTable. В
результате вызова данного метода все файлы, относящиеся к таблице, будут переименованы. Но, не
нужно забывать, что перед вызовом метода набор данных необходимо закрыть. Вот как это
организуется:
procedure TForm1.ButtonRenameTableClick(Sender: TObject);
begin
Table1.Close;
Table1.RenameTable('Base\NewBase.db');
Table1.Open;
end;
Для удаления таблицы нужно воспользоваться методом DeleteTable. Здесь также не нужно
забывать, что перед удалением набор данных должен быть закрыт. В результате использования
данного метода на диске буду удалены все файлы, относящиеся к таблице.
procedure TForm1.ButtonDeleteTableClick(Sender: TObject);
begin
Table1.Close;
Table1.DeleteTable;
end;
Все операции по созданию таблицы Базы Данных для набора данных Query выполняются через
специальный SQL-запрос.
Вопросы читателей
Вадим Ш. спрашивает:
> Не могли бы Вы опубликовать в рассылке, как физически удалить из
> таблицы записи, помеченные на удаление с помощью метода "Delete"?
Гусев Сергей отвечает:
С Вашего позволения, я хотел бы немного разъяснить ситуацию.
1. Выражение "удалить из таблицы" выглядит, как бы, не совсем
корректно. Удалить можно только из набора данных, то есть, грубо говоря, из
самой Базы Данных.
2. При удалении записи из набора данных, в отличии от некоторых
СУБД, эта запись действительно физически удаляется из этого набора данных.
И если после удаления записи никаких визуальных изменений в БД
не произошло, то значит нужно, либо дать фокус сетке DBGrid,
либо воспользоваться методом Refresh.
Если я Вас правильно понял, то это организуется следующим образом:
procedure TForm1.FormCreate(Sender: TObject);
begin
DBGrid1.Options:=DBGrid1.Options + [dgMultiSelect];
end;
procedure TForm1.ButtonDeleteClick(Sender: TObject);
begin
If DBGrid1.SelectedRows.Count <> 0 Then
Begin
If MessageDlg('Удалить помеченные записи БД ?', mtWarning,
[mbYes, mbNo], 0) = mrYes
Then DBGrid1.SelectedRows.Delete;
End
Else
Begin
If MessageDlg('Удалить текущую запись БД ?', mtWarning,
[mbYes, mbNo], 0) = mrYes
Then Table1.Delete;
End;
end;
Любые комментарии, жалобы, пожелания и сообщения об ошибках настоятельная просьба
присылать на e-mail.
Все вопросы, пожелания и предложения ссылкообмена ведущему рассылки, прошу слать на e-mail: urisff@inbox.ru
Все статьи публикуются здесь только с разрешения (или рекомендации) автора.
Если вы хотите опубликовать здесь свою статью, то сделайте это, переслав её мне.
В случае, если вы будете использовать приведённые в этой рассылке материалы, не забудьте сделать ссылку на эту рассылку.