![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
В программировании новичок.
Попросили написать программу для облегчения другим. Подключаюсь к БД Oracle через ADOConnection, в DBGrid вывожу список лиц, получивших карточки (ну там организовал поиск). При двойном клике в DBGride по "Человеку", в ListBox подтягивается список, полученных карточек, типо ААА001-009 БББ010-013 и т.п. При щелчке по нужной строке, например 1 она раскладывается в Edit1=ААА001 и Edit2=ААА009 Вопрос как организовать или что использовать, чтобы при нажатии на Кнопку1, выполнялся запрос перебрать значения всего диапозона ААА001-009(т.е. ААА001, ААА002, ААА003, ..., ААА009) с колонкой Number, таблицы Lugi. Я могу проверить только значение Edit1 и Edit2, а как промежуток между ними не знаю, подскажите пожалуйста. Код:
ADOQuery2.Sql.Text:='Select Number From Lugi Where Number = '+QuotedStr(Edit1.Text)+''; |
|
#2
|
||||
|
||||
|
Есть такая штука, как параметры запроса.
Код:
TParam Код:
select * from table where field = :value Жмём F1, вводим TParam. |
|
#3
|
||||
|
||||
|
Цитата:
Код:
ADOQuery2.Sql.Text := 'Select Number From Lugi Where Number >= ' + QuotedStr(Edit1.Text) + ' and Number <= ' + QuotedStr(Edit2.Text); |
| Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
spawn-1212 (30.04.2014)
| ||
|
#4
|
||||
|
||||
|
А можете подсказать как реализовать проверку по количеству символов, т.е. в LisTBox1 меня есть номера ААА001-002 и ААА0001-0002 (6 и 7 значные). При щелчке на один из диапозонов, они должны заносится в Edit1 и Edit2, как сделать проще чем у меня?
У меня так : Код:
procedure TForm1.ListBox2Click(Sender: TObject);
begin
Edit3.Text:=ListBox2.Items[ListBox2.ItemIndex];
{6-знаков}
//серия
Edit3.SelStart:=0; //устанавливаю курсор перед нулевым символом
Edit3.SelLength:=3; //выделяем 3 символа
Edit3.CopyToClipboard; //копируем выделенное
Edit4.Clear;
Edit4.PasteFromClipboard; //втавляем в Edit4
//начало номеров
Edit3.SelStart:=4; //устанавливаю курсор перед 4 символом
Edit3.SelLength:=3; //выделяем 3 символа
Edit3.CopyToClipboard; //копируем выделенное
Edit5.Clear;
Edit5.PasteFromClipboard; //втавляем в Edit5
//конец номеров
Edit3.SelStart:=8; //устанавливаю курсор перед 8 символом
Edit3.SelLength:=3; //выделяем 3 символа
Edit3.CopyToClipboard; //копируем выделенное
Edit6.Clear;
Edit6.PasteFromClipboard; //втавляем в Edit6
Edit7.Text:=Edit4.Text+Edit5.Text; // собираем в одно
Edit8.Text:=Edit4.Text+Edit6.Text; // собираем в одно
{7-знаков}
//серия
Edit3.SelStart:=0; //устанавливаю курсор перед нулевым символом
Edit3.SelLength:=3; //выделяем 3 символа
Edit3.CopyToClipboard; //копируем выделенное
Edit9.Clear;
Edit9.PasteFromClipboard; //втавляем в Edit4
//начало номеров
Edit3.SelStart:=4; //устанавливаю курсор перед 4 символом
Edit3.SelLength:=4; //выделяем 4 символа
Edit3.CopyToClipboard; //копируем выделенное
Edit10.Clear;
Edit10.PasteFromClipboard; //втавляем в Edit10
//конец номеров
Edit3.SelStart:=9; //устанавливаю курсор перед 9 символом
Edit3.SelLength:=4; //выделяем 4символа
Edit3.CopyToClipboard; //копируем выделенное
Edit11.Clear;
Edit11.PasteFromClipboard; //втавляем в Edit11
Edit12.Text:=Edit9.Text+Edit10.Text;// собираем в одно
Edit13.Text:=Edit9.Text+Edit11.Text;// собираем в одно
end;1. Много полей: 6знаков в Edit1 и Edit2, 7знаков в Edit3 и Edit4 2. Приходится делать две кнопки для 6знаков и 7 знаков а хотелось чтобы одна кнопка 3. В Editы постоянно вставляются символы, т.е. потом кто будет пользоваться программой нужно смотреть куда тыкать. Спасибо разобрался Цитата:
Последний раз редактировалось M.A.D.M.A.N., 30.04.2014 в 11:50. |
|
#5
|
||||
|
||||
|
Цитата:
|
|
#6
|
||||
|
||||
|
Цитата:
Код:
ADOQuery2.Sql.Text := 'Select Number From Lugi Where Number >= ' + QuotedStr(Edit1.Text) + ' and Number <= ' + QuotedStr(Edit2.Text); Тяжело в полученном результате искать отсутствующую карточку, например выдано карточек 50, а найдено 49, какая отсутствует? сидеть перебирать? не вариант Последний раз редактировалось spawn-1212, 30.04.2014 в 12:00. |
|
#7
|
||||
|
||||
|
Цитата:
Код:
ADOQuery2.Sql.Text := 'Select Number From Lugi Where NOT (Number >= ' + QuotedStr(Edit1.Text) + ' and Number <= ' + QuotedStr(Edit2.Text) + ')'; Код:
ADOQuery2.Sql.Text := 'Select Number From Lugi Where Number < ' + QuotedStr(Edit1.Text) + ' OR Number > ' + QuotedStr(Edit2.Text); |
|
#8
|
||||
|
||||
|
Цитата:
Объясню: В БД забиты карточки ААА001-ААА999, на конкретном лицеА у меня выходит диапазон ААА001-ААА050(карточки которые выдали ему), мне нужны карточки которые не входят в этот диапазон. Последний раз редактировалось spawn-1212, 30.04.2014 в 13:07. |