nmaryan |
Отправлено: 31.01.2007, 16:11 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 3
|
Я в программирование практически чайник. У меня возникла такая вот проблемма. Есть форма на каторой есть следующие компоненты DBGrid, 2 компонента DateTimePicker и кнопка BitBtn. В форме также используются компаненты Query и DateSource. Интересует как правильно написать обработчик кнопки что бы произвадилась сортировка данных в таблице или в DBGrid. В зависимости от выбора даты в компонентах DateTimePicker. Тип таблицы используемый Query
Access.
Отредактировано nmaryan — 31.01.2007, 19:33 |
|
Valdemar |
Отправлено: 31.01.2007, 16:58 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Если под словом "сортировать" вы понимали "фильтровать", т.е. хотите выбрать записи, например, за определенный период, то воспользуйтесь параметрическим запросом. Что-то вроде этого:
CODE | Query->Close();
Query->SQL->Text="select * from myTable where date between :d1 and :d2");
Query->ParamByName("d1")->AsDate = DateTimePicker1->Date;
Query->ParamByName("d2")->AsDate = DateTimePicker2->Date;
Query->Open();
| |
|
nmaryan |
Отправлено: 31.01.2007, 17:50 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 3
|
Да именно. Я хочу сделать фильтр. Но тот код каторый ты написал вызывает ошибку. Ошибка возникает во второй строчки кода. Непойму почему.
Query1->Close();
Query1->SQL->Text="select * from report where date between : d1 and : d2");
Query1->ParamByName("d1")->AsDate = DateTimePicker1->Date;
Query1->ParamByName("d2")->AsDate = DateTimePicker2->Date;
Query1->Open();
Отредактировано nmaryan — 31.01.2007, 18:26 |
|
Миshук |
Отправлено: 31.01.2007, 18:40 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 36
|
Привет!
CODE | Query1->SQL->Text="select * from report where date between : d1 and : d2";
|
|
|
nmaryan |
Отправлено: 31.01.2007, 19:37 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 3
|
Пытаюсь использовать вот етот код.
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("select * from report where date between : d1 and : d2");
Query1->ParamByName("d1")->AsDate = DateTimePicker1->Date;
Query1->ParamByName("d2")->AsDate = DateTimePicker2->Date;
Query1->Open();
Выдает ошибку. Возможна ли причина ошибки. Формат даты при работе с таблицами Access ?
Отредактировано nmaryan — 31.01.2007, 19:38 |
|
Valdemar |
Отправлено: 01.02.2007, 08:04 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
В моем первом сообщении надо убрать скобку в конце второй строки, опечатался я. В вашем коде в тексте запроса между двоеточием и именем параметра не должно быть пробела.
Пример я привел с использованием Query из BDE. Если вы используете не BDE, а ADO, то там обращение к параметрам немного по другому.
И еще, возможно имя таблицы date конфликтует с зарезервированным словом.
Какая ошибка выдается?
|
|
Миshук |
Отправлено: 01.02.2007, 11:58 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 36
|
Привет.
QUOTE | И еще, возможно имя таблицы date конфликтует с зарезервированным словом. |
Вероятнее всего.Вчера в аську писал про ошибочное использование слова date.
|
|
nawok78 |
Отправлено: 05.02.2007, 11:57 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 115
|
Итого, с учетом выше сказанного:
[CODE]
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("select * from report where report.'date' between :d1 and :d2");
Query1->ParamByName("d1")->AsDate = DateTimePicker1->Date;
Query1->ParamByName("d2")->AsDate = DateTimePicker2->Date;
Query1->Open();
[CODE]
Отредактировано nawok78 — 05.02.2007, 11:58 |
|