powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Групповая обработка записей.
27 сообщений из 27, показаны все 2 страниц
Групповая обработка записей.
    #32358789
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо добавить в форму возможность групповой обработки записей: отметить нужные -> проделать с ними операцию -> снять выделение.
Добавить в таблицу логическое поле, чтоб в нём отмечать выделение - не проблема. Дело в том, что пользователей много и если один отметил записи 1 и 2, а другой - 3 и 4, то запрос с условием Выделено = True обработает все 4 записи, а это не есть гут.
Добавить не привязанный к таблице флажок (вроде на форуме rusimport был примерчик с добавлением в лент.форму свободного "флажка) тоже не решение: дрожание изображения при каждом изменении флажков на медленных компьютерах слишком заметно.
Никто не решал нечто похожее?
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32358847
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вариант номер раз - локальные таблицы. туда качаешь все данные, там и отмечаешь. безо всяких многопользовательских конфликтов.

вариант номер два - выделение с помощью листбокса со множественным выделением.

вариант номер три - некий мутант. пользователь выделяет нужную запись, жмет кнопку - запись (ID-шник) переносится в локальную таблицу/запоминается в памяти. и выбранные записи отображаются в отдельной подформочке/списке.
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32358870
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант 3 - это, точно, для мутантов.
Вариант 2 - малоосуществим из-за особенностей программы.
Остаётся вариант 1.
Только боюсь это заметно на задержке скажется...
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32358885
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну уж не знаю насколько вариант 3 для мутантов. Он (вариант) сам мутант :)
Пользователь просматривает всю таблицу (серверную), по даблклику или по кнопке тукущая запись переносится в списочек. В куче программ всречается список слева (доступные для выбора) - список справа (выбранные) - кнопки переноса туда-сюда. Ну а у тебя левый список будет таблицей. Разве что при большом количестве выбранных записей со списком становится неудобно работать. Ну и с точки зрения интерфейса кривовато :)
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32358961
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Драсте...
Подобную (почти) задачу решил другим вариантом:
Есть временная локальная таблица, содержащая два поля - ID(тип соответствует типу ключевого поля "основной" таблицы) и Mark(логический), хотя, можно обойтись и одним ID (у меня задача была несколько путанней, поэтому во временной использовалось много больше полей).
Временная таблица - пустая, т.е. перед открытием формы нужно ее чистить.

Далее, запрос, предоставляющий данные для формы содержит объединение "основной" и временной таблиц. Заполняя поле во временной таблице, вы фактически добавляете в нее новую запись... Ну а дальше понятно.

ДА! Маленький "минус"... Набор должен быть несогласованным... Мне сначало было страшно, но потом ничего... привык :)

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

з.ы. не бейте сильно... сами мы не местные...
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32358970
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Далее, запрос, предоставляющий данные для формы содержит объединение "основной" и временной таблиц. Заполняя поле во временной таблице, вы фактически добавляете в нее новую запись... Ну а дальше понятно.
Непонятно прям тут, а не дальше:
Если времянка изначально пустая, то как в неё данные попадают? Кто заполняет поле во временной таблице?
Если пустую таблицу объединить с основной, чего получится?
Не, как раньше говорили на партсобраниях, обсуждая "аморалку": "Подробности давай!".
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32358981
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Насколько я понимаю:

Данные попадают при клике по записи.
При объединении получатся данные из основной таблицы, но с ключами, взятыми из временной.
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32358988
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, Владимир Саныч прав. Поле из временной таблицы надо отобразить в форме и при вводе Пользователем в нее данных (например при отметке чекбокса) во временную таблицу автоматически добавляются данные...
Единственное, что я упустил, это то, что связь "основной" таблицы со "временной" (пустой в момент открытия формы) должна быть "правой", т.е. все записи из основной таблицы и только те из временной, которые соответствуют основной... Теперь вроде (и самому) понятней :)
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32358990
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Нуфвсе записи из основной таблицы и только те из временной, которые соответствуют основной
А не наоборот ли? Я как раз понял наоборот.
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32358999
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит я плохо объяснил :)

Открытие формы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Осн.табл        Вспом.табл.
ID    Наим.        ID    Chb
 01  Петрушка       ---    [ ]
 
 02  Укроп___       ---    [ ]
 
 03  Чеснок__       ---    [ ]
 
 04  Травка__      ---    [ ]

Пользователь отметил Укроп, что приводит к добавлению записи во врем.табл:
Код: plaintext
1.
2.
3.
4.
5.
6.
Осн.табл        Вспом.табл.
 01  Петрушка       ---    [ ]
 
 02  Укроп___       02      [v]
 03  Чеснок__       ---    [ ]
 
 04  Травка__      ---    [ ]

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

