powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на удаление
25 сообщений из 56, страница 1 из 3
Запрос на удаление
    #39890089
DBpr0ger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Подскажите, пожалуйста, если сможете, как мне реализовать черный список клиентов в базе данных службы доставки. В общем, у меня есть таблица "Отправления", "Клиенты", "Черный список" и прочие. Занесение в черный список работает так: если клиент не забирает посылку в течение 5 дней, то он отправляется в таблицу "Черный список" и удаляется с таблицы "Клиенты". У меня получилось реализовать занесение клиента в ЧС запросом на добавление по условию, но у меня не получается удалить этого клиента с таблицы "Клиенты".
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890092
DBpr0ger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это рабочий запрос на добавление в ЧС
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890102
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBpr0ger,

БД на то и БД, что бы в ней хранились Данные, даже о тех клиентах, что находятся в черном списке.
Вдруг вам в будущем понадобится узрить статистику по черным клиентам?
А она вот - Уже по запросу в наличии.
Или вы переживаете что места в БД не хватит?
Если удалять неугодное, то это будет не База данных, а просто мусорная свалка.
По крайней мере лично я так считаю.
Места хватит на всех и при удалении неугодных, вы только ущемляете себя в аналитических данных.
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890103
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBpr0ger,

Может не стоит делать шахер-махер ?
Добавь галочку у Клиента и всё (галочки нет - хороший клиент, галочка есть - он в черном списке)...
Ну можно не галочку а цифру, в этом случае больше степеней свободы, например: 0-новый клиент, 1- активный, 2- супер активный, ... 6- в черном списке
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890106
DBpr0ger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лапух,

Хорошо, спасибо. Но как мне тогда сделать запрос на обновление значения этой галочки? Я просто хочу, чтобы при открытии БД выполнялся запрос на добавление просроченных посылок в некую таблицу, при этом с таблицы "Отправления" они удалялись (это у меня получилось сделать) и запрос на обновление черного списка клиентов. Я хотел сделать это так: добавление этих клиентов в таблицу "ЧС" и удаление их с таблицы "Клиенты". При этом, когда я захотел бы вернуть клиента обратно, то я с легкостью создал бы запрос на обратное его перенесение в таблицу "Клиенты". Таким образом данные о клиентах всегда будут находится в БД (будь то хорошие клиенты или клиенты с ЧС).
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890108
DBpr0ger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmag,

Я пробовал реализовать и это. Добавил последним в таблицу "Клиенты" поле "ЧС", но запрос на обновление этого поля все равно не работал. Да и мне кажется, что когда клиенты-ЧСники находятся в отдельной от обычных клиентов таблице, то так лучше. С перенесением посылок все намного легче, все работает, потому что там задействуется лишь 1 таблица — "Отправления", а с клиентами ничего не получается (только копирование в ЧС). Но ни обновить записи, ни удалить их я не могу по данному условию. В запросе на обновление мне пишет "Запрос на обновление должен иметь хотя бы одно поле для вывода", а в запросе на удаление — "Необходимо указать таблицу, содержащую удаляемые записи.
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890112
DBpr0ger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лапух,

И мне кажется, что Вы неправильно поняли меня. Я ведь не удаляю данных клиентов с БД, я просто перемещаю их в таблицу "ЧС". А по надобности я верну их обратно в таблицу с обычными клиентами.
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890113
DBpr0ger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странный Access. Почему он понимает, какие данные нужно добавлять в новую таблицу, но при этом не понимает, какие данные нужно обновить или удалить. И это при том, что я просто копирую рабочий запрос на добавление в "ЧС" и меняю его на запрос на удаление или обновление. Ведь ничего не изменяется. Те же поля, те же условия отбора, но обновлять или удалять он отказывается.
Я искал инфу по поводу этих запросов и нашел, что Access просто не понимает, что ему нужно сделать. Но я не понимаю, как он этого не понимает, если он добавляет в таблицу "ЧС" именно то ,что надо. Почему он не может удалить эти же данные. Он же понимает из какой таблицы он их берет при добавлении, так почему же мне выдает ошибку, что я не указал таблицу для удаления.
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890118
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBpr0ger
...Я ведь не удаляю данных клиентов с БД...

