Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
32 / 1 / 1
Регистрация: 07.12.2016
Сообщений: 160

Использованием навигационного подхода без применения SQL запросов

25.12.2016, 00:03. Показов 862. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Разработать клиентское приложение, которое должно содержать несколько вкладок. Каждая из вкладок предназначена для представления результатов выполнения отдельного задания. Все реализовать с использованием навигационного
подхода без применения SQL запросов.

Задание
1. Добавить информацию о новом товаре.
2. Уменьшить цену всех товаров изменив цену товара в связи с
сезонными скидками в соответствии со следующей таблицей:
Цена товара___Скидка
< 100_________10%
100..1000______20%
> 1000________30%
3. Удалить информацию о заданном товаре.
4. Уменьшать стоимость всех товаров на 10%, пока средняя
стоимость всех товаров не станет меньше 100 рублей.
5. Вывести список всех поставок с указанием названия товара,
цены, количества и суммы поставки с использованием вычисляемых
полей и Lookup-полей.

Не прошу сделать за меня прошу всего лишь пояснить или показать в качестве примера. Например как это добавить информацию о новом товаре с использованием навигационного подхода? Это что использовать DBNavigator? Или как то еще?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.12.2016, 00:03
Ответы с готовыми решениями:

Данные из Edit в DBGrid. Без запросов SQL
Создаю довольно примитивную программу и зависла в парочке моментов! Надеюсь тут мне помогут! Дело вот в чем! На одной форме у меня...

Можно ли в конструкторе запросов создавать предикаты без набора SQL текста?
Вставляю предикаты ALL, DISTINCT... и объединения UNION, LEFT JOIN, RIGHT JOIN... вручную после конструирования основного тела запроса...

Посчитать разницу 2 столбцов из разных dbgrid Без использования SQL запросов
Есть 2 таблицы dbgrid при добавлении значения или редактирования строки d 1 dbgrid, нужно чтобы в другом dbgrid выводилась разница.....

14
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
25.12.2016, 02:12
Цитата Сообщение от ИвановБ Посмотреть сообщение
Например как это добавить информацию о новом товаре с использованием навигационного подхода?
Такие тонкости у составителя задания надо было выяснять?
Цитата Сообщение от ИвановБ Посмотреть сообщение
Это что использовать DBNavigator?
Можно и его, или DBGrid
0
32 / 1 / 1
Регистрация: 07.12.2016
Сообщений: 160
25.12.2016, 13:33  [ТС]
Так разобрался как добавить запись с использованием навигационного подхода в ADOTable.
Кто-нибудь подскажет как реализовать 2 и 4 пример? алгоритм никак не соображу? Без SQL-запросов напрямую через ADOTTable?
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
25.12.2016, 14:01
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  ADOTable1.First;
  while not ADOTable1.EOF do begin
    ADOTable1.Edit;
    if ADOTable1.FieldByName('Price').AsCurrency < 100 then
      ADOTable1.FieldByName('Price').AsCurrency :=
      0.9 * ADOTable1.FieldByName('Price').AsCurrency
    else if ADOTable1.FieldByName('Price').AsCurrency > 1000 then
      ADOTable1.FieldByName('Price').AsCurrency :=
      0.7 * ADOTable1.FieldByName('Price').AsCurrency
    else
      ADOTable1.FieldByName('Price').AsCurrency :=
      0.8 * ADOTable1.FieldByName('Price').AsCurrency;
    ADOTable1.Post;
    ADOTable1.Next;
  end;
только помни, каждое нажатие кнопки будет приводить к начислению новых скидок и для п.4 не останется высоких цен
0
32 / 1 / 1
Регистрация: 07.12.2016
Сообщений: 160
25.12.2016, 14:14  [ТС]
YuryK, ну а все таки если цены по стандарту для 4 пункта?