А то, что ты добавил, действительно было не очень понятно. Про саму технику занесения во временную таблицу.
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32359012
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для ЛП (если прикалывается):
Сам такой! :)

для ЛП (если не прикалывается):
ЛП, а сколько мне это решение в своё время гемора стоило... Досих пор помню название своего топика в котором оно и нашлось: "Риторические вопросы из тупика" :) Хорошо, что тогда модераторов небыло, а то в угол бы за такую тему поставили бы

Ну так что, ЛП, еще одного ЖИРНОГО енота я заработал от тебя? :) //Не помню за что был первый, но, надеюсь, к следующему году (когда планирую побывать в Первопристольной) вспомню и мы их отметим за бутылочкой пива :)
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32359013
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч, ну да. На более позднем (момент обработки группы) всё так, как ты и сказал. Вообщем, сорри за косноязычность... :)
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32359029
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я пока в тумане........:((
Попробовал, ничего у меня само не добавляется.
Вспом.табл: поля id (Long) и Выбрать (Boolean). Связал ключевое поле осн.таблицы и id временной (все из основной и только совпадающие из временной). В свойствах запроса указал - Динамический(несогласованный). В запросе вывел поля: Выбрать, Ключ осн.табл. и id вспомогательной. Открываю запрос: число записей равно числу записей осн.таблицы, запрос допускает редактирование, но все "Флажки" - в "состоянии 3". Ладно, хрен с ними, щёлкаю на первом флажке, он "отмечается", но ничего в поле id не возникает, щёлкаю другой флажок, теперь отмечены оба и в "предыдущем" поле id возникает 0.
И что?
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32359045
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для АндрейК:
Ну вот, теперь ЖИРНОГО я фиг получу точно :)

Щас проверил... Если запрос не слишком сложен и именно содержит Основную таблицу и Временную таблицу, то набор можно оставить Согласованным и всё будет работать именно так, как я и сказал: юзер кликает на временном чекбоксе и запись автоматически добавляется во временную таблицу с необходимой ID-шкой... Т.е. главный заявленный мной недостаток (несогласованный набор записей) снимается! Остается, правда, как оказалось и как я сейчас вспомнил "неопределенное состояние чекбокса", которое лично у меня получилось таки обратить в достоинство :)

По поводу моих настырных утверждений о несогласованном наборе... Пойду погляжу в свой "запомнившийся" топик... Посмотрел... В моем случае объединялись таблицы, связанные отношением "многие-ко-многим" (через еще одну таблицу), в результате попытки реализовать рассматриваемый вариант появлялась ошибка "Невозможен ввод значения в пустое поле со стороны "один" внешнего объединения." Поэтому набор пришлось делать несогласованным и, коль скоро он несогласован (т.е. Акс умыл руки в плане поддержания реляционной целостности), то я "ручками" в коде после изменения пользователем логического поля брал и копировал ID текущей измененной пользователем записи в ID-поле временной таблицы этой же самой записи... Цена показалась мне не очень высокой и решение реально сейчас работает у одного клиета. Проблем с данным решением нет. В целом с базой есть :), а с этим решением - нет.

Ну и в качестве оправдания:
Не относись ко мне серьезно, делай как все! :) Ибо так получилось, что Аксом я щас очень мало занимаюсь, поэтому вроде бы элементарные когда-то для меня вещи стали вдруг какими-то расплывчатыми и зыбкими

Удачи!
Иван ака Нуф.
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32359059
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К Нуф-нуф:
> делай как все!
А как все? Никто не торопиться секретами делиться. Я пытаюсь разобраться в Вашем способе. Есть в нём какая-то "изюмина".
1. Если я объединяю 2 таблицы и не указываю "несогласованный набор", то не получается изменить флажок - "объект Recordset не является обновляемым". В запросе всего 2 таблицы, одна - пустая (с двумя полями), другая с данными.
2. Так всё-таки данные в поле ID временной, оказывается, заносятся не "автоматически", а либо ручками, либо специальной процедурой?
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32359070
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для АндрейК:

Ну так не честно, в самом деле... :) Уже ж вроде всё досканально рассказано, проверено даже (еще раз:)!
АндрейК1. Если я объединяю 2 таблицы и не указываю "несогласованный набор", то не получается изменить флажок - "объект Recordset не является обновляемым". В запросе всего 2 таблицы, одна - пустая (с двумя полями), другая с данными.
В запросе две таблицы или другой запрос и временная таблица? Если именно две таблицы, то Вы уверены, что ID обеих таблиц имеют одинаковый тип? Если всё так, то... То что-то вы не так делаете... Что бы еще один разок не "обламаться", приведу выполненный мной специальный тест (A2000, хотя роли не играет):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Основная таблица:
ID (счетчик), SomeText (текстовый)

