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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2011, 11:49   #1
pusik
Пользователь
 
Регистрация: 03.05.2011
Сообщений: 29
По умолчанию Условие на колонки таблицы

Есть таблица, созданная с помощью ADOQUery. Так вот, в ней есть калонка "Тип финансирования". (Бюджет или Внебюджет). И есть колонка "Итог" (в ней указывается число). Мне нужно поставить условие так, чтобы: Если Тип финансирования- Бюджет, то значение из колонки Итог, переносилось в колонку "Итого по бюджету", если имеет значение "Внебюджет", то итог переностся в колонку "Итог по внебюджету"
pusik вне форума Ответить с цитированием
Старый 17.05.2011, 12:29   #2
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Здравствуйте
Какая у Вас база данных?
Если у MS Access, можете прямо в запросе использовать фукцию IIF, иначе можно использовать поле Calculated и событие onCalFields в Вашем ADOQuery.
До свидания
OlegVE вне форума Ответить с цитированием
Старый 17.05.2011, 12:43   #3
pusik
Пользователь
 
Регистрация: 03.05.2011
Сообщений: 29
По умолчанию

Спасибо за предыдущую помощь)))
Да, база в Access. Можете подробнее об использовании IFF и поля calculated
pusik вне форума Ответить с цитированием
Старый 17.05.2011, 13:05   #4
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

1. MS Access - IIF
Код:
SELECT *, IIF(ВашеПолеСУсловиемБюджет=Бюджет,ВашеПолеИтог,0), IIF(ВашеПолеСУсловиемБюджет<>Бюджет,0,ВашеПолеИтог)
FROM ВашаТаблица
2. ADOQuery - Calculated - onCalFields
Дважды кликаете на ADOQuery. В открывшемся окошке добавляете поля, которые надо выводить и создаёте два новых поля Итог для Бюджета и Итог для ВнеБюджета, определяете их как Calculated. В событии onCalFields компонента ADOQuery пишете примерно следующее
Код:
...
 if ADOQuery.FieldByName('ВашеПолеСУсловиемБюджет').AsString = 'Бюджет'
...
и присваиваете значения своим полям Итог для Бюджета и Итог для ВнеБюджета.
OlegVE вне форума Ответить с цитированием
Старый 17.05.2011, 16:37   #5
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

См. личные сообщения.
OlegVE вне форума Ответить с цитированием
Старый 17.05.2011, 17:23   #6
pusik
Пользователь
 
Регистрация: 03.05.2011
Сообщений: 29
По умолчанию

Олег, проблема в том, что в этом коде я вообще ни чего не понимаю))) Это код был сформирован на автомате) поэтому проблема остается)
вот сам код:
Код:
SELECT Нагрузка.[Код преподавателя], [Данные о преподавателях].ФИО, [Учебный план].[Код группы], Группа.[Тип финансирования], Нагрузка.Курс, Нагрузка.Семестр, [Классификатор дисциплин].Наименование, [Распределение недель].[Количество недель], [По часам в неделю].[Часы обучения в неделю], [Распределение недель]![Количество недель]*[По часам в неделю]![Часы обучения в неделю] AS [Часов за семестр], [По часам на практику и теорию].[Часы на теорию], [По часам на практику и теорию].[Часы на практику], [По часам на практику и теорию].[Часы на практику с делением], [По часам на практику и теорию].[Часы на консультацию], [Учебный план]![Количество студентов]/3 AS Экзамен, [По форме контроля].Курсовой, [По форме контроля].[Проверка курсовой], [По форме контроля].Зачет, [По форме контроля].[Контрольная работа], [Часов за семестр]+[Часы на консультацию]+[Часы на практику с делением]+[Проверка курсовой]+[Курсовой]+[По форме контроля]![Деление курсов по подгруппам]+[Экзамен] AS Итого, ([Часов за семестр]+[Часы на консультацию]+[Часы на практику с делением]+[Проверка курсовой]+[Курсовой]+[По форме контроля]![Деление курсов по подгруппам]+[Экзамен])/100*3 AS [Снято 3%], [Итого]-([Часов за семестр]+[Часы на консультацию]+[Часы на практику с делением]+[Проверка курсовой]+[Курсовой]+[По форме контроля]![Деление курсов по подгруппам]+[Экзамен])/100*3 AS [В приказ]
FROM Группа INNER JOIN ([Распределение недель] INNER JOIN (([Данные о преподавателях] INNER JOIN ((((([Учебный план] INNER JOIN [По часам на практику и теорию] ON [Учебный план].[Код учебного плана] = [По часам на практику и теорию].[Код учебного плана]) INNER JOIN [По часам в неделю] ON [Учебный план].[Код учебного плана] = [По часам в неделю].[Код учебного плана]) INNER JOIN [По форме контроля] ON [Учебный план].[Код учебного плана] = [По форме контроля].[Код учебного плана]) INNER JOIN Нагрузка ON ([По часам на практику и теорию].Семестр = Нагрузка.Семестр) AND ([По часам на практику и теорию].Курс = Нагрузка.Курс) AND ([По форме контроля].Семестр = Нагрузка.Семестр) AND ([По форме контроля].Курс = Нагрузка.Курс) AND ([По часам в неделю].Семестр = Нагрузка.Семестр) AND ([По часам в неделю].Курс = Нагрузка.Курс) AND ([Учебный план].[Код учебного плана] = Нагрузка.[Код учебного плана]) AND ([По часам в неделю].[Код учебного плана] = Нагрузка.[Код учебного плана]) AND ([По часам в неделю].[Код дисциплины] = Нагрузка.[Код дисциплины]) AND ([По форме контроля].[Код учебного плана] = Нагрузка.[Код учебного плана]) AND ([По форме контроля].[Код дисциплины] = Нагрузка.[Код дисциплины]) AND ([По часам на практику и теорию].[Код учебного плана] = Нагрузка.[Код учебного плана]) AND ([По часам на практику и теорию].[Код дисциплины] = Нагрузка.[Код дисциплины])) INNER JOIN [Классификатор дисциплин] ON [По часам на практику и теорию].[Код дисциплины] = [Классификатор дисциплин].[Код дисциплины]) ON [Данные о преподавателях].[Код преподавателя] = Нагрузка.[Код преподавателя]) INNER JOIN [Состав дисциплин] ON ([Классификатор дисциплин].[Код дисциплины] = [Состав дисциплин].[Код дисциплины]) AND ([По форме контроля].[Код учебного плана] = [Состав дисциплин].[Код учебного плана]) AND ([По форме контроля].[Код дисциплины] = [Состав дисциплин].[Код дисциплины]) AND ([По часам в неделю].[Код учебного плана] = [Состав дисциплин].[Код учебного плана]) AND ([По часам в неделю].[Код дисциплины] = [Состав дисциплин].[Код дисциплины]) AND ([По часам на практику и теорию].[Код учебного плана] = [Состав дисциплин].[Код учебного плана]) AND ([По часам на практику и теорию].[Код дисциплины] = [Состав дисциплин].[Код дисциплины]) AND ([Учебный план].[Код учебного плана] = [Состав дисциплин].[Код учебного плана])) ON ([Распределение недель].Семестр = [По часам в неделю].Семестр) AND ([Распределение недель].Курс = [По часам в неделю].Курс) AND ([Распределение недель].[Код учебного плана] = [По часам в неделю].[Код учебного плана]) AND ([Распределение недель].[Код учебного плана] = [Учебный план].[Код учебного плана])) ON Группа.[Код группы] = [Учебный план].[Код группы]
WHERE ((([Данные о преподавателях].ФИО)=[]));

