|
|
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
Привет народ! Есть одна проблема. Дело вот в чем. Есть таблица: Контрагент, Товар, Завод, Цена. Поля таблицы говорят сами за себя. ;-) Это и есть справояник цен на товары. Для некоторых контрагентов цена отличается от той цены, что есть в прайс-листе, т.е. у них может быть скидка. В этом справочнике все это отражено. И есть несколько записей, где поле контрагент Null, т.е. это и есть официальный прайс-лист. Это цена для всех остальных заказчиков, у которых нет ни скидок и нет договоренностей с руководством. Задача и основная проблема состоит в том, что необходимо корректно подставлять цены из справочника в форму для ввода накладных. Т.е. если у контрагента определена цена по данному товару и данному производству, должна подставляться именно она. Если ее нет в справочнике, то берется цена из той же таблицы, но только поле контрагент пустое, а товар и завод тот же.вот как собственно это реализовать??? Пока у меня сделана только подстановка цены, если есть какие-то договоренности. Сделан запрос, и на этот запрос повешана форма, т.е. при вводе накладной, вводится контрагент, товар, завод и как только фокус получает поле "Цена" идет макрос, который открывает вот ту самую форму, основанную на запросе и подставляет цену. Но если такого контрагента там нет, то возвращается ошибка и цену надо вводить вручную, что не удобно и не правильно. В этом случае должна подставляться цена из прайс-листа, где контрагент Null. Если кто чего понял, то объясните, плиз, убогому. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 15:51 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
Я ничего не понял, но предлагаю так: where контрагент=заданный or контрагент is null order by контрагент desc и брать значение из первой записи. Если есть запись с контрагентом (знать бы, что это такое...), то первой будет она, а если нет, то с null'ом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 15:57 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
Саныч, ну что ты как маленький? Контрагент - это же Нео. Он борется с агентами. 2 TRoUbLEs Я тоже не понял проблемы. Ты же все описал по русски как надо сделать. Вот теперь переведи это на английский и подкорректируй синтаксис, чтобы оно в ограничения VBA и SQL влезло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 16:02 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
Лох, я шутку оценил, но я не знаю, кто такой Нео. Догадываюсь, что это какой-то персонаж из того, что идет по российскому телевидению, которое в Израиле ловится только частично. А на самом деле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 16:09 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
Я тоже ничего не понял. 2 В.С Нео- это из Матрицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 16:17 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
И агенты - оттуда же. Неужели до Израиля даже первая Матрица еще не добралась? Или ее не признали кошерной? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 16:19 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
Хотя тогда откуда VIG знает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 16:21 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
Ну так сделай в справочнике Контагенты поле Скидка, допустим числовое. При вводе в справочник нового Контагента Скидеке присвой значение 0 (это будет значить, при обработке в программе, что цена берётся из прайса). Как только этот клиент заслужит скидки, присвоишь полю Скидка значение допустим1, если хорошая скидка то 2, и т.д. И потом обрабатывай. В зависимости от значения в поле Скидка подставляй скидку? Я понял чего ты хочешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 16:24 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
Ага. Нет, про Матрицу слышал. Мне про нее сосед по комнате (он работает на .NET, а не на Аксессе, поэтому в форум не ходит) прожужжал значительную часть ушей, и я на нее (не на часть ушей, а на Матрицу), наверно, когда-нибудь схожу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 16:25 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
Мне кажется ,что нам уже пора сюда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 16:55 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
Человеку три раза сказали что не поняли вопроса, один раз спросили правильно ли поняли, и в ответ - тишина. Если ему ответ не нужен - ну тогда мы тут потреплемся чуток. В ожидании ответа. Если он будет. А если не будет - ну что ж делать... Значит и не особенно нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 17:00 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
А может, вот сюда? Я основал уголок для курения - если кто хочет, то добро пожаловать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 17:11 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
Да, ребята, ВИГ прав, флуду вы развели - будьте-нате. Жаль. :(( Ладно, конкретный пример. <pre> ------------------------------------------------ Пупков Ботинок Завод1 100р Сидоров Ботинок Завод1 110р Сидоров Ботинок Завод2 109р Иванов Сапог Завод2 130р Ботинок Завод 1 105р. Ботинок Завод 2 115р. Сапог Завод 1 1085р. Сапог Завод 2 100р. ------------------------------------------------- </pre> Это и есть спарочник цен. вот теперь вопрос. Если я ввожу, Сидоров, Ботинок, Завод1, то запрос вытаскивает цену 110р. Если же я ввожу Петров, Ботинок, Завод1, то запрос выдает ошибку, а надо, чтобы он вытаскивал цену 105р. Как это сделать? То Саныч: Я не умею перебирать записи. :((( Как это сделать програмно, если не сложно напиши. То Лох: Я конечно понимаю, что ник и статус обязывают, но не до такой же степени. То что не отвечал, простите, работа у меня такая. :( То Реалист: Спасибо, но такое решение проблемы не устраивает, т.к. слишком много данных. Скидка идет не в одних и тех же процентах, а по каждому контрагенту своя, причем не обязательно скидка (на иные объекты цена может быть и больше прайса). Поэтому интересует именно такое решение, про которое я сказал выше. Заранее спасибо. З.Ы. Если будет желание пофлудить, давайте я создам еще один топик специально для вас, ок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 20:05 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
Какой запрос у тебя ошибку-то выдает? Текст запроса в студию. Откуда она вообще взялась? Рекордсет может просто не вернуть ни одной записи. Ну и хорошо. Лови этот случай и запускай другой запрос. Который будет вытаскивать цену для выбранного ботинка и завода, но без фамилии. Ровно как ты и написал. По русски. Еще раз говорю - возьми англо-русский словарь, переведи все что ты сказал в описании задачи на английский, и подгони под SQL и VBA. Можно конечно и одним запросом сделать, но меня ник обязывает сделать все через жопу. З.Ы. Если будет желание пофлудить - мы и тут справимся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 20:19 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
Так уже на много лучше "select [Цена] from mytable " & _ "where [Товар]='" & strMerchandise & "'" & _ "and [Завод]='" & strPlant & "'" & _ "and [Контрагент]=" & iif (strSupplier ='',NULL,"'" & strSupplier & "'") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 20:43 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
Не надо перебирать записи. Тот селект, хвост которого я привел, в ответ на Код: plaintext выдаст две записи: Код: plaintext 1. и значение, взятое из первой, будет 110р. А в ответ на Код: plaintext он выдаст одну запись: Код: plaintext и значение, взятое из первой (= единственной), будет 105р. Получается, что я правильно понял постановку задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 20:43 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
2 Владимир Саныч Саныч, ты б еще догадался сделать TOP 1 - цены б тебе не было. Или тебя ник тоже обязывает все через жопу делать? 2 VIG Твой вариант не катит. Он у тебя если strSupplier=Null (прости господи) - то отбирает запись с пустым поставщиком, а нужно чтобы это происходило только если для непустого strSupplier отсутствовует запись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 20:48 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
2 Лох: Твоя жопа совершенно права. Действительно, TOP 1. :^) P.S. Во всем этом топике следует заменить все вхождения слова жопа на #$%&. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 20:50 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
Кстати, это не ник, а настоящее имя-отчество. Если я тебе свой ник покажу, то тебе еще смешнее станет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 20:53 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
я делаю проще при выписке документа , стоя на товаре раскрываю формочку а там последние 10 покупок этого товара этим клиентом дата - цена. если список пуст этот товар этот клиент не покупал. хочет скидку или еще чего пусть отправляется к начальнику. (правда у нас на каждый товар с конктреным клиентом свои отношения) хотя можно к клиетну привязать поле где будет указана персональная скидка на все и при выписке дока оператор принимает решенье ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 21:03 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
Твой вариант не катит Но я же сразу сказал ,что не понял сделать TOP 1 В принципе красиво,но что делать ,если будет более одной записи с null Код: plaintext 1. 2. Правда это уже проблема автора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 21:41 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
> Но я же сразу сказал ,что не понял Я тоже сказал, что не понял. :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2003, 22:51 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
По хорошему я бы сделал общий справочник ботинков (с ценами), и плюс ценовые соглашения на некоторых клиентов на некоторые товары. Тогда бы все решалось простым Left Join' ом и функцией Nz Но, как сказал вери импотент гест, это " это уже проблема автора " (которому кажись на усе пофик) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2003, 01:54 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
То <b>Лох Позорный:</b> 1) Мне не "пофигу" как ты сказал, просто не могу тусоваться на форуме полдня. :(( 2) Ты совершенно правильно понял что я хочу сделать. Я действительно несколько неправильно выразился. Ошибка не выдается, а просто не вытягивается ни одной записи. :( Соответственно, когда я в формы пытаюсь подставить это самое "ничего" в поле появляется запись "#Ошибка". 3) > "Рекордсет может просто не вернуть ни одной записи. Ну и хорошо. Лови этот случай и запускай другой запрос." <b>Как это сделать???</b> Я не умею. :( Именно это я и пытаюсь сделать, но вот знаний пока не хватает. > "Можно конечно и одним запросом сделать, но меня ник обязывает сделать все через жопу." Вот это намного предпочтительней. Может попробоем все сделать не через @#$% а по-человечески? 4) > "По хорошему я бы сделал общий справочник ботинков (с ценами), и плюс ценовые соглашения на некоторых клиентов на некоторые товары. Тогда бы все решалось простым Left Join' ом и функцией Nz " Вот тут я тебя чуть-чуть не понял. :( Т.е. делаем справочник цен на товары с заводов, а потом для отдельных клиентов делаем еще один справочник по ценам, которые установлены в допах с этими клиентами??? То <b>Владимир Саныч</b> Все здорово, действительно можно вытащить две записи (если есть). Сидоров Ботинок Завод1 110р null Ботинок Завод1 105р Но где гарантия, что первой будет именно не пустое поле? Если только задать сортировку по убыванию и тянуть, как и сказал Лох, TOP1 To <b>VIG</b> > "В принципе красиво,но что делать ,если будет более одной записи с null. Правда это уже проблема автора" Если такая запись появляется, то все не будет работать, поэтому при заненсении новой цены в справочник, сначала выполняется праверка, а нет ли уже такой записи в справочнике (изначально думал сделать 3 ключевых поля, Контрагент, Товар, Завод, но в ключеванном поле не может быть Null, поэтому пришлось делать через ..... ну вы поняли ) и если такая запись уже имеется, то предлагается изменить ее, либо идти на фиг. Поэтому тот вариант что ты описал исключен (как мне кажется). <br><br> Текст запроса (по просьбам трудящихся): ------------------------- SELECT Цена_реализация.Контрагент, Цена_реализация.Товар, Цена_реализация.Подразделение, Цена_реализация.Цена FROM Цена_реализация WHERE (((Цена_реализация.Контрагент)=[Forms]![Последовательно_реализация]![Контрагент] Or (Цена_реализация.Контрагент) Is Null) AND ((Цена_реализация.Товар)=[Forms]![Последовательно_реализация]![Товар]) AND ((Цена_реализация.Подразделение)=[Forms]![Последовательно_реализация]![Подразделение] Or (Цена_реализация.Подразделение) Is Null)) ORDER BY Цена_реализация.Контрагент DESC; -------------------------- Запрос уже изменил, как и сказал Владимир Саныч. Теперь вроде все нормально выдергивается и кажись даже можено работать. :)) Но хотелось бы до конца в этом разобраться. P.S. Народ, а как теги вставлять нормально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2003, 17:42 |
|
||
|
Подстановка цен из справочника...
|
|||
|---|---|---|---|
|
#18+
> Но где гарантия, что первой будет именно не пустое поле? Если только задать сортировку по убыванию и тянуть, как и сказал Лох, TOP1 А я как раз и предложил сортировку по убыванию - см. мой пост от вчера, 15:57. Читать надо внимательнее. :^) Что касается TOP 1, то это важно только в смысле количества данных, пересылаемых с сервера, а так и без этого все будет работать. > Народ, а как теги вставлять нормально? Над окошечком для написания поста есть кнопки, которые вставляют правильные теги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2003, 18:06 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32205990&tid=1680579]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
69ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 371ms |

| 0 / 0 |