Возможно и не правильно понял.
Допускаю и такое по Субботам.

Как упомянул в суе - vmag, можно просто галочкой в обычном запросе в условии отбота не выводить черносписочников, указав в открытом запросе, в режиме конструктора в строчке - Условие отбора под полем с флажком - Нет или Да, ну или как вам там нужно.
Хотя я как и - vmag предпочитаю создавать табличку-справочник Статусов, в где более 2-х значений.
Ни как не пойму, - vmag у меня учился или я у него.

Одинаково мозг морщим похоже.
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890121
DBpr0ger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лапух,

Возможно, вы близнецы с vmag. Мне все-таки больше нравится логический тип поля, нежели создание отдельных значений, так как на данный момент я не собираюсь делить клиентов на активных, унылых и т.д.
Суть создания этого вопроса заключается в другом. У меня не получается создать этот запрос с теми же условиями, что я использовал в запросе на добавление клиентов из "Клиенты" в "ЧС". Мне выскакивают разные ошибки.
Я выбираю все поля с таблицы "Клиенты" и добавляю в поле отбора ту же формулу Date()-[Відправлення]![Дата прибуття]>=5 (с момента поступления посылки на склад прошло 5 дней). По истечении 5 дней хранения посылка должна улетать в таблицу "Архив просрочки" и удалятся с таблицы "Отправления" — это у меня вышло (как я понимаю, потому что там используется 1 таблица). А вот с клиентами не выходит. Вышло лишь добавить клиентов в "ЧС", а удалить их из "Клиенты" не выходит (из-за того, что используется более одной таблицы в запросе и Access не может понять, что от него хотят, хотя должен).
Я уже пробовал и с этим логическим полем в таблице "Клиенты" без занесения в таблицу "ЧС", но Access не соображает. Он не понимает данного условия или не понимает какие поля и откуда нужно удалить.
Ниже прикрепляю скриншот рабочего запроса на добавление в "ЧС" (срок хранения изменил с 5 дней на 7). Проблема заключается в том, что я не могу создать аналогичный запрос на удаление.
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890124
DBpr0ger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже, что у меня наконец-таки вышло сделать этот запрос. Я пошел по другому пути (я его уже пробовал до этого, но тогда мне вылетали точно такие же ошибки, как и в первых случаях).
В общем, я создал запрос на обновление ФИО в таблице "Клиенты" по условию, где код=код и это сработало. Странно, я до этого пробовал так делать, но тогда ничего не работало. А потом создал 2-ой запрос — на удаление из таблицы "Клиенты" полей, где находится измененное ФИО.
Почему-то тогда запросы на обновление и удаление не хотели работать, если я использовал более 1 таблицы. Но щас запрос на обновление заработал, хотя я использовал 2 таблицы — "Клиенты" и "ЧС". А вот запрос на удаление работает на 1 таблице. Я попробовал засунуть эти 2 запроса в 1, то есть сразу удалить клиентов из "Клиенты" по условию код=код, но мне выскакивает ошибка "Укажите таблицу, содержащую удаляемые записи".
Наверное , тогда у меня не получалось реализовать это удаление, потому что я сразу же в 1 запросе пытался удалить, а так не прет.
Вот таким образом я реализовал перенос клиентов в таблицу "ЧС". А оттуда я уже по накатанной схеме реализовал обратный перенос в таблицу "Клиенты". Теперь главное, чтобы все работало правильно.