Последний раз редактировалось Stilet; 17.05.2011 в 18:03.
pusik вне форума Ответить с цитированием
Старый 18.05.2011, 12:54   #7
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Здравствуйте
1. Не понятно что это у Вас конечный код.
Код:
...
WHERE ((([Данные о преподавателях].ФИО)=[]));...
Я Вам предлагал следующее
Код:
...
WHERE ((([Данные о преподавателях].ФИО=:FIO));
...
2. Без самой БД очень долго разбираться с таким запросом... тем более что в запросе отсутствует колонка (поле) "Тип финансирования", хотя Вы изначально его упоминали и нет поля Итог, а есть Итого (последнее имя я и использовал).
Могу только дать пару предложения:
а) Включите таблицу с полем [Тип финансирования] в Ваш запрос. Но, раз Вы создаёте таблицу с этим полем через ADOQUery, то для того, чтобы испытать Ваш запрос в MS Accecc Вам придётся эту таблицу добавить прямо в MS Accecc и там отладить запрос.
б) Примечание: синим отмечено то, что у Вас есть
Код:
SELECT КучаВашихПолеЧерезЗапятую, IIF(ТаблицаВКоторойПолеСУсловием.[Тип финансирования]="Бюджет",[Итого],0) AS [Итого по бюджету], IIF(ТаблицаВКоторойПолеСУсловием.[Тип финансирования]="Внебюджет",0,[Итого]) AS [Итог по внебюджету]
FROM Группа INNER JOIN ([Распределение нед...
До свидания
OlegVE вне форума Ответить с цитированием
Старый 21.05.2011, 04:14   #8
pusik
Пользователь
 
Регистрация: 03.05.2011
Сообщений: 29
По умолчанию

Fio я уже подставил) ЗА это спасибо)) а по поводу запроса счас испытаю)
pusik вне форума Ответить с цитированием
Старый 21.05.2011, 04:47   #9
pusik
Пользователь
 
Регистрация: 03.05.2011
Сообщений: 29
По умолчанию

Олег спасибо огромное)))) Правда ошибка есть в коде, вот рабочий вариант:
IIF(Группа.[Тип финансирования]="Бюджет",[Итого],0) AS [Итого по бюджету], IIF(Группа.[Тип финансирования]="Внебюджет",[Итого],0) AS [Итог по внебюджету]
pusik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access ограничить значение поля таблицы значениями полей другой таблицы Сергей089 Microsoft Office Access 10 08.12.2010 02:22
Загрузить уникальные значения колонки таблицы в Combobox Akemi БД в Delphi 2 07.06.2010 13:41
Печать таблицы в две колонки mclennon Microsoft Office Excel 4 06.06.2010 00:48
Подскажите как можно сравнить 2 таблицы или колонки andrew_v_k Microsoft Office Excel 2 10.08.2009 11:56
Данные из двух полей исх. таблицы в одно поле сводной таблицы Strelec79 Microsoft Office Excel 2 02.08.2009 13:59