Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Возможно ли это вообще?  [new]
jug
Member

Откуда: Киев
Сообщений: 85
Выручайте ребят. У меня база там основная таблица в ней 170.000 тыс. записей и записи очень полные почти все формы, запросы и отчеты клеятся к ней, но так как ей 7 лет она(главные требователи конечно работодатели) потребовала значительных изменений и не могу додумать как накатать запрос.
Вообщем ситуация следующая.

В базе много клиентов, некоторые из них обращались по несколько раз. Колонка "телефон" в таблице создана с атрибутом "Да(совпадения не допускаются)" (для того чтоб когда вводишь номер и он совпадал Аксес мяукал, что такой клиент есть), но чтоб еще одну операцию провести, а следовательно добавить запись к номеру телефона добавлялась звездочка

Картинка с другого сайта.

дальше мое начальство настаивает, чтоб я сделал отчет на базе запроса, чтоб он выполнил следующее

запрос на обновление, чтоб в колонке "Акция" этой таблицы вписалось слово акция, но только у тех значений у которых нет "А",(как в третей записи), усложняется все это тем что телефонов в базе навалом от мобильных и до стационарных деревенских (длины знаков не совпадают).

Короче говоря, нужно чтоб запрос, сначала выбрал только те записи, которые имеют одинаковую телефонную часть до (*), после чего в записях в колонке ФИО где нет "А" , в колонке Акция вписал какой-нибудь атрибут помечающий их.

Помогите Чайнику, пожалуйста. Или скажите компетентные люди прямо, что это не реально.
26 фев 07, 19:51    [3834458]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
Ёжик`
Member

Откуда:
Сообщений: 5992
Данный запрос выводит данные без "*А" на конце, с повторяющимися тел.номерами без * на конце.
Запрос редактируемый!
SELECT [Заявки общ].*, IIf(InStr([телефон],"*")=0,[телефон],Left([телефон],InStr([телефон],"*")-1)) AS phone
FROM [Заявки общ]
WHERE (((IIf(InStr([телефон],"*")=0,[телефон],Left([телефон],InStr([телефон],"*")-1))) 
In (SELECT IIf(InStr([телефон],"*")=0,[телефон],Left([телефон],InStr([телефон],"*")-1)) AS phone
FROM [Заявки общ]
WHERE (ФИО Not Like "*""А""")
GROUP BY IIf(InStr([телефон],"*")=0,[телефон],Left([телефон],InStr([телефон],"*")-1))
HAVING Count(№)>1)) AND (([Заявки общ].ФИО) Not Like "*""А"""));

А данный запрос вносит в поле Акция слово акция.
UPDATE [Заявки общ] SET [Заявки общ].Акция = "акция"
WHERE (((IIf(InStr([телефон],"*")=0,[телефон],Left([телефон],InStr([телефон],"*")-1))) 
In (SELECT IIf(InStr([телефон],"*")=0,[телефон],Left([телефон],InStr([телефон],"*")-1)) AS phone
FROM [Заявки общ]
WHERE (ФИО Not Like "*""А""")
GROUP BY IIf(InStr([телефон],"*")=0,[телефон],Left([телефон],InStr([телефон],"*")-1))
HAVING Count(№)>1)) AND (([Заявки общ].ФИО) Not Like "*""А"""));

26 фев 07, 20:55    [3834656]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
Ёжик`
Member

Откуда:
Сообщений: 5992
А база дурная кстати, в проектировании баз разнесут ...
26 фев 07, 21:01    [3834672]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
jug
Member