Если долго мучатся, что-нибудь получится!
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890166
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поясните такой момент: клиент не забрал посылку в течении 5 или 7 дней и попал в ЧС. Что при этом происходит с заказом и товаром в него входящим (заказ аннулируется а товар заказа поступает на какой-то отдельный склад? или посылка отсылается отправителю? или производятся какие-то другие действия?) ,становится ли после этих действий клиент опять "добропорядочным"? Может,все-таки,таблица "ЧС" не нужна и достаточно логического поля в тбл."клиенты"? Не понятна логика работы БД в целом
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890195
DBpr0ger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Посылка поступает на склад просроченных посылок после того, как проходит 6 дней хранения (то есть при наступлении 7-го дня посылка перемещается). Она как бы аннулируется, то есть клиент за нее не платит, и она не отправляется назад отправителю. При этом клиент попадает в таблицу "ЧС" и находится там до тех пор, пока я не захочу переместить его обратно в нормальный список.
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890197
DBpr0ger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но мне кажется, что мне придется все-таки использовать логическое поле, так как при просроченной посылке происходит следующее: просроченная посылка копируется в "Архив просроченных посылок", клиент-отправитель копируется в "ЧС", просроченная посылка удаляется с таблицы "Отправления" (таблица "Отправления" содержит в себе инфу об активных отправлениях), клиент-отправитель удаляется с таблицы "Клиенты".
Мне все нравится, но единственный недочет в том, что при удалении клиента-отправителя с таблицы "Клиенты" удаляются все подчиненные записи с ним в таблице "Отправления", из-за чего удаляются и все активные посылки в таблице "Отправления", так как в них пропадает значение с поля "Отправитель". А ведь мне не нужно удалять активные (еще не просроченные) посылки.
Выходит, что удаляются посылки с совсем другим получателем, который не виноват в том, что когда-то связанный с ним отправитель был недобросовестным получателем.
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890199
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBpr0ger
если клиент не забирает посылку в течение 5 дней, то он отправляется в таблицу "Черный список" и удаляется с таблицы "Клиенты"

а если клиент был в это время в отпуске на Кипре или в травмоотделении больницы
пометить штрафника конечно нужно , но вряд ли так радикально
+ отчетность пострадает
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890209
DBpr0ger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,

Я переделал занесение в ЧС на то, которое мне советовали, а именно — с логическим полем. Теперь просроченные посылки также заносятся в архив просрочки и удаляются с актива, но клиенты теперь попадают в таблицу "Учет черносписников" (куда копируется вся личная инфа с таблицы "Клиенты" и добавляются 2 поля: "Дата внесения" и "Дата вычеркивания"; "Дата внесения" заполняется сразу же) и получают статус ЧСника в таблице "Клиенты" в последнем (добавленном) (логическом) поле "Внесенный в ЧС". При вычеркивании клиента с ЧС в таблице "Учет черносписников" будет заполняться поле "Дата вычеркивания", а в таблице "Клиенты" поле "Внесенный в ЧС" будет получать значение "Нет".
Таким образом, у меня не будут удаляться активные посылки, в которых штрафник присутствуют в качестве отправителя, и добросовестный получатель не будет страдать от недобросовестного отправителя, так как в связанной таблице "Клиенты" клиенты удалятся не будут.
Вы подкинули мне идею, спасибо. Как думаете, что если в таком случае добавить в "Учет черносписников" поле "Причина". Если будет весомая причина, то есть Кипр или травма, то я буду их вписывать туда, а если причины нет, то есть просто не забрал посылку, то поле будет оставаться пустым.
Просто я думаю реализовать выручку за черносписников, а для этого мне нужен будет запрос. В таком случае я думаю в условия этого запроса вбить: "Дата вычеркивания" is not null и "Причина" is not null. Ведь, чтобы получить выручку, клиент должен заплатить за вычеркивание с черного списка, а это значит, что у него появится "Дата вычеркивания". В случае наличия причины клиент будет вычеркивать со списка бесплатно, а значит выручку я не получу, поэтому мне нужны лишь те клиенты, у которых причина отсутствует.
Как думаете, нормально?
P.S.
Вычеркивание с ЧС происходит следующим образом: на форме "Учет черносписников" есть кнопка "Вычеркнуть". При нажатии на нее в таблице "Учет черносписников" заполнятеся пустое поле "Дата вычеркивания", а в таблице "Клиенты" клиенты получает значение "Нет" в поле "Внесенный в ЧС". С добавленным полем "Причина" все будет происходить также, но перед нажатием кнопки "Вычеркнуть" я буду вписывать что-то в поле "Причина".
Для получения выручки будет создан запрос на выборку с "Учет черносписников", где "Дата вычеркивания" is not null и "Причина" is not null. Далее можно будет создать 2-ой запрос на подсчет кол-ва клиентов с 1-го запроса на выборку, умноженного на стоимость вычеркивания с ЧС.
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890220
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBpr0ger
если клиент не забирает посылку в течение 5 дней, то он отправляется в таблицу "Черный список" и удаляется с таблицы "Клиенты"
DBpr0ger
sdku,
...Она как бы аннулируется, то есть клиент за нее не платит, и она не отправляется назад отправителю....
А что посылка исчезает в чёрной дыре и как быть с деньгами в сумме стоимости товара-на кого вешать?
С посылкой должно что-то делать и просто аннулировать заказ,создав,если это нужно, отметку об отказе от заказа в отдельной таблице,указав причину,дату и используя её в дальнейшем для определения "благонадежности" (Ваши критерии)клиента при оформлении новых заказов-это и будет Ваша таблица "ЧС",а из таблицы клиенты исключать его нет необходимости-он может обратится через год
(не вижу смысла в занесении всех данных клиента по новой)
sdku
....Не понятна логика работы БД в целом
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890238
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBpr0ger
, но запрос на обновление этого поля все равно не работал.