И еще такой вопрос как удалить запись из ADOTable по введенному полю например код товара? По инету лазил там везде удаляется целиком таблица или по курсору.
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
25.12.2016, 14:23
Цитата Сообщение от ИвановБ Посмотреть сообщение
по введенному полю например код товара?
так надо встать на той записи, которую удалить собираешься (это и будет заданный товар) и ADOTable1.Delete
Цитата Сообщение от ИвановБ Посмотреть сообщение
для 4 пункта
сначала по всей таблице посчитать среднюю цену
аотом пока средняя цена > 100 eв цикле по всей таблице уменьшать на 10 % (точно уверен, что и средняя уменьшится на 10), так что можно сразу посчитать на сколько процентов надо уменьшить, а не по 10% за каждый цикл снижать.
0
32 / 1 / 1
Регистрация: 07.12.2016
Сообщений: 160
25.12.2016, 18:34  [ТС]
YuryK, Юрий не подскажите в чем проблема вычисляю сумму поставок в Lookup-поле, но почему вычисление идет неправильно вот.
Delphi
1
2
3
4
   with DM.ADOTableBD1 do
begin
ADOTableBD1.FieldByName('Сумма').AsFloat:=(DM.ADOTableBD.FieldByName('ЦенаТовара').AsInteger)*(ADOTableBD1.FieldByName('ОбъемПоставокШт').AsInteger);
end;
И еще не подскажите как в таком же виде посчитать кол-во поставок? То есть к примеру товар поставлялся 2 раза и должен указываться товар и его кол-во 2. Пробовал аналогично (выше код) только с COUNT, но он судя по всему тут не работает.
Миниатюры
Использованием навигационного подхода без применения SQL запросов  
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
26.12.2016, 01:05
Цитата Сообщение от ИвановБ Посмотреть сообщение
Юрий не подскажите в чем проблема вычисляю сумму поставок в Lookup-поле, но почему вычисление идет неправильно вот
Самое главное вы опустили, где (в каком обработчике) этот код написан.

З.Ы. и при чем здесь Lookup-поле? Здесь должно быть вычислимое поле. Для Lookup-полей нужно иметь как минимум пару таблиц, ИМХО. Наверное, поставки и должны быть в другой таблице и тогда для показа названия товара lookup поля и пригодятся.

Структуру таблиц хоть покажите.
0
32 / 1 / 1
Регистрация: 07.12.2016
Сообщений: 160
26.12.2016, 10:49  [ТС]
YuryK, Вот само задание

Вывести список всех поставок с указанием названия товара,
цены, количества и суммы поставки с использованием вычисляемых
полей и Lookup-полей.
Миниатюры
Использованием навигационного подхода без применения SQL запросов   Использованием навигационного подхода без применения SQL запросов  
0
32 / 1 / 1
Регистрация: 07.12.2016
Сообщений: 160
26.12.2016, 13:47  [ТС]
Цитата Сообщение от YuryK Посмотреть сообщение
(в каком обработчике)
Delphi

Добавлено через 2 часа 2 минуты
Да и сумма у меня не в Lookup-поле, а в вычислительном. Это я в посте 7 напутал.

Добавлено через 54 минуты
Ну с сумой разобрался переделал процедуру так
Delphi
1
2
3
4
5
begin
   with DM.ADOTableBD1 do
begin
ADOTableBD1.FieldByName('Сумма').AsCurrency:=ADOTableBD1.FieldByName('Цена товара').AsCurrency*ADOTableBD1.FieldByName('ОбъемПоставокШт').AsInteger;
end;
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
26.12.2016, 15:35
Цитата Сообщение от ИвановБ Посмотреть сообщение
переделал процедуру так
Еще раз повторяю, самое ценное и важное в какой именно процедуре. Это должно быть в обработчике ADOTableBD1.OnCalcFilds(DataSet: TDataSet); и быть несколько "проще", т.е. использовать параметр DataSet, а не явно ADOTableBD1:

DataSet.FieldByName('Сумма').AsCurrency: =DataSet.FieldByName('Цена товара').AsCurrency*DataSet.FieldByName( 'ОбъемПоставокШт').AsInteger;
end;

