Небольшая путаница у тебя. Тут не решают задачи вместо человека, тут помогают со сложностями. Т.е. ты сам берешь, изучаешь все, пишешь. А если наступаешь на грабли, то как раз можешь спросить, почему - тогда помогут.
Константин, Через папку, да. А линковать - правой кнопкой щелкаешь там, где таблицы. И сам увидишь все. Либо идешь и находишь такой Мастер связанных таблиц, скорее всего так его по-русски обозвали. И он тебе все сделает сам. :)
Это потому, что ты невнимательно посмотрел, что я написал
0. If [Флажок12] = Then ' конечно, так будет ошибка. Должно так:
If [Флажок12] Then
1. [Êîìáèíèðîâàííàÿ25] <> "" ' ну, во-первых, это вот к вопросу о том, почему элементы не надо называть по-русски. Во-вторых, это неправильная проверка. Null не равен пустой тестовой строке, это просто отсутствие значения вообще.
Сделай вот так:
If [Флажок12] AND [Комбинированная25] & "" <> "" ' Здесь ты к полю прибавляешь пустую текстовую строку, а дальше проверяешь, не равно ли значение пустой текстовой строке. Это сработает.
Так пробовать плохо и неверно. Начиная от count(1) вместо count(*) что заставляет оптимизатор забыть про индексы и продолжая общим подходом.
Сделать группировку, отсортировать и top 1 взять из нее. А вы чего делаете? Почему всего два раза выполняем один и тот же запрос? Как-то несерьезно, надо больше.
Антон, Непонятно, почему для тебя естественно, что нельзя добавлять на форму поля из разных таблиц. Это неестественно как раз. :) Во-первых, ты можешь добавить нужные таблицы в запрос и сделать источником формы его - а там может быть сколько угодно таблиц. Главное, не забывай связи между ними ставить.
И наконец, у формы может вообще не быть источника данных и ничего плохого с ней не будет, а поля в данном случае ты можешь заполнять данными откуда угодно.
Вот ты сделал запрос при нажатии кнопки и потом его выполняешь. Как раз при таком подходе форма может не иметь источника данных. И тебе никто не запретит строкой ниже CurrentDb.Execute еще раз сделать запрос, только уже сохранять в другую таблицу и еще раз выполнить CurrentDb.Execute.
Хоть в двадцать разных таблиц таким образом сохраняй данные.
Антон, Как тебе сказать. В идеальных условиях это работать будет. Но вообще кошмар.
0. Обработки ошибок нет вообще, это просто недопустимо!
1. Так:
If [Флажок12] = True
Делать не нужно, достаточно:
If [Флажок12] Then
2. Если юзер не вобьет ничего в поле Комбинированная25 - то что у тебя сохранится в таблицу? Null.
3. Что такое флажок12 - ты забудешь через два месяца, если не раньше. Значимые элементы должны иметь разумное описание, например: chkEnableSoftwareTexbox - из названия тут видно, что это checkbox, и что он делает - тоже. И кнопку22 переделай в btnSaveData - потратишь 2 секунды, но выиграешь минимум 2 часа, когда потом будешь вспоминать, что она делает.
4. Таблица не просто названа по-русски, но даже с пробелами, аналогично с полями.
Так делать нельзя. Если ты будешь писать в том же стиле - обязательно огребешь проблем.
5. Флажок12_AfterUpdate() смотри как можно переделать
[Комбинированная25].Enabled = [Флажок12]
И все. Не нужен никакой if. Только для чекбокса поставь, что у него лишь два статуса в свойствах.
Антон, правильно будет, если тебе помогло, ставить ответы решениями.
Теперь давай посмотрим. На мой взгляд, у тебя отдельная сущность "обновление ПО" и оно должно быть в отдельной таблице и мешать его ни с чем не нужно. Т.е. вот у тебя есть Id, m_version, m_date - и пусть оно так и будет.
А посещение - это у тебя отдельная сущность, с обновлением не обязательно связанная. Значит, правильный вариант - две таблицы, по одной на каждую сущность. Крайне важно сущности не мешать.
Как это правильно оформить? Я бы на твоем месте в форму, куда ты заносишь данные о посещении добавил чекбокс "обновили необычайно важное ПО". Тогда у тебя дата посещения одна, но если этот чекбокс стоит, то ты пишешь её в две таблицы. Каждая сущность остается изолированной, ничего ты не смешиваешь, и имеешь верные данные.
Почему, скажи, у тебя gmt_client = 13, когда у тебя должно быть по описанию != ?
where текущее время between нужное_один and нужное_два and (gmt != 13) - вот так возвращает значения?
Антон, я бы сделал кодом, да. Это быстрее. Не для каждой, а для одной, если ты правильно описал задачу.
У тебя требуется обновление одного поля, Индекс. Значит, на него и надо повесить код.
"After_update - это обновление ячейки?" - да.
Там нечего читать, т.е. совсем. Если ты уже владешь SQL просто запусти акцесс, зайди на Query и создай New Query. Все увидишь сам. Добавляешь таблицу и нужные поля из нее (либо вставляешь уже написанный запрос sql), сохраняешь, запускаешь.
Я бы просто сделал Запрос/Query - это такая специальная сущность там. Будешь ее открывать - и выполнять запрос к Архив. Либо, если нужно красиво - потом на основе query можно сделать Report.
Dvlbug, Про черной пеленой - это Леонид Каганов. "Вышли все под дос, а проклятый виндовс удаляли"... У него на сайте есть. И полагаю, многое другое из тех песен - тоже он.
Хочешь получить ответ - давай больше инфы. Скрины - раз. По формам код - два. Сдается мне по описанию, перемудрено там.
Что касается проблем с доступом - там забей. Было бы каждый раз, имело бы смысл разбираться, а один - ерунда.
-----|------|------|----------
2023-07-04 5 2 1 15.00
2023-07-04 6 2 1 13.10
2023-07-03 1 1 1 1.02
2023-07-03 2 1 1 2.01
2023-07-03 5 2 1 14.00
2023-07-03 6 2 1 11.10
по id_tool in (5, 6) данные за 4 июля есть. По id_tool in (1, 2) - нет. Тогда должно получиться
date | tool | type | is_trade m_close
-----|------|------|----------
2023-07-04 5 2 1 15.00
2023-07-04 6 2 1 13.10
2023-07-04 1 1 1 1.02
2023-07-04 2 1 1 2.01
2023-07-03 1 1 1 1.02
2023-07-03 2 1 1 2.01
2023-07-03 5 2 1 14.00
2023-07-03 6 2 1 11.10