- козырный туз не сыграл ?
Для обновления одного поля таблицы - в запросе достаточно использовать всего два поля этой таблицы: ключ (с условием отбора в качестве параметра) и собственно это поле (с новым значением в качестве параметра). Параметры можно использовать или реальные (тогда в запрос их нужно передавать перед выполнением) или подставлять сразу в запрос в виде ссылок на поля формы.
В данной ситуации попытка включение в данный запрос (совершенно не нужных) других полей, а особенно полей других таблиц равносильна разбрасыванию граблей вокруг себя, на которые придется наступать
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890480
DBpr0ger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmag,

В новом запросе на обновление я как раз так и сделал — добавил всего 2 поля (ключ и обновляемое поле) и все сработало.
Но я так и не понял, если я в запрос на обновление подставлю все поля из таблицы, но при этом обновлять буду лишь одно, то запрос работать не будет? Нужно подставлять лишь обновляемые поля и поле, по которому Access'у будет понятно, какое именно поле обновлять?
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890499
DBpr0ger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Клиент теперь не удаляется с таблицы "Клиенты", он просто получает значение "Да" в поле "Занесенный в ЧС", а в таблицу "Учет черносписников" заносятся все его данные и дата внесения (при вычеркивании клиента с ЧС: в таблице "Клиенты" поле "Занесенный в ЧС" получает значение "Нет", а в таблице "Учет черносписников" добавляется значение в поле "Дата вычеркивания"). Таким образом я смогу контролировать, кто и когда был занесен в ЧС.
Я решил переделать "Архив просроченных посылок" в "Обратные посылки". В эту таблицу я буду ппереносить все те же просроченные посылки с таблицы "Отправления", меняя при этом отправителя и получателя, город-отправитель и город-получатель, отделение-отправитель и отделение-получатель, сотрудник (принявший посылку) и сотрудник (выдавший посылку) местами, так как будет происходить то же самое отправление, но в обратном порядке, ведь, если посылку не забрал получатель, то ее нужно вернуть отправителю.
Но я думаю еще над тем, чтобы при обратном отправлении подставлять в поле отправитель не провинившегося получателя, а саму службу доставки (будет создан дополнительный клиент — сама служба доставки; это нужно, потому что в поле отправителя можно подставить лишь те данные, которые находятся в таблице "Клиенты"), так как это она на самом деле отправляет посылку обратно. Вот только я не знаю, что делать, если и первоначальный отправитель не заберет свою посылку( ведь выходит тогда, что она никому не нужна и в таком случае её можно просто удалять с БД, либо заносить в новую отдельную таблицу "Ненужные посылки".
...
Рейтинг: 0 / 0
Запрос на удаление
    #39890506
DBpr0ger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А еще я думаю сделать так, что если сотрудник, выдавший посылку является курьером, то посылка будет выдаваться автоматически в день прибытия (мне кажется это логичным).
И при обратных отправлениях всегда можно подставлять в сотрудника, выдавшего посылку, курьера, чтобы посылка всегда отдавалась обратно и была исключена возможность ее ненужности.
...
Рейтинг: 0 / 0
Запрос на удаление
    #39891012
Stanislav P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DBpr0ger
Я переделал занесение в ЧС на то, которое мне советовали, а именно — с логическим полем. Теперь просроченные посылки также заносятся в архив просрочки и удаляются с актива, но клиенты теперь попадают в таблицу "Учет черносписников" (куда копируется вся личная инфа с таблицы "Клиенты" и добавляются 2 поля: "Дата внесения" и "Дата вычеркивания"; "Дата внесения" заполняется сразу же) и получают статус ЧСника в таблице "Клиенты" в последнем (добавленном) (логическом)

DBpr0ger
Как думаете, нормально?

Не нормально. У тебя ошибки в проектировании базы.

Клиент всегда должен быть в таблице "Клиенты", его статус "в черном списке" должны быть полем (и лучше числовым, а не логическим, так как у Access есть вариативность использования логических полей в запросах.
Посылка всегда должна быть в таблице "Посылки", её статус "ожидание, доставлена, не доставлена, не забрана" должен быть полем.
Логирование - внесение клиента в чёрный список должно быть в отдельной таблице, в которой есть только код клиента, тип (внесён, вычеркнут) и датой внесения или вычеркивания. Нет необходимости дублирования всей информации о клиенте.
...
Рейтинг: 0 / 0
Запрос на удаление
    #39891014
Stanislav P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DBpr0ger
А еще я думаю сделать так, что если сотрудник, выдавший посылку является курьером, то посылка будет выдаваться автоматически в день прибытия (мне кажется это логичным).

Не логично, посылка должна быть отмеченной в базе как выданная только тогда, когда курьер её отдал, иначе будет сломан бизнес-процесс, так как курьер посылку может не отдать её физически, потому что получатель в больнице, а в базе посылка уже отдана. Поле для мошенничества просто замечательное.
...
Рейтинг: 0 / 0
Запрос на удаление
    #39891858
DBpr0ger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stanislav P,

Спасибо за советы.
Про логирование: ну так я это и сделал. У меня есть отдельная таблица "Учет ЧС", куда заносятся код клиента, дата внесения и дата вычеркивания (опустим то, что туда заносится вся инфа о клиенте). При этом клиент всегда остается в таблице "Клиенты", так как я добавил в нее поле "Внесенный в ЧС".
...
Рейтинг: 0 / 0
Запрос на удаление
    #39891880
DBpr0ger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stanislav P
Посылка всегда должна быть в таблице "Посылки", её статус "ожидание, доставлена, не доставлена, не забрана" должен быть полем.


Так что мне делать? Просто мне в БД нужно реализовать формирование обратного отправления в случае отказа от посылки или истечения срока хранения. Я реализовал это созданием таблицы "Обратные отправления", куда переносятся данные посылки, а с основной удаляются (при переносе посылка получала тот же номер накладной (номер накладной — ключевое поле), так как все данные копировались).
А как мне реализовать это в одной таблице, если ключевое поле не должно повторяться. Делать ключевое поле счетчиком? Мне не хочется этого делать. Я бы сделал ключевое поле счетчиком, если бы оно присваивало бы нормальные значения, состоящие цифр из 10, чтобы это было похоже на номер накладной.
Мне нужно запросом на добавление в таблицу сформировать обратное отправление. При этом запрос запускается по нажатию кнопки на форме, где запрос понимает по номеру накладной (ключевому полю) какую именно посылку нужно сформировать как обратное отправление и он копирует его. Можно ли как-то сделать, чтобы запрос брал эту посылку по этому номеру накладной, но при выполнении выскакивало окно параметра, куда я буду вводить новый код. Таким образом будет формировать обратное отправление. А в поле "Статус посылки" будет обновляться с "Доставлено" на "Отказ".
...
Рейтинг: 0 / 0
25 сообщений из 56, страница 1 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на удаление
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]