Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.79/14: Рейтинг темы: голосов - 14, средняя оценка - 4.79
4 / 4 / 0
Регистрация: 23.01.2013
Сообщений: 167

Запросы: отчет по сотруднику в указанный интервал времени

30.04.2013, 00:16. Показов 2886. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята можете помочь. Вот делаю проект в С++ builder,


Вот для комбобокс прописал код:
C++
1
2
3
4
5
6
7
8
9
Form1->ADOTable1->Filtered=false;
sComboBox1->Items->Clear();
Form1->ADOTable1->First();
for (int i=0; i<Form1->ADOTable1->RecordCount; i++)
 
{
sComboBox1->Items->Add(Form1->ADOTable1->Fields->Fields[1]->AsString);
Form1->ADOTable1->Next();
}
Для даты сделал запрос
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Form1->ADOQuery2->SQL->Clear();
Form1->ADOQuery2->SQL->Text="SELECT Vipoln.Kod_vipoln, Vipoln.Data, Vipoln.Tab_nomer, Vipoln.Kod_detali, Vipoln.[Kol-vo] FROM Vipoln WHERE Vipoln.Data Between :time1 And :time2";
Form1->ADOQuery2->Parameters->ParamByName("time1")->Value=sDateEdit1->Date.DateString();
Form1->ADOQuery2->Parameters->ParamByName("time2")->Value=sDateEdit2->Date.DateString();
 
Form1->ADOQuery2->Open();
if (Form1->ADOQuery2->RecordCount==0)
{Application->MessageBoxA("По заданному интервалу ничего не найдено!","Внимание",MB_OK);
Form1->DataSource3->DataSet=Form1->ADOTable3;
}
else
{Form1->DataSource3->DataSet=Form1->ADOQuery2;
}
И что я хотел собственно, чтобы я выбрал сотрудника в комбобокс и указал интервал времени и потом щелкал на кнопку отчет, и чтобы он выдавал отчет по сделанной работе этого сотрудника в указанный интервал времени. Как это можно сделать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.04.2013, 00:16
Ответы с готовыми решениями:

Определить, входит ли текущее время в указанный интервал времени
Здравствуйте! Нужно определить или текущее время входит в указанный интервал времени. Делаю от 00:00:00 до 23:00:00 Проблема...

Табель рабочего времени: получить отчет по сотруднику в виде таблицы с полями: день, сумма
здравствуйте, помогите пожалуйста с чего начать, есть табель рабочего времени, в табеле отмечается день и статус дня(рабочий, выходной)...

Генерация процессов через указанный интервал времени
Подскажите, как правильно составить блок кода на С, использовав fork(), чтобы через 2 с генерировалось 5 процессов, которые останавливались...

27
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
04.05.2013, 00:38
Студворк — интернет-сервис помощи студентам
Didilom, наверное, можно как-то по уму сделать, но вот мой вариант:

SQL
1
2
3
4
SELECT SUM ([Общее количество]) AS ЗарплатаИвановаЗаАпрель FROM (SELECT Detal.Kod_detali, Detal.Stoimost * SUM (Vipolnenie.[Kol-vo])  AS [Общее количество]
FROM Vipolnenie, Detal, Sotrudniki
WHERE Vipolnenie.Kod_detali = Detal.Kod_detali AND Vipolnenie.Tab_nomer = Sotrudniki.Tab_nomer AND Sotrudniki.Famil = 'Иванов' AND Vipolnenie.Data BETWEEN #04/01/2013# AND #04/30/2013#
GROUP BY Detal.Kod_detali, Detal.Stoimost)
- проверяйте в Акцессе.
0
4 / 4 / 0
Регистрация: 23.01.2013
Сообщений: 167
04.05.2013, 00:51  [ТС]
The_Immortal, спасибо,я проверил все работает. А можете сделать чтобы в одном столбце фамилия была, а в другом сумма? Но с этого запроса я постараюсь кое что взять в отчет.
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
04.05.2013, 05:26
Didilom,
Цитата Сообщение от Didilom Посмотреть сообщение
А можете сделать чтобы в одном столбце фамилия была, а в другом сумма?
Пожалуйста:
SQL
1
2
3
4
5
SELECT Sotrudniki.Famil, SUM ([Общее количество]) AS ЗарплатаИвановаЗаАпрель
FROM (SELECT  Sotrudniki.Famil, Detal.Stoimost * SUM (Vipolnenie.[Kol-vo])  AS [Общее количество]
FROM Vipolnenie, Detal, Sotrudniki
WHERE Vipolnenie.Kod_detali = Detal.Kod_detali AND Vipolnenie.Tab_nomer = Sotrudniki.Tab_nomer AND Sotrudniki.Famil = 'Иванов' AND Vipolnenie.Data BETWEEN #04/01/2013# AND #04/30/2013#
GROUP BY  Sotrudniki.Famil, Detal.Kod_detali, Detal.Stoimost) GROUP BY Sotrudniki.Famil
0
4 / 4 / 0
Регистрация: 23.01.2013
Сообщений: 167
04.05.2013, 11:21  [ТС]
The_Immortal, а почему, когда я проверяю запрос в accesse, он все выдает как положено. А как закинул в с++ ->Sql, он мне выдает ошибку

