
Delphi - отрывок из курсовой
-
- Сообщения: 7
- Зарегистрирован: 03 май 2008, 12:42
Ребят, помогите пожалуйста.... У меня проблема. Нужно сделать поиск на Delphi. В общем создаешь ComboBox и выбираешь там поле по которому искать.... А ниже DBEdit, в который вводишь например одну букву и отображается информация по заданному полю на заданную букву. Вводишь 2 буквы - ищет по двум и т.д. Причем не надо кликать не на какую кнопку. Я в замешательстве....... Что делать - не пойму. 

Я так понимаю вы работаете с Базой данных ? Наверное с Access ? Вопрос зачем вам использовать "ComboBox" ? Когда есть "DBComboBox". В котором достаточно указать таблицу и все и он сам отобразит вам весь перечень. Вопрос куда вы отображаете уже найденные данные ?
Принцпи действия такой:
1) Делаете все вышеперечисленные действия.
2) Поиск будет лучше делать через запрос 'SQL'.
3) Чтобы поиск происходил сразу после изменения поля без всяких дополнительных нажатий, вам следует вставить запос на поиск компонента "DBEdit" на действие "OnChange".
Принцпи действия такой:
1) Делаете все вышеперечисленные действия.
2) Поиск будет лучше делать через запрос 'SQL'.
3) Чтобы поиск происходил сразу после изменения поля без всяких дополнительных нажатий, вам следует вставить запос на поиск компонента "DBEdit" на действие "OnChange".
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
-
- Сообщения: 7
- Зарегистрирован: 03 май 2008, 12:42
Спасибо, за ответ. Да, мы работаем с БД Access. У меня форма с DBGrid.Вот в ней и должен производиться поиск. Я незнаю как написать саму процедуру, того чтобы от введенной информации в "DBEdit" в DBGrid отображались именно те данные, которые мне нужны. Вот.... 

В начале ругается на пустой запрос, нажмешь ок и дальше работай.
Исходники: http://upload.com.ua/get/900223477
[syntax='Delphi']
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Clear;
ComboBox1.Text := #0;
ComboBox1.Items.Add('Имя');
ComboBox1.Items.Add('Фамилия');
with ADOQuery1 do begin
Close;
Active:=false;
Parameters.Clear;
SQL.Clear;
SQL.Text := 'SELECT table.idnum, table.aname, table.afam ' +
'FROM [table];';
Open;
Active:=true;
end;
end;
procedure TForm1.Edit1Change(Sender: TObject);
var
S, S1:string;
begin
S1 := Edit1.Text;
if ComboBox1.Text = '' then
ShowMessage('Выбирите столбец для поиска');
if ComboBox1.Text = 'Имя' then
S:='aname';
if ComboBox1.Text = 'Фамилия' then
S:='afam';
with ADOQuery1 do begin
Close;
Active:=false;
Parameters.Clear;
SQL.Clear;
SQL.Text := 'SELECT table.idnum, table.aname, table.afam ' +
'FROM [table] WHERE (((table.'+ S +') Like "%' + S1 + '%"));';
Open;
Active:=true;
end;
end;
[/syntax]
Исходники: http://upload.com.ua/get/900223477
[syntax='Delphi']
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Clear;
ComboBox1.Text := #0;
ComboBox1.Items.Add('Имя');
ComboBox1.Items.Add('Фамилия');
with ADOQuery1 do begin
Close;
Active:=false;
Parameters.Clear;
SQL.Clear;
SQL.Text := 'SELECT table.idnum, table.aname, table.afam ' +
'FROM [table];';
Open;
Active:=true;
end;
end;
procedure TForm1.Edit1Change(Sender: TObject);
var
S, S1:string;
begin
S1 := Edit1.Text;
if ComboBox1.Text = '' then
ShowMessage('Выбирите столбец для поиска');
if ComboBox1.Text = 'Имя' then
S:='aname';
if ComboBox1.Text = 'Фамилия' then
S:='afam';
with ADOQuery1 do begin
Close;
Active:=false;
Parameters.Clear;
SQL.Clear;
SQL.Text := 'SELECT table.idnum, table.aname, table.afam ' +
'FROM [table] WHERE (((table.'+ S +') Like "%' + S1 + '%"));';
Open;
Active:=true;
end;
end;
[/syntax]
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
-
- Сообщения: 7
- Зарегистрирован: 03 май 2008, 12:42
Ребят, еще одна загвоздка. У меня продажа товара сосклада. На форме набросаны эдиты всякие и гриды. Там выбираем покупателя, товар, кол-во и прочее. А потом то что мы выбрали на этой же форме записываем в грид. Там же считается сумма по каждому товару. А в конце нужно вывести итоговую сумму.....вот тут и загвоздка. Это надо делать реляционно, у нас АДО технологии, работаем с аксесом.
Помогите, пожалуйста!!!! Курсач горит!!!!!!
Помогите, пожалуйста!!!! Курсач горит!!!!!!
