Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2011, 10:33   #1
albina73
 
Регистрация: 21.12.2011
Сообщений: 4
По умолчанию Выборка данных для запроса

Тема Успеваемость студентов факультета. Нужно сформировать отчет по неуспевающим студентам:
-студенты не сдавшие зачеты;
-студенты не сдавшие экзамены;
с возможностью выбора специальности, курса и группы...
На форме ставлю 3 Combobox: первый по специальности, 2 по курсу, 3 по группе...

По специальности пишу запрос
Код:
//парамметрированный запрос
Select Distinct students.FIO, uspevaem.gruppa, predmet.name, uspevaem.data_Sdachi
from uspevaem, students, predmet, otchetnost, ocenka, specialnost
Where data_sdachi between :DateNach -1 and :DateKon and students.nomer_zach=uspevaem.IdStudent and predmet.kod_predmeta=uspevaem.IdPredmet and uspevaem.IdOcenka=ocenka.Idocenka and ocenka.ocenka=:ocen and uspevaem.idspecial=specialnost.kod and specialnost.name=:special
 
 //кнопка сформировать
procedure TParametryForm.Button1Click(Sender: TObject);
begin
with AdoQuery2 do
begin
Close;
AdoQuery2.active:=false;
AdoQuery2.Parameters.ParamByName('DateNach').Value:=OtchetyForm.DateTimePicker1.Date;
AdoQuery2.Parameters.ParamByName('DateKon').Value:=OtchetyForm.DateTimePicker2.Date;
AdoQuery2.Parameters.ParamByName('Special').Value:=Combobox1.Text;
AdoQuery2.Parameters.ParamByName('ocen').Value:='не зачет';
Open;
AdoQuery2.active:=true;
//if AdoQuery2.RecordCount = 0 then ShowMessage('Записей за данный период нет!!!');
 
end;
Но это только по одному условию, а что делать если пользователь хочет вывести по всем специальностям и не будем выбирать содержимое combobox или захочет посмотреть список должников по конкретному курсу или группе... как далее писать выборку, все перепробывала писала условие if (Combobox1.Text<>'') and (Combobox2.Text='') and (Combobox3.Text='') then ... далее запрос
не воспринимает
albina73 вне форума Ответить с цитированием
Старый 21.12.2011, 11:35   #2
{Shadowevil}
Пользователь
 
Регистрация: 15.01.2009
Сообщений: 52
По умолчанию

Цитата:
Сообщение от albina73 Посмотреть сообщение
...по всем специальностям и не будем выбирать содержимое combobox...
вместо строчки
Код:
AdoQuery2.Parameters.ParamByName('Special').Value:=Combobox1.Text;
попробуй вставить это:

Код:
if ComboBox1.Text='' then
  AdoQuery2.Parameters.ParamByName('Special').Value:='Like ''%'''
 else
  AdoQuery2.Parameters.ParamByName('Special').Value:=Combobox1.Text;
возможно немного с апострофами напутать мог

Остальное, в принципе, можно сделать по подобию
{Shadowevil} вне форума Ответить с цитированием
Старый 21.12.2011, 12:19   #3
albina73
 
Регистрация: 21.12.2011
Сообщений: 4
По умолчанию

Спасибо))) Попробую))))
albina73 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выборка данных для отчета с группировкой smoky Microsoft Office Access 2 12.04.2011 22:13
Выборка данных для переноса на другой лист. Kot9ra Microsoft Office Excel 1 14.10.2010 22:05
Выборка данных segail Microsoft Office Excel 4 08.02.2010 16:37
Выборка данных ADRENALIN86 Microsoft Office Excel 1 13.08.2009 15:51
Создание запроса, выборка из 4 таблиц! help! angelkisss SQL, базы данных 3 03.02.2008 15:03