Убираю скобки перед Select или ставлю круглые, дает другую ошибку

а там вроде все норма ?
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
04.05.2013, 15:14
Didilom, работает:

C++
1
2
3
4
5
6
7
8
9
10
11
Form1->ADOQuery1->Close();
Form1->ADOQuery1->SQL->Clear();
Form1->ADOQuery1->SQL->Add("SELECT SUM ([Общее количество]) AS ЗарплатаИвановаЗаАпрель FROM (SELECT Detal.Kod_detali, Detal.Stoimost * SUM (Vipolnenie.[Kol-vo])  AS [Общее количество]  \
FROM Vipolnenie, Detal, Sotrudniki \
WHERE Vipolnenie.Kod_detali = Detal.Kod_detali AND Vipolnenie.Tab_nomer = Sotrudniki.Tab_nomer AND Sotrudniki.Famil = :lastname AND Vipolnenie.DATA BETWEEN :time1 AND :time2  \
GROUP BY Detal.Kod_detali, Detal.Stoimost)");
Form1->ADOQuery1->Parameters->ParamByName("lastname")->Value=Edit1->Text;
Form1->ADOQuery1->Parameters->ParamByName("time1")->Value=DateTimePicker1->Date.DateString();
Form1->ADOQuery1->Parameters->ParamByName("time2")->Value=DateTimePicker2->Date.DateString();
 
Form1->ADOQuery1->Open();
Миниатюры
Запросы: отчет по сотруднику в указанный интервал времени  
0
4 / 4 / 0
Регистрация: 23.01.2013
Сообщений: 167
04.05.2013, 17:29  [ТС]
The_Immortal, вы это прислали первый код запроса
SQL
1
2
3
4
SELECT SUM ([Общее количество]) AS ЗарплатаИвановаЗаАпрель FROM (SELECT Detal.Kod_detali, Detal.Stoimost * SUM (Vipolnenie.[Kol-vo])  AS [Общее количество]
FROM Vipolnenie, Detal, Sotrudniki
WHERE Vipolnenie.Kod_detali = Detal.Kod_detali AND Vipolnenie.Tab_nomer = Sotrudniki.Tab_nomer AND Sotrudniki.Famil = 'Иванов' AND Vipolnenie.DATA BETWEEN #04/01/2013# AND #04/30/2013#
GROUP BY Detal.Kod_detali, Detal.Stoimost)
я вам про второй говорил, вот этот
SQL
1
2
3
4
5
SELECT Sotrudniki.Famil, SUM ([Общее количество]) AS ЗарплатаИвановаЗаАпрель
FROM (SELECT  Sotrudniki.Famil, Detal.Stoimost * SUM (Vipolnenie.[Kol-vo])  AS [Общее количество]
FROM Vipolnenie, Detal, Sotrudniki
WHERE Vipolnenie.Kod_detali = Detal.Kod_detali AND Vipolnenie.Tab_nomer = Sotrudniki.Tab_nomer AND Sotrudniki.Famil = 'Иванов' AND Vipolnenie.DATA BETWEEN #04/01/2013# AND #04/30/2013#
GROUP BY  Sotrudniki.Famil, Detal.Kod_detali, Detal.Stoimost) GROUP BY Sotrudniki.Famil
Добавлено через 2 минуты
Я хотел чтобы я не одного сотрудника и дату выбирал, а дату выбрал просто, зарплату он сразу всем сотрудникам посчитал

Добавлено через 43 минуты
The_Immortal, а какая тут может быть ошибка
SQL
1
2
3
4
5
SELECT Sotrudniki.Famil, SUM ([Общее количество]) AS ЗарплатаИвановаЗаАпрель
FROM (SELECT  Sotrudniki.Famil, Detal.Stoimost * SUM (Vipolnenie.[Kol-vo])  AS [Общее количество]
FROM Vipolnenie, Detal, Sotrudniki
WHERE Vipolnenie.Kod_detali = Detal.Kod_detali AND Vipolnenie.Tab_nomer = Sotrudniki.Tab_nomer AND Sotrudniki.Famil = 'Иванов' AND Vipolnenie.DATA BETWEEN #04/01/2013# AND #04/30/2013#
GROUP BY  Sotrudniki.Famil, Detal.Kod_detali, Detal.Stoimost) GROUP BY Sotrudniki.Famil
что она мне выдает такие ошибки?
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
04.05.2013, 17:39
Didilom,
Цитата Сообщение от Didilom Посмотреть сообщение
вы это прислали первый код запроса
Цитата Сообщение от Didilom Посмотреть сообщение
я вам про второй говорил
- ага попутал, но его (второго) структура для Jet тоже должна быть понятна.


