Rambler's Top100


Виртуальный клуб начинающих программистов на Delphi


Заводь
Мелководье
Сокровищница
Рифы
Течения
Архивный грот
Дальние земли
Жемчужница
Ловцы жемчуга
Почтовый грот
Дельфинарий
Карта бухты

Rambler's Top100


Mastak.ru - качественный хостинг на двух континентах

The List of Russian Web Servers WebList.Ru

Работа с базами данных:

4. Подскажите как найти запись в таблице. Пока ответов - 2
5. Подскажите как добавить запись в таблицу. Пока ответов - 1

Подскажите как найти запись в таблице.
Подскажите как добавить запись в таблицу.

Поискали запись в таблице. (вар. 1)
    Нам необходимо найти значение в таблице. Имеем Edit1, где помещаем искомый текст, DBGrid1 для отображения таблицы TableName с одним из полей (как раз которое ищем) Name. В обработчике Edit1 OnChange нужно написать следующий код.

with TableName do begin SetKey; FieldByName('Name').AsString := Edit1.Text; GotoNearest end

Расшифровываем:
    Определяем, что все последующие действия происходят с таблицей TableName. Переводим ее в специальный режим, присваиваем полю Name значение текста в Edit1 и призываем таблицу откликнуться на все сделанные операции. В результате в DBGrid позиционируется необходимая запись. (Если она есть, ну, а, если записи нет, то следующая запись по сортировке).

Поискали запись в таблице. (вар. 2)

Есть таблица <таб>
На форме размещаем Edit, Button,DBGrid, Query, DataSource
В Edit вносим то что ищем,(если ищем цифровые значения для
корректности ввода можно поставить EditMask) в обработчике события
кнопки OnClick пишем следующий текст:
***********************
Query1.Sql.Clear;
Query1.Sql.Add('Select <имя поля или полей через ,> from <таб> where
<имя поля искомого>=:param');
Query.ParamByName('param').As<тип параметра>:=[может быть приведение
типа]StrToInt(Edit.Text);
Query1.Active:=True;
************************
Если искомая запись найдена она отобразится в таблице которая связана
с DataSource
Можно проверить есть ли выбраные записи функцией IsEmpty Query.IsEmpty
возвращает True если запрос не содержит записей (ничего не нашел)
Теперь можно вставить данные.
If(Query.IsEmpty) then
Begin
Query1.Sql.Clear;
Query1.Sql.Add('Insert Into<таб>(<имя поля или полей через
,>)Values(:param)');
Query.ParamByName('param').As<тип параметра>:=[может быть приведение
типа]StrToInt(Edit.Text);
Query1.ExecSQL;
I:=Query1.RowsAffected;
End;
Не забудьте объявить пременную переменной I присваевается количество
обработанных записей(то есть вставленных).
Переменную можно использовать и вывести сообщение о том что I записей
было успешно вставлено.
Можно тутже повторно нажать на кнопку и проверить, в таблице должна
отобразиться внесенная запись.

Добавляем запись в таблицу.

    Разжуем всю ситуацию. Предположим, у нас есть таблица, с каким то справочником, нам необходимо найти запись в этой таблице и вставить ее значение в главную таблицу. (Есть телефонный справочник и адреса в том числе, справочником является улицы, или предположим населенные пункты, города). Поступаем так. Мы ищем значение в Edit1, а найденные позиции показываются в DBGrid1. Скорее всего, нужно предусмотреть кнопку добавления значения, если мы набрали всю искомую строку, а результат не соответствует действительности. (Предположим такой улицы в нашем справочнике не оказалось), то необходимо его туда добавить. Не суть важно, кнопкой или по клавише Insert, мы будем вставлять запись, важно чтобы она туда вставлялась без проблем. Если таблица имеет название TableName и поле с необходимым значением имеет название Name, то следующая процедура вам поможет

If (Edit1.Text <> '') and (TableName.FieldByName('Name').AsString <> Edit1.Text) Then begin TableName.Insert; TableName.FieldByName('Name').AsString := Edit1.Text; TableName.Post end

Итак:
1) Проверяем, чтобы в Edit1.Text не было пустого значения и на всякий случай, проверяем, не случайно ли мы нажали на кнопку добавления (проверяем, а вдруг мы уже нашли эту запись, так зачем же суетиться);
2) Переводим таблицу в режим вставки нового значения;
3) Присваиваем значению поля Name в таблице TableName текст в Edit1.Text;
4) И, конечно, сохраняем таблицу TableName.
После этих операций, мы готовы использовать текущее значение справочника

 

Идеи и пожелания с удовольствием почитаем.

Хостинг от uCoz