Кат-то сомнительно, что РАЗНЫЕ поставщики пусть даже и одного и того же товара пудут поставлять продукцию по ОДИНАКОВОЙ цене. Боле того, я полагаю, что цены, на которые мы делаем скидки во 2 и 4 примерах, это отпускные цены, а цены по которым поставляет поставщик несколько ниже, оттуда и наша "щедрость". Но это чисто мое ИМХО
0
32 / 1 / 1
Регистрация: 07.12.2016
Сообщений: 160
26.12.2016, 16:07  [ТС]
YuryK,
Цитата Сообщение от YuryK Посмотреть сообщение
Кат-то сомнительно, что РАЗНЫЕ поставщики пусть даже и одного и того же товара пудут поставлять продукцию по ОДИНАКОВОЙ цене. Боле того, я полагаю, что цены, на которые мы делаем скидки во 2 и 4 примерах, это отпускные цены, а цены по которым поставляет поставщик несколько ниже, оттуда и наша "щедрость".
Это не столь важно.

Цитата Сообщение от YuryK Посмотреть сообщение
Это должно быть в обработчике ADOTableBD1.OnCalcFilds
Да именно там. Но я говорю с суммой разобрался а вот с количеством никак.

Добавлено через 1 минуту
И вообще можно ли реализовать, сделать так что бы в эту таблицу с одинаковыми названиями товара выводилась кол-во поставок и общая сумма этих поставок?
То есть 2 поставки микроволновой печи были записаны в одной строке с указанием кол-ва(то есть цифра 2) и общей суммы.
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
26.12.2016, 16:12
Цитата Сообщение от ИвановБ Посмотреть сообщение
Это не столь важно.
да ну! Важно, цена - это атрибут в поставках , или цена есть только в Товарах, а в поставках только количество

Добавлено через 33 секунды
Ты на 100 процентов уверен, что структура у тебя соответствует заданию?

Добавлено через 35 секунд
Она была дана как данность? Или это твоя придумка?
0
32 / 1 / 1
Регистрация: 07.12.2016
Сообщений: 160
26.12.2016, 23:37  [ТС]
YuryK,
Цитата Сообщение от YuryK Посмотреть сообщение
цена есть только в Товарах, а в поставках только количество
Цитата Сообщение от YuryK Посмотреть сообщение
Ты на 100 процентов уверен, что структура у тебя соответствует заданию?
Нет на 100% не уверен так как Бд составлял сам были указаны лишь пару таблиц.

Добавлено через 6 часов 34 минуты
YuryK, Ну так что не подскажите как подсчитать вычисляемое поле кол-во?
То есть товар печь к примеру поставлялась 2 раза с разным объемом и суммой поставки и вот нужно что бы в поле кол-во считалось сколько раз эта печь поставлялась то есть (2 раза) и желательно что бы еще поле сумма у них суммировалась. В SQL-запросе знаю как сделать а в обработчики
Delphi
1
ADOTableBD1.OnCalcFilds(DataSet: TDataSet);
не получается.
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
26.12.2016, 23:50
Цитата Сообщение от ИвановБ Посмотреть сообщение
Вывести список всех поставок с указанием названия товара,
цены, количества и суммы поставки с использованием вычисляемых
полей и Lookup-полей.
здесь не надо ничего "складывать": если "печь к примеру поставлялась 2 раза с разным объемом и суммой поставки", то обе поставки и показать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.12.2016, 23:50
Помогаю со студенческими работами здесь

можно ли реализовать клиент сервер базы в одном компьютере а формы в =) (другом городе) в другом компьютере без применения sql и vb net
можно ли реализовать клиент сервер базы в одном компьютере а формы в =) (другом городе) в другом компьютере.. без применения sql и vb...

Запуск нескольких запросов на обновление кодом VBA (часть запросов пустые т.е. без отобранных записей)
Форумчане, доброго времени суток! Прошу Вашей помощи! есть таблица со списком Заказчиков. Этот список пополняют несколько человек,...

Без применения регулярных выражений
Нужна срочно помощь.Задание сделала,но преподователю не понравилось с формулировкой:-&quot;Этого не было в нашей образовательной...

Как можно получить код SQL-запросов из лога транзакций ldf MS SQL Server2k?
Хая! Это вообще возможно??

Вычислить предел без применения Лопиталя
К сожалению не получается вычислить при помощи кубической фомулы, как требуется, буду рада получить помощь в виде подробного решения ! ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка 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 и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru