Работа с выделенными записями в таблицах СУБД

4 минуты на чтение

Всем привет, сейчас не так уж и много времени разбираться с какими-то темами, примерами, так что пока не очень часто пишу в блог, хотя время найти могу, для того, чтобы помочь разобраться читателям моего блога с некоторыми вопросами, которые они мне задают в комментариях или на email. Вот на этот раз вопрос был по работе с БД, а именно, цитата:

я хочу несколько записей в таблице, чтобы потом производить с ними какие-либо действия. Совершенно неважно, что потом с ними буду делать, печатать или удалять, важно то, что мне их надо как-то запомнить объясните, пожалуйста самый простой вариант

Ну так давайте тогда и приступим к рассмотрению данного вопроса. Самый простой способ, есть конечно и не один, но я расскажу два простых способа. Давайте создадим для начала какую-нибудь БД и в ней создадим таблицу, СУБД можно выбрать любую, так как данный метод будет работать почти со всеми СУБД, которые будут использовать технологию ADO для подключения, да и BDE, тоже должно работать. Я выбрал СУБД MS Access.

Далее создал БД, в ней таблицу под именем Student, следующей структуры:

После этого сохраняем нашу БД и создаем проект в Delphi. На форму устанавливаем следующие компоненты:

  • TADOQuery
  • TADOConnection
  • TDBGrid
  • TDataSource
  • TButton

Далее делаем подключение к нашей БД, как это делать, мы рассматривали в данной статье . После этого, как у нас всего готова, необходимо сделать настройки некоторых компонентов, а это — TDBGrid. А точнее, нам необходимо установить свойство, чтобы можно было выделять несколько записей, которые отображаются в TDBGrid. Для этого выделяем компонент TDBGrid и в свойстве Options-dgMultiSelect (в более ранних версиях Delphi, возможно будет goMultiSelect) устанавливаем его в True. Теперь записи можно выделять, при нажатии клавиш Ctrl и/или Shift.

Все, теперь нам необходимо данные строки обработать (которые выделены), а потом с ними можно делать все, что захотим. Вот несколько самых простых способов, с помощью которых можно решить данный вопрос, на событие OnClick нашей кнопки пишем следующий код:

procedure TForm1.btn1Click(Sender: TObject);
var
 I:Integer;
begin
   try
    qry1.First;
     for I := 0 to dbgrd1.SelectedRows.Count-1 do
       begin
         qry1.Bookmark:=dbgrd1.SelectedRows[i];
         ShowMessage(qry1.FieldByName('FIO').AsVariant);
       end;
   finally
    //-//-//-//-//-//-//-//-//
   end;
end;

С помощью свойства Bookmark, мы устанавливаем указатель в самой таблице на закладку, запись, которой соответствует выделенная запись в TDBGrid, при этом организовываем цикл, по всем выделенным записям. Тоже самое можно организовать следующим образом:

procedure TForm1.btn1Click(Sender: TObject);
var
 I:Integer;
begin
   try
    qry1.First;
     for I := 0 to dbgrd1.SelectedRows.Count-1 do
       begin
         qry1.GotoBookmark(dbgrd1.SelectedRows[i]);
         ShowMessage(qry1.FieldByName('FIO').AsVariant);
       end;
   finally
    //-//-//-//-//-//-//-//-//
   end;
end;

Здесь все, тоже самое, только указатель мы устанавливаем с помощью процедуры GotoBookmark. Вот и все, теперь эти записи можно получать в цикле, и что хотите, то с ними и делайте.

Ну и сразу отвечу на второй вопрос, цитата:

acces су поставил пароль но Microsoft jet 4.0 не хочет подключится
подробно объясните, пожалуйста и программно как можно обращаться с ним

Что касается установки пароля на БД MS Access, то его можно установить, как программно, так и при помощи MS Access. Устанавливаете пароль в MS Access, свойство компонента TADOConnection - LoginPromt устанавливаем в False, при этом в свойство Mode должно быть установлено в ReadWrite, так как БД, должна открываться в монопольном режиме, пароль можно также передавать и своим диалоговым окном в свойство ConnectionString компонента TADOConnection. Внимательно просмотрите строку подключения ConnectionString и само диалоговое окно подключения, Вы сами все поймете, куда и как вводить пароль.


Все, что рассмотрели в данной статье с помощью компонента TADOQuery, можно сделать и с помощью компонента TADOTable

Facebook Vk Ok Twitter LinkedIn Telegram

Похожие записи:

Всем здравствуйте, в этой статье я хотел бы снова обратить внимание на Базы данных, а в частности работа с Базами данных по технологии ADO. Когда пользователь создает приложение на Delphi, работающего с СУБД, к которой присоединяется по технологии ADO, то к фа...
Привет всем дорогие друзья. В этой статье хочу поговорить о FireBird. Мне, если честно, никогда не доводилось работать с данной СУБД, поэтому для меня это было что-то новое. Я сначала начал думать о том, через что мне лучше всего подключаться к моей базе данны...
Доброго времени суток дорогие друзья. Давненько я ничего не писал. Решил написать статью про Microsoft SQL Server, так как много вопросов было по этому поводу, а если быть точным, то о том, как можно создать поле Счетчик в MS SQL Server. Все знают замечательны...