Временная таблица:
TempID (длинное целое), Bool (логический тип)

Запрос:
SELECT Основная.ID, Основная.SomeText, Временная.TempID, Временная.Bool
FROM Основная LEFT JOIN Временная ON Основная.ID = Временная.TempID;

Если после подобного повторения, записи во временную таблицу при изменении поля Bool не добавляются, то один из нас точно что-то не так делает.
Если записи у вас всё же в указанном мной тесте добавляются, то что-то не так со своим реальным вариантом делаете Вы. Что именно - хз... Возможно, как уже сказал, объединяете некий сложный запрос с временной таблицей, от чего набор становится нередактируемым, возможно что-то другое... Телепатировать так и не научился :(

АндрейКТак всё-таки данные в поле ID временной, оказывается, заносятся не "автоматически", а либо ручками, либо специальной процедурой?
В простейшем (описанном мной) случае данные заносятся автоматически, и только в случае сложных запросов приходится делать набор несогласованным и вставлять следующий код в процедуру, которая изменяет поле во временной таблице (обработка события "Клик"/"Чэндж"/"Афтер/БефорАпдэйт"/прочие по желанию):
Me("TempID") = Ме("ID")
или
Me.Recordset("TempID") = Ме.Recordset("ID")
или
Me.RecordsetClone("TempID") = Ме.RecordsetClone("ID")
Я просто не помню... Поиграйтесь с этой строкой в случае несогласованного набора записей...
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32359154
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простите нас, сами мы не местные.... ;-)
А что если делать, как предложил автор в певом посте, но только не логическое поле делать, а текстовое и заносить туда при клике на нем =CurrentUser() ??? Причем давать его изменять, если оно пустое, т.е. если его еще никто пока в набор не добавил. Ну а дальше составить нужный запрос на обновление - дело техники.
P.S. Сильно только не бейте. ;)
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32359156
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
По-моему, красиво.
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32359157
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Саныч
Ни <отмодерировано> не красиво. Одну и ту же запись могут выбрать несколько пользователей. Через запятую будешь их идентификаторы хранить???

2 Нуф
И ни фуя я не прикалывался.
Какой КЮ! Хотел отделаться одной бутылкой пива.
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32359158
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То Лох Позорный:
> Одну и ту же запись могут выбрать несколько пользователей.
Ты не внимательно прочитал! Я же сказал, что давать ее изменить, только если это поле пустое, в противном случае выдавать пользователю сообщение, что данную запись обновляет другой пользователь и что надо подождать.
Одновременно с обновлением записей, данное поле становится Нул или пустой строкой и снова любой пользователь может ее менять.
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32359159
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То ЛП:
И еще, заканчивай пить!!! А то уже буковок не видишь, да и Гео с Нуфом путаешь.
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32359160
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Траблез
Я же сказал, что давать ее изменить, только если это поле пустое, в противном случае выдавать пользователю сообщение, что данную запись обновляет другой пользователь и что надо подождать
Т.е. если поле непустое (запись уже кто-то "отселектил") - то никому больше не давать эту запись менять ("селектить")?
Ничем не отличается от обычной оптимистической блокировки + транзакции по форме.
Только транзакции делает сам аксес, а тум еще какой-то код придется писать.

И еще, заканчивай пить!!!
Еще атин путыльк - и закончу.
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32359163
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вернее так
Блокировки делает сам аксес (а в твоем решении код писать)
А вот транзакции по форме - все равно самому (селяви)
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32359165
TRoUbLEs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То ЛП:
Ну вот видишь, ты знаешь больше чем я и намного лучше, а делаешь такие удивленные глазены!
Для меня Аксес - это хобби и необходимость по работе и всего я в нем не знаю. Я только кинул предположение и как бы я сделал. Не пойдет, так не пойдет. ;-)
...
Рейтинг: 0 / 0
Групповая обработка записей.
    #32359536
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опа!
Приведённый Нуф-нуф пример, действительно, работает!
Поковырялся в своём варианте - выяснил:
В Основной табл. поле ID может быть и текстовым, главное чтоб ключевым . Взял реальную таблицу - ни одного(?) счётчика, но зато 5 ключевых полей (одно - текстовое). Во Временной создал для них пары с аналогичным типом данных....
Живенько так: кликаешь и 5 полей заполняются!
---------------------------------
Предложением TRoUbLEs не проникся, может не понял:
На экране форма - 30 строк. Мне нужно обработать несколько. Если есть флажок - ставлю галку. Выделение видно и мнемонически привычно, а если флажка нет? Если б меня заставили именно так сделать, я бы всё-равно добавил бы флажок, а поле с =CurrentUser() скрыл и выводил бы его содержимое только в сообщении.
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Групповая обработка записей.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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