MS Access - полезные решения

Настройка компьютера, смартфона, программы и железо. Интернет и электронная коммерция с обсуждением площадок.

Модератор: Valery

Правила форума
Гость видит 1е сообщение
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22350
Зарегистрирован: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Помощь! MS Access - полезные решения

Сообщение Valery »

F11 - показывает/скрывает область навигации (таблицы, запросы, формы, макросы и т.д.)
Chr(13) + Chr(10) - возврат каретки
Chr(9) - символ табуляции
При попытке установить "Подчиненные поля": "Невозможно установить связь между свободными формами" - прописать вручную

Готовые решения MS Access:

По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22350
Зарегистрирован: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Обычная тема MS Access - открытие формы в режиме таблицы, добавления записи или перехода на новую запись

Сообщение Valery »

Свойство формы режим по умолчанию - таблица
При открытии из окна базы данных открывается в режиме таблицы.
При открытии посредством кнопки в форме - открывается в режиме одиночной формы.
Решение:
MS Access - открытие формы в режиме таблицы
Найти:

Код: Выделить всё

DoCmd.OpenForm stDocName, , , stLinkCriteria
Заменить на:

Код: Выделить всё

DoCmd.OpenForm stDocName, acFormDS, , stLinkCriteria

' Открыть форму в режиме добавления новой записи:

Код: Выделить всё

DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormAdd

' Перейти к новой записи после открытия формы

Код: Выделить всё

'Открытие
DoCmd.OpenForm stDocName, , , stLinkCriteria
'Переход на новую запись
DoCmd.GoToRecord , , acNewRec
Последний раз редактировалось Valery 29.11.2014 10:50, всего редактировалось 1 раз.
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22350
Зарегистрирован: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Сменить формат поля дата

Сообщение Valery »

Дата в access отображается 01.12.2024, чтобы изменить на 2024.12.01

Свойства поля - Формат поля вместо списка указываем: yyyy.mm.dd

Если надо изменить дату в запросе:

Код: Выделить всё

SELECT Format([Дата]; "yyyy.mm.dd") AS ФорматДата
FROM Таблица;
Или на VBA:

Код: Выделить всё

Me.DateField = Format(Me.DateField; "yyyy.mm.dd")
txtDateField - имя поля, содержащего дату.
Код можно разместить в обработчике события формы или отчета (`Form_Load`, `Report_Open`), чтобы автоматически преобразовывать формат даты при открытии формы или отчета.
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22350
Зарегистрирован: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Дату из календаря записать в поле формы

Сообщение Valery »

В форме access есть календарь. При клике по дате в нем записать эту дату в поле формы [date]:

Код: Выделить всё

Private Sub Calendar1_Click()
    ' Извлечения даты из элемента управления календарём и запись в поле date.
    Me.[date] = Me.Calendar1.Value
End Sub

Либо с появлением MsgBox Да/Нет:

Код: Выделить всё

Private Sub Calendar1_Click()
    Dim userResponse As VbMsgBoxResult
    ' Показываем сообщение с запросом на подтверждение записи даты
    userResponse = MsgBox("Записать выбранную дату?", vbYesNo + vbQuestion, "Подтверждение")

    ' Проверяем ответ пользователя
    If userResponse = vbYes Then
        Me.[date] = Me.Calendar1.Value  ' Записываем дату
    Else
        Exit Sub  ' Выходим из процедуры, не записывая дату
    End If
End Sub
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22350
Зарегистрирован: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Решено Передать фокус в поле id открываемой формы

Сообщение Valery »

Код: Выделить всё

Dim stDocName As String
Dim stLinkCriteria As String
Dim frm As Form

'Открываемая форма
stDocName = "photosession-info"
stLinkCriteria = "[id]=" & Me![id]

' Открываем форму и запоминаем ссылку на неё
DoCmd.OpenForm stDocName, , , stLinkCriteria
Set frm = Forms(stDocName)

' Устанавливаем фокус на поле id открытой формы
frm![id].SetFocus
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22350
Зарегистрирован: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Обновление подчиненной формы

Сообщение Valery »

Обновление подчиненной формы:

Код: Выделить всё

Forms("Имя_Главной_Формы").[Имя_Подчиненной_формы].Form.Requery
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22350
Зарегистрирован: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Открыть форму с конкретной записью по нажатию кнопки

Сообщение Valery »

Открыть форму с конкретной записью

Код: Выделить всё

    Dim stDocName As String
    Dim stLinkCriteria As String

    'Открываемая форма
    stDocName = "photosession-info"
    
    'id открываемой формы = значению поля формы в которой кнопка
    stLinkCriteria = "[id]=" & Me![photosession]
    DoCmd.OpenForm stDocName, , , stLinkCriteria
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22350
Зарегистрирован: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Выполнение запроса на удаление записей из формы

Сообщение Valery »

Выполнение запроса на удаление записей из формы нажатием кнопки:

Код: Выделить всё

    DoCmd.SetWarnings False ' Отключить предупреждения
    DoCmd.OpenQuery "photosession_info file rating 0"  ' Имя запроса в БД
    DoCmd.SetWarnings True ' Включить предупреждения снова
    Me.Requery ' Обновить форму после удаления записей
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22350
Зарегистрирован: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Установить значение по умолчанию +1 в поле для новой записи в форме Access

Сообщение Valery »

Установить значение по умолчанию +1 в поле формы в Access:
Функция находит максимальное значение `id` в таблице `[photosession-info tag]`.
- **Nz(..., 0)**: Гарантирует, что если `DMax` не найдет никаких значений (например, если таблица пуста), то будет возвращено `0`.
- **+1**: Увеличивает найденное максимальное значение на 1.

Таким образом, когда добавляется новая запись через форму, данное поле автоматически заполняется следующим числом после текущего максимального значения `id`.

Код: Выделить всё

=Nz(DMax("[id]";"[photosession-info tag]");0)+1
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.
Аватара пользователя
Valery
Без группы
Без группы
Сообщения: 22350
Зарегистрирован: 07.02.2005 10:00
Награды: 5
Из: Тридевятое царство

Получить значение из поля после 16 символа

Сообщение Valery »

Код получает значение из поля link в таблице links_post, и отрезает при выводе часть после 16 символа:

Код: Выделить всё

=Mid(DLookUp("[link]";"[photosession-model-relise]";"[id] = [photosession]");16)
Если поля [ID] в форме нет, но это связанное поле, то его значение можно получить так:

Код: Выделить всё

="Md: @" & Mid(DLookUp("[link]"; "[photosession-model-relise]"; "[id] = " & DLookUp("[model]"; "[photosession-info]"; "[id] = [photosession]")); 16)
По суше: велосипед, Соболь 4х4 самый западный и LR Defender 110.
Отдохнул – отчитайся, лучшее слово – дело.