Всем привет, сейчас не так уж и много времени разбираться с какими-то темами, примерами, так что пока не очень часто пишу в блог, хотя время найти могу, для того, чтобы помочь разобраться читателям моего блога с некоторыми вопросами, которые они мне задают в комментариях или на 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