Откуда: Киев
Сообщений: 85
Ёжик`
А база дурная кстати, в проектировании баз разнесут ...


Спасибо огромное сейчас буду пробывать. За проектирование я вообще молчу ты ведь учитывай я фармацевт сам по себе так, что только учусь.
2 мар 07, 14:21    [3854029]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
ByKiS
Member

Откуда:
Сообщений: 3760
А у меня вопрос по вашей базе - там состояние сами указываете или по какому принципу?
2 мар 07, 14:40    [3854200]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
ИгорьКл
Member

Откуда: Пермский край
Сообщений: 570
Тут похоже работают в таблице и она одна во всей базе.(рабочая)
2 мар 07, 14:46    [3854253]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
ByKiS
Member

Откуда:
Сообщений: 3760
Вот и правильно, надо было и мне так делать...
2 мар 07, 14:47    [3854271]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
ИгорьКл
Member

Откуда: Пермский край
Сообщений: 570
ByKiS
Вот и правильно, надо было и мне так делать...

А потом будет головная боль. Тогда переходи на exel и будет тебе также.
2 мар 07, 14:50    [3854293]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
ByKiS
Member

Откуда:
Сообщений: 3760
Думал, но 65536 - на недельку только :)
2 мар 07, 14:52    [3854308]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
ИгорьКл
Member

Откуда: Пермский край
Сообщений: 570
ByKiS
Думал, но 65536 - на недельку только :)

А вот автор уже 7 лет юзит базу.
2 мар 07, 14:54    [3854317]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
jug
Member

Откуда: Киев
Сообщений: 85
ByKiS
А у меня вопрос по вашей базе - там состояние сами указываете или по какому принципу?


Сами там несколько состояний Отказ, Заказ, Доставка
2 мар 07, 18:17    [3856056]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
jug
Member

Откуда: Киев
Сообщений: 85
ИгорьКл
Тут похоже работают в таблице и она одна во всей базе.(рабочая)


Не много не так, но суть такая, там еще есть пару таблиц которые в свзи с ней, в них идет детализация по товару и сотрудникам которые продают.
2 мар 07, 18:20    [3856071]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
йо-хо-хо
Guest
jug
там еще есть пару таблиц которые в свзи


откройте стандартный Борей (aka NorthWind) там все это уже реализовано
2 мар 07, 18:23    [3856082]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
jug
Member

Откуда: Киев
Сообщений: 85
ByKiS
Думал, но 65536 - на недельку только :)


Там данные большие, пять человек одновременно вбивая по сети неделю 65536 в нее не внесут. И эта конченная специфика телефона со *. тоже раздражает, но чего делать? Разберусь может.
2 мар 07, 18:28    [3856106]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
jug
Member

Откуда: Киев
Сообщений: 85
Ёжик`
Данный запрос выводит данные без "*А" на конце, с повторяющимися тел.номерами без * на конце.
Запрос редактируемый!
SELECT [Заявки общ].*, IIf(InStr([телефон],"*")=0,[телефон],Left([телефон],InStr([телефон],"*")-1)) AS phone
FROM [Заявки общ]
WHERE (((IIf(InStr([телефон],"*")=0,[телефон],Left([телефон],InStr([телефон],"*")-1))) 
In (SELECT IIf(InStr([телефон],"*")=0,[телефон],Left([телефон],InStr([телефон],"*")-1)) AS phone
FROM [Заявки общ]
WHERE (ФИО Not Like "*""А""")
GROUP BY IIf(InStr([телефон],"*")=0,[телефон],Left([телефон],InStr([телефон],"*")-1))
HAVING Count(№)>1)) AND (([Заявки общ].ФИО) Not Like "*""А"""));

А данный запрос вносит в поле Акция слово акция.
UPDATE [Заявки общ] SET [Заявки общ].Акция = "акция"
WHERE (((IIf(InStr([телефон],"*")=0,[телефон],Left([телефон],InStr([телефон],"*")-1))) 
In (SELECT IIf(InStr([телефон],"*")=0,[телефон],Left([телефон],InStr([телефон],"*")-1)) AS phone
FROM [Заявки общ]
WHERE (ФИО Not Like "*""А""")
GROUP BY IIf(InStr([телефон],"*")=0,[телефон],Left([телефон],InStr([телефон],"*")-1))
HAVING Count(№)>1)) AND (([Заявки общ].ФИО) Not Like "*""А"""));



Блин, в той таблице, которую я выложил это работает превосходно, но когда попробывал внедрить там "несответсвие типов данных", короче говоря, там есть записи в которых телефон Null, а иногда и ФИО Null и конечно ничего не пашет.
2 мар 07, 18:32    [3856126]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 5127
jug
Блин, в той таблице, которую я выложил это работает превосходно, но когда попробывал внедрить там "несответсвие типов данных", короче говоря, там есть записи в которых телефон Null, а иногда и ФИО Null и конечно ничего не пашет.
А пользоваться функцией Nz религия не позволяет?
2 мар 07, 18:37    [3856152]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
jug
Member

Откуда: Киев
Сообщений: 85
Joss
jug
Блин, в той таблице, которую я выложил это работает превосходно, но когда попробывал внедрить там "несответсвие типов данных", короче говоря, там есть записи в которых телефон Null, а иногда и ФИО Null и конечно ничего не пашет.
А пользоваться функцией Nz религия не позволяет?