Цитата Сообщение от Didilom Посмотреть сообщение
Я хотел чтобы я не одного сотрудника и дату выбирал, а дату выбрал просто, зарплату он сразу всем сотрудникам посчитал
В свойстве SQL компонента ADOQuery3 пишете:
SQL
1
SELECT Sotrudniki.Famil, SUM ([Общее количество]) AS ЗарплатаИвановаЗаАпрель FROM (SELECT Sotrudniki.Famil, Detal.Stoimost * SUM (Vipolnenie.[Kol-vo])  AS [Общее количество]  FROM Vipolnenie, Detal, Sotrudniki WHERE Vipolnenie.Kod_detali = Detal.Kod_detali AND Vipolnenie.Tab_nomer = Sotrudniki.Tab_nomer AND Vipolnenie.Data BETWEEN :time1 AND :time2 GROUP BY Sotrudniki.Famil, Detal.Kod_detali, Detal.Stoimost) GROUP BY Sotrudniki.Famil
На кнопку:
C++
1
2
3
4
5
6
    Form1->ADOQuery3->Close( );
    Form1->ADOQuery3->Parameters->ParamByName( "time1" )->Value =
        sDateEdit1->Date.DateString( );
    Form1->ADOQuery3->Parameters->ParamByName( "time2" )->Value =
        sDateEdit1->Date.DateString( );
    Form1->ADOQuery3->Open( );
На всякий случай форматирование:





Результат:

0
4 / 4 / 0
Регистрация: 23.01.2013
Сообщений: 167
04.05.2013, 23:47  [ТС]
В свойстве SQL компонента ADOQuery3 пишете:
Код SQL
SQL
1
SELECT Sotrudniki.Famil, SUM ([Общее количество]) AS ЗарплатаИвановаЗаАпрель FROM (SELECT Sotrudniki.Famil, Detal.Stoimost * SUM (Vipolnenie.[Kol-vo]) *AS [Общее количество] *FROM Vipolnenie, Detal, Sotrudniki WHERE Vipolnenie.Kod_detali = Detal.Kod_detali AND Vipolnenie.Tab_nomer = Sotrudniki.Tab_nomer AND Vipolnenie.DATA BETWEEN :time1 AND :time2 GROUP BY Sotrudniki.Famil, Detal.Kod_detali, Detal.Stoimost) GROUP BY Sotrudniki.Famil
The_Immortal, А до этого который там был SQL мне удалить. Или просто его дописать, ведь у меня уже там есть код
SQL
1
SELECT Sotrudniki.Famil, Vipolnenie.DATA, Detal.Name_detal, Vipolnenie.[Kol-vo]  FROM Sotrudniki, Vipolnenie, Detal WHERE Sotrudniki.Tab_nomer = Vipolnenie.Tab_nomer AND Vipolnenie.Kod_detali = Detal.Kod_detali AND Sotrudniki.Famil = :lastname AND Vipolnenie.DATA BETWEEN :time1 AND :time2
Добавлено через 1 час 5 минут
The_Immortal, то что до этого писал не обращайте внимание, я справился с этой задачей. Сделал то что предложили все также, только он мне в отчете почему выдает только фамилие и сумму только одного сотрудника (Голованов). А в accesse выдает всех сотрудников. Из за чего так может быть?

Добавлено через 15 минут
И я не знаю почему , когда я указываю дату (первую и вторую) он мне не все детали мои считает. Одни и те же даты в программе он мне выдает сумму 1020,35 - а в Accesse 2004,60/
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.05.2013, 23:47
Помогаю со студенческими работами здесь

Выдавать сообщение через интервал времени, указанный в TextBox
Даны textbox1,2 и 1 timer1. в textbox1 задается начальное время а в textbox2 минуты. Надо чтобы timer1 выводил msgbox() каждые...

Отчет за указанный период времени QuickReport
Помогите пожалуйста разобраться с ошибкой при нажатии Кнопки Отчет. Выскакивает такая ошибка.Вот код программыprocedure...

Отчет по выбранному сотруднику
Лабораторная работа. Считаю зар.плату сотрудникам. Есть отчет, который выводит список всех сотрудников и их зар.платы, можно ли как то...

Написать программу, которая преобразует введен в минутах интервал времени в интервал в часах и минутах
3. Написать программу, которая преобразует введен в минутах интервал времени в интервал в часах и минутах.

Определить, сколько будет времени через заданный интервал времени
Текущее показание электронных часов: m часов, n минут и k секунд. Какое время будут показывать часы через p ч q мин и r c? Помогите,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru