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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2012, 21:13   #1
Gallardo161
 
Регистрация: 05.07.2012
Сообщений: 5
По умолчанию Запрос.

Добрый день. Помогите пожалуйста написать запрос. На обновление одной колонки. Обновить ее нужно следующим образом. Сначала отделить два последних знака. Потом всю колонку умножить на 1,18. Потом нужно обновлять колонку если число меньше 1 то на один множитель если меньше 2 то на другой если меньше 3 то на другой. И таких условий около 10. Помогите пожалуйста IT-ник в отпуске, а прайс надо делать срочно.
Gallardo161 вне форума Ответить с цитированием
Старый 05.07.2012, 23:36   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Gallardo161.
Даже самое замечательное описание проблемы не поможет Вам решить задачу.
нужен образец и точные условия, "..меньше 2 то на другой.." не подойдет.

Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 07.07.2012, 04:36   #3
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

Речь идёт не о вычислении "Контрольного числа"?
Андрэич вне форума Ответить с цитированием
Старый 09.07.2012, 14:28   #4
Gallardo161
 
Регистрация: 05.07.2012
Сообщений: 5
По умолчанию

Добрый день. Дело обстоит так. Это прайс лист. Приходит в виде MDB файла. В нем есть колонка с ценой. Цена не разделена запятой. То есть 23566. Где два последних знака это копейки. Поле того как разделили все запятой. Нужно все умножить на НДС. Томом в зависимости от цены на наценку. Правила Выглядят так.

Цена больше чем (лок. вал.) Множитель
0 ( 3)
30,69 (2,3)
309,69 (1,75)
1549,69 ( 1,6)
3099,69 (1,45)
6199,69 (1,4)
15499,69 (1,3)
21699,69 (1,1)
30999,69 ( 1)
Имя столбца NEW Имя Таблицы TEILE_EXPORT
Ecxel не предлагать строк 700 тыс.
Gallardo161 вне форума Ответить с цитированием
Старый 09.07.2012, 15:20   #5
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

Вы случайно не это имеете ввиду?
Код:
if(s>30999,69;s/100*1,2*1;if(s>21699,69;s/100*1,2*1,1;if(s>15499,69;s/100*1,2*1,3;if(s>6199,69;s/100*1,2*1,4;if(s>3099,69;s/100*1,2*1,45;if(s>1549,69;s/100*1,2*1,6;if(s>309,69;s/100*1,2*1,75;if(s>30,69;s/100*1,2*2,3;s/100*1,2*3)))))))));
s меняем на [имя таблицы]![имя поля]
gluk_fm вне форума Ответить с цитированием
Старый 10.07.2012, 08:56   #6
Gallardo161
 
Регистрация: 05.07.2012
Сообщений: 5
По умолчанию

Добрый день. gluk_fm Огромное спасибо. Вы мне очень помогли. Только стыдно признается. Куда это вводить? В режиме SQL или Макроса? И нужна ли команда Update да обновление ячейки в существующей таблице. Как будет выглядеть конечная строка в таком случае? И Я так понимаю что 1,2 стоит заменить на 1,18?
Gallardo161 вне форума Ответить с цитированием
Старый 10.07.2012, 19:11   #7
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Gallardo161.
Огорчу Вас, но предложенная gluk_fm конструкция верна только структурно, но из-за синтаксических ошибок
не может быть работоспособна в принципе.
Вашу задачу, без IT-ника который в отпуске, проще (и думаю правильнее) решать с применением пользовательской функции.
Для этого:
1. в БД (базе данных) создайте модуль VBA
2. сохраните его (имя может быть любым)
3. поместите в модуль следующий код:
Код:
Public Function showPrice#(v)
Const NDS = 1.18
Dim v1, i#
If Not IsNumeric(v) Then Exit Function
v = CDbl(v)
Select Case v
Case Is > 3099969: i = 1
Case Is > 2169969: i = 1.1
Case Is > 1549969: i = 1.3
Case Is > 619969: i = 1.4
Case Is > 309969: i = 1.45
Case Is > 154969: i = 1.6
Case Is > 30969: i = 1.75
Case Is > 3069: i = 2.3
Case Else: i = 3
End Select
showPrice = v / 100 * NDS * i
End Function
4. запустите конструктор для создания запросов (как запустить зависит от версии MS Access надеюсь разберётесь)
5. откажитесь от добавления таблиц - закройте окно.
6. правым кликом переключите конструктор в SQL режим
7. поместите в поле открывшегося SQL редактора следующую строку:
Код:
SELECT * CCur(showPrice([NEW])) AS Правильная_Цена FROM TEILE_EXPORT
подразумевается что таблица с исходными данными называется TEILE_EXPORT, а поле с данными которые необходимо
преобразовать называется NEW, если это не так - замените в SQL конструкции эти имена реальными.

Надеюсь у Вас всё получится.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 11.07.2012, 11:53   #8
Gallardo161
 
Регистрация: 05.07.2012
Сообщений: 5
По умолчанию

Teslenko_EA добрый день. Сделал все как вы сказали. Не получается проверил правильность написания имен таблицы и столбцов. Ответ При попытке запустить запрос Ошибка в синтаксисе оператора в выражении запроса CCur(showPrice([NEW])))
Gallardo161 вне форума Ответить с цитированием
Старый 11.07.2012, 11:56   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Ошибка в синтаксисе оператора в выражении запроса CCur(showPrice([NEW])))
Цитата:
а поле с данными которые необходимо
преобразовать называется NEW, если это не так - замените в SQL конструкции эти имена реальными.
Вы не забыли заменить имена РЕАЛЬНЫМИ?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.07.2012, 10:50   #10
Gallardo161
 
Регистрация: 05.07.2012
Сообщений: 5
По умолчанию

Сергей добрый день. Проверенно мной не однократно копирую из буфера обмена. Менял на цифры вместо названий. Ошибка с в синтаксисе оператора.
Gallardo161 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос на выборку и отчет на этот запрос Camelot_2012 Microsoft Office Access 2 21.12.2011 16:48
Запрос DrozdNik Microsoft Office Excel 2 15.02.2011 08:55
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
запрос ссылается на несвязанный с ним запрос kolebatel SQL, базы данных 0 11.06.2008 12:50