В поле телефон не может быть больше одного значения 0.
2 мар 07, 18:40    [3856165]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
йо-хо-хо
Guest
jug
В поле телефон не может быть больше одного значения 0.


речь не о том, чтобы больше одного, а о том, что больше Null

Nz([PhoneNum],"000-00-00")

---------------------

мой телефон ноль-ноль ноль
мой телефон ноль-ноль ноль

нет я не шучу, нет я не шучу
и не думай, что это пароль...

звони,
звони...
2 мар 07, 18:46    [3856186]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
jug
Member

Откуда: Киев
Сообщений: 85
йо-хо-хо
jug
В поле телефон не может быть больше одного значения 0.


речь не о том, чтобы больше одного, а о том, что больше Null

Nz([PhoneNum],"000-00-00")

---------------------

мой телефон ноль-ноль ноль
мой телефон ноль-ноль ноль

нет я не шучу, нет я не шучу
и не думай, что это пароль...

звони,
звони...


Ты вобщето вникни в задачу. Если уж так весело, я не претиндую на твои познания в это области, но всеже.
Иванов 000-00-00, а если у следующего Иванова будет 000-00-00, то выдаст ощибку ввода так как телефон уникальное поле, конечно если можно при помощи Nz сделать 000-00-00, 000-00-0+1, 000-00-02. то все пройдет, но с Nz можно так сделать? Если да то как?
2 мар 07, 19:01    [3856232]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
йо-хо-хо
Guest
jug
Ты вобщето вникни в задачу


в задачу я вник - скачай себе Борей (если не найдешь на диске - он идет в поставке), перенеси в него данные и пользуйся еще десять лет и не морочь людям головы...

там все это уже есть

ты решаешь проблемы вызванные совершенно корявой реализацией схемы данных, да еще и продолжаешь громоздить ущербное решение, вместо того, чтобы обратить внимание на ответ , данный уже через час после вопроса
2 мар 07, 19:16    [3856284]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
Ёжик`
Member

Откуда:
Сообщений: 5992
jug

Блин, в той таблице, которую я выложил это работает превосходно, но когда попробывал внедрить там "несответсвие типов данных", короче говоря, там есть записи в которых телефон Null, а иногда и ФИО Null и конечно ничего не пашет.

Про борей соглашусь.
расчет nz() - с ним можно попробовать сделать запрос, и на его базе уже мои запросы творить, а лучше все таки базу переделать - данные простые, а запросы сложные.
сложные запросы приемлимы в отчетах, а не в формах и редактируемых запросах.
для начала можно разнести текущую табличку на несколько, а на их базе построить запрос с названием текущей таблицы - старые формы и отчеты будут работать.
2 мар 07, 20:57    [3856593]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
jug
Member

Откуда: Киев
Сообщений: 85
йо-хо-хо
jug
Ты вобщето вникни в задачу


в задачу я вник - скачай себе Борей (если не найдешь на диске - он идет в поставке), перенеси в него данные и пользуйся еще десять лет и не морочь людям головы...

там все это уже есть

ты решаешь проблемы вызванные совершенно корявой реализацией схемы данных, да еще и продолжаешь громоздить ущербное решение, вместо того, чтобы обратить внимание на ответ , данный уже через час после вопроса


Спасибо огромное за совет. Конечно борей я смотрел, но там таких отчетов как у меня нет у меня специфика работы немного не такая. Но влюбом варианте пасибки.
3 мар 07, 15:17    [3858105]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли это вообще?  [new]
jug
Member

Откуда: Киев
Сообщений: 85
Ёжик`
jug

Блин, в той таблице, которую я выложил это работает превосходно, но когда попробывал внедрить там "несответсвие типов данных", короче говоря, там есть записи в которых телефон Null, а иногда и ФИО Null и конечно ничего не пашет.

Про борей соглашусь.
расчет nz() - с ним можно попробовать сделать запрос, и на его базе уже мои запросы творить, а лучше все таки базу переделать - данные простые, а запросы сложные.
сложные запросы приемлимы в отчетах, а не в формах и редактируемых запросах.
для начала можно разнести текущую табличку на несколько, а на их базе построить запрос с названием текущей таблицы - старые формы и отчеты будут работать.


Ежик, тебе отдельная благодарность, ты меня реально выручил. Респект вдруг чего по фармацевтике надо будет пиши juggler@ukr.net не подведу.
3 мар 07, 15:20    [3858108]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить