-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4

Invalid link!








Добавить любой RSS - источник (включая журнал LiveJournal) в свою ленту друзей вы можете на странице синдикации.

Исходная информация - http://www.sql.ru/forum/actualtopics.aspx?bid=4.
Данный дневник сформирован из открытого RSS-источника по адресу http://www.sql.ru/forum/actualrss.aspx?id=4, и дополняется в соответствии с дополнением данного источника. Он может не соответствовать содержимому оригинальной страницы. Трансляция создана автоматически по запросу читателей этой RSS ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

[Обновить трансляцию]

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

Воскресенье, 18 Ноября 2018 г. 16:07 + в цитатник
Привет. Есть код (ниже). Как после всех действий можно обнулить все поля формы для ввода новых данных? Пока только через DoCmd.Close и DoCmd.OpenForm реализовать получилось. Me.Undo, Refresh не работают.

    Private Sub SaveCmd_Click()
    On Error GoTo SaveCmd_Click_Error
    Dim ctl As Control
    Dim a As Integer
    Dim rstAcc As ADODB.Recordset
       
    For Each ctl In Me.Controls
        If IsNull(ctl) Then a = a + 1
    Next ctl
    If a > 0 Then
        MsgBox "Не заполнены обязательные сведения." & vbCr & "Заполните все поля!!!", vbOKOnly + vbCritical, "НЕДОСТАТОЧНО ДАННЫХ"
        GoTo ExitHere
    End If
        
    Set rstAcc = New ADODB.Recordset
    With rstAcc
        .Open "Accounting", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
        .AddNew
        .Fields("RegNum") = Me.Registration
        .Fields("RegDate") = Me.RegiDate
        .Fields("OffenceDate") = Me.FOffDate
        .Fields("OffenceTime") = Me.FOffTime
        .Fields("PlaceID") = Me.FOffPlace.Column(0)
        .Fields("TypeID") = Me.FOffType.Column(0)
        .Update
        Me.OffID = .Fields("OffenceID")
    End With
    rstAcc.Close
    
    With rstAcc
        .Open "OffenceSubj", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
        .AddNew
        .Fields("OffensID") = Me.OffID
        .Fields("SuspID") = Me.FsuspID
        .Update
    End With
    rstAcc.Close
    
    With rstAcc
        .Open "Process", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
        .AddNew
        .Fields("OffenID") = Me.OffID
        .Fields("OfficerID") = Me.FActor.Column(0)
        .Fields("StatusID") = 1
        .Update
        .AddNew
        .Fields("OffenID") = Me.OffID
        .Fields("OfficerID") = Me.FDPNSI.Column(0)
        .Fields("StatusID") = 2
        .Update
    End With
    rstAcc.Close
    
    With rstAcc
        .Open "AnalitycAcc", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
        .AddNew
        .Fields("OfID") = Me.OffID
        .Fields("PostsID") = Me.Fpost.Column(0)
        .Fields("ChangeID") = Me.FChg.Column(0)
        .Update
    End With
    rstAcc.Close
    Set rstAcc = Nothing
    
    MsgBox "Запись сохранена", vbOKOnly + vbInformation, ""
    
    Тут надо обновить поля
    
    On Error GoTo 0
    
ExitHere:
    Exit Sub

SaveCmd_Click_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure SaveCmd_Click, line " & Erl & "."

End Sub

https://www.sql.ru/forum/1305534/obnovlenie-svobodnoy-formy


Изменить значение в форме через макрокоманды

Пятница, 16 Ноября 2018 г. 19:35 + в цитатник
Добрый день.
Есть БД магазина, в ней есть таблица "Отделы", состоящая из двух столбцов - ID отдела и его название. Задание - написать макрос на изменение названия отдела, старое и новое название должны вводиться пользователем. Загвоздка в том, что обязательно должно быть сделано через макрокоманды, без использования ВБА.
Пытаюсь реализовать это так, как указано на прикрепленном скрине, через форму. Проблема в том, что новое название отдела (макрокоманда ЗадатьЗначение) не получается ввести - выдаёт ошибку "Приложению MS Access не удаётся найти имя "Введите новое название", введенное в выражение". Ну, я понимаю, почему он не может это найти, но не понимаю, как ввести своё значение, если [вот такое] указание параметра его не устраивает. Пыталась воспользоваться макрокомандами для создания переменных - то же самое. При этом если вместо [Введите новое название] написать текст, он спокойно работает и меняет название в таблице на этот текст.
Подскажите, пожалуйста, как реализовать, чтобы он воспринял значение, введенное с клавиатуры.

https://www.sql.ru/forum/1305493/izmenit-znachenie-v-forme-cherez-makrokomandy


Создание связей в MDB на SQL Server, сделать не доверенное соединение.

Пятница, 16 Ноября 2018 г. 13:41 + в цитатник
Как можно при создании связанной TableDef указать, что бы соединение было с сохранением пароля и не доверенным?

Строка подключения
ODBC;DRIVER=SQL Server;SERVER=testServer;UID=testUser;PWD=Parol;APP=NameForSessionDetection;DATABASE=TestDB


Так содаётся доверенное содинение, а нужно не доверенное
Dim TabDef As TableDef
Set TabDef = dstDB.CreateTableDef(tName)
TabDef.Connect = ConnStringDAO
TabDef.SourceTableName = tName
dstDB.TableDefs.Append TabDef


А вот так получается как надо - не доверенное с сохранением пароля
dstApp.DoCmd.TransferDatabase acLink, "ODBC Database", ConnStringDAO, acTable, "dbo." & tName, tName, , True

https://www.sql.ru/forum/1305462/sozdanie-svyazey-v-mdb-na-sql-server-sdelat-ne-doverennoe-soedinenie


Код VBA работает в ACCDB и не работает в ACCDE

Пятница, 16 Ноября 2018 г. 12:41 + в цитатник
Ссылка на первоисточник VBA doesn't work in accde but does in accdb

Проблема - не выполняется код VBA в скомпилированном файле ACCDE.
Попытки решения проблемы

1. сжатие и восстановление

2. декомпиляция

3. импортирование всех объектов в новую БД

Решение (временное или нет, но пока работает.

Удалить из исходного кода все пустые подпрограммы типа
Private Sub Form_Type_BeforeUpdate(Cancel As Integer)

End Sub
........
Private Sub Form_Load()

End Sub
.........
У меня такие подпрограммы возникают, когда надо, например, создать код для события Form_Close(), а в редакторе VBA первым всегда создаётся Form_Load(), затем только Form_Close(). Потом удаляю вручную. Или не удаляю...

-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?

https://www.sql.ru/forum/1305455/kod-vba-rabotaet-v-accdb-i-ne-rabotaet-v-accde


Добавление данных из полей формы в таблицу.

Четверг, 15 Ноября 2018 г. 11:51 + в цитатник
Собственно столкунулся давяча с проблемой которую решить не могу.
по нажатию кнопки на форме делается простейшее:
добавляется в таблицу из 2 полей на форме данные
1 на форме поле датаполе (в таблице дата)
2 на форме текстовоеполе (в таблице текст)


rivate Sub Надпись40_Click()

'Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("Таблица1", dbOpenDynaset)
rs.AddNew
rs!текст = Me!текстовоеполе
rs!Дата = Me!Датаполе
rs.Update
rs.Close
Me.Requery
Me.Refresh

DoCmd.Close
End Sub

собственно в чем проблема.... не добавляются в таблицу из текстового поля!
ни чего понять не могу.
создал новую таблицу.
добавилось все один раз и все...... где должен быть текст там пусто
помогите люди добрые советом

https://www.sql.ru/forum/1305379/dobavlenie-dannyh-iz-poley-formy-v-tablicu


Удаление записи из таблицы (странности)

Четверг, 15 Ноября 2018 г. 10:27 + в цитатник
Как такое возможно, и что с этим сделать можно?

Для удаления записей из таблицы использую простую функцию.

          MyDb.TableDefs.Refresh
If DCount("*", TBL_NAME, USLOVIE) = 0 Then
       Me!messag = Me!messag & vbCrLf & "Запись " & USLOVIE & "  УЖЕ удалена из " & TBL_NAME 
       & "  базы: " & BAZA_NAME
 Else
        MyDb.Execute "DELETE FROM " & TBL_NAME & " where " & USLOVIE 
        Me!messag = Me!messag & vbCrLf & "Запись " & USLOVIE & " удалена из " & TBL_NAME & "  
         базы: " & BAZA_NAME
End If


Записи удаляются без проблем, но не все.
Есть записи, которые физически удаляются и в таблице не присутствуют, но
DCount("*", TBL_NAME, USLOVIE) = 1

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

https://www.sql.ru/forum/1305369/udalenie-zapisi-iz-tablicy-strannosti


Получить дату из формы

Четверг, 15 Ноября 2018 г. 10:05 + в цитатник
Всем привет. Есть форма, на ней поле даты. Человек выбирает дату и жмет кнопку.
Выполняется запрос в значении которого должна быть дата с формы, но там пустота.
Как решить эту проблему?

Select [ФОРМЫ]![FORM1]![ПОЛЕ0];

Выдает пустой результат.
Не путать про выборки по датам/дате.
Речь идет именно о переносе значения даты из формы в итоговую
Таблицу запроса.

https://www.sql.ru/forum/1305368/poluchit-datu-iz-formy


Поведение макроса AutoExec

Среда, 14 Ноября 2018 г. 13:29 + в цитатник
Друзья, доброго времени суток. В проекте есть форма, которая открывается макросом AutoExec. Не помню, почему я отказался просто назначить в настройках запуска БД открытие формы при этом запуске, но не суть... В общем, при работе с одной из форм проекта (не та, что открывается при запуске) происходит непонятная пока для меня вещь. На этой форме есть Список с обработанным событием Click. Так вот, при клике на этот список, вдруг ни с того ни с сего открывается та самая форма, которая должна открываться при загрузке БД (та самая, чьё имя прописана в AutoExec)... Причём в событии "клик" для списка нет никаких упоминаний об AutoExec. Более того, если в коде процедуры Список_Click поставить BreakPoint, код не останавливается (либо не срабатывает вовсе)... Пока не могу понять в чем дело, грешу на этот AutoExec. Потому что стартовая форма больше нигде и никак не вызывается, кроме как через этот AutoExec... Может он ещё при каких-нибудь стечениях обстоятельств может исполняться (кроме запуска БД)?

https://www.sql.ru/forum/1305336/povedenie-makrosa-autoexec


И снова фильтрация

Вторник, 13 Ноября 2018 г. 11:35 + в цитатник
Прошу совета.

Форма для регистрации нарушения (на рис.). Свободная. Источники комбо прописаны sql и заполняются при загрузке.
После чего разносятся по разным таблицам. Вопрос в разделе "сведения о нарушителе". Мучают сомнения как лучше организовать выбор этого самого нарушителя. Данные берутся из таблицы People. Мои варианты:
1. Подформа с источником - таблицей People или запросом на основе этой таблицы со своим фильтром в заголовке. (на форуме мнения разнятся, но мне на глаза больше отрицательные попадаются).
2. Просто комбобокс с источником - запросом с peopleid в качестве связного поля, которое потом будет разноситься в другие таблицы. Но тогда как реализовать отражение нужной записи в полях формы (фамилия, имя, отчество, дата рождения).
3. Поля (ФИО и дата) в основной форме, заполнение через рекордсет и фильтрация (код не получается, просидел три дня, вчера психанул))))

https://www.sql.ru/forum/1305271/i-snova-filtraciya


удаленное копирование файлов

Понедельник, 12 Ноября 2018 г. 23:13 + в цитатник
Добрый день!

есть сетевая папка A и сетевая папка B с хорошим линком между ними. В папку А выкладываются файлы размером от 50 до 75Мб

есть удаленный локальный компьютер с access приложением. Можно ли из access приложения копировать файлы из папки A в папку В напрямую минуя локальный компьютер

Спасибо

https://www.sql.ru/forum/1305244/udalennoe-kopirovanie-faylov


Ограничение ухода с текущей записи

Понедельник, 12 Ноября 2018 г. 12:17 + в цитатник
Доброе время суток всем. Возник вопрос, как не дать пользователю перейти с текущей записи если он не заполнил все поля? Основная проблема в том что форма ленточная и пользователи переходят на следующую запись посредством мышки, pageup и pagedown итд не используют.

https://www.sql.ru/forum/1305214/ogranichenie-uhoda-s-tekushhey-zapisi


Ограничение ухода с текущей записи

Понедельник, 12 Ноября 2018 г. 12:17 + в цитатник
Доброе время суток всем. Возник вопрос, как не дать пользователю перейти с текущей записи если он не заполнил все поля? Основная проблема в том что форма ленточная и пользователи переходят на следующую запись посредством мышки, pageup и pagedown итд не используют.

http://www.sql.ru/forum/1305214/ogranichenie-uhoda-s-tekushhey-zapisi


лечение таблиц Access

Понедельник, 12 Ноября 2018 г. 05:14 + в цитатник
добрый день, знатокам Access.

я наверняка не первый и не последний у кого случился сбой некоторых таблиц в access. На компьютере стоит простенький бэкап, который каждый вечер копирует папку с access в архив, обычно это происходит в 4-5 утра и в это время access уже закрыт (или с ним нет никаких активных действий), файл базы архивируется. Открываешь с утра и дальше работает. Но вчера компьютер "притянул к экрану", в момент копирования я дорабатывал файл базы и произошло зависание access, после открытия в файле базы оказались недоступны 3 таблицы. Все остальные таблицы доступны, открываются работают, формы и их модули (все что дописано за день) тоже отлично работают. Грешу на конфликт копирования и access, т.к. иных причин не вижу, а скорее всего, просто не знаю. Есть бэкап на прошлый день, из которого можно восстановить 3 таблицы, там не будет некоторой информации, но это уже не смертельно, можно ручками допечатать.

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

Есть ли какие-то варианты удалить поврежденные таблицы не средствами access, т.к. сам access не дает никак это сделать. On-line сервисы в инэте отказались принимать такой файл, пишут что файлы такого типа не поддерживаются. Как вариант перекину все доработки и новую информацию за день обратно в бэкап и начну со вчера. Но может быть есть какой-то действенный способ поправить файл без участия самого access и удалить остатки таблиц, а на их место поставить новые и заново организовать связи таблиц в текущем файле базы. В данный момент если открыть "схему данных", то при считывании состава базы система также выводит сообщение "нераспознаваемый формат базы данных: ....путь файла...", судя по всему, как раз пытаясь считать те самые поврежденные таблицы, т.к. после этого "схема данных" открывается и не поврежденные таблицы в нее можно легко добавить и посмотреть связи.

Заранее благодарен за ссылочки или практическую рекомендацию как можно попробовать решить проблему

https://www.sql.ru/forum/1305198/lechenie-tablic-access


лечение таблиц Access

Понедельник, 12 Ноября 2018 г. 05:14 + в цитатник
добрый день, знатокам Access.

я наверняка не первый и не последний у кого случился сбой некоторых таблиц в access. На компьютере стоит простенький бэкап, который каждый вечер копирует папку с access в архив, обычно это происходит в 4-5 утра и в это время access уже закрыт (или с ним нет никаких активных действий), файл базы архивируется. Открываешь с утра и дальше работает. Но вчера компьютер "притянул к экрану", в момент копирования я дорабатывал файл базы и произошло зависание access, после открытия в файле базы оказались недоступны 3 таблицы. Все остальные таблицы доступны, открываются работают, формы и их модули (все что дописано за день) тоже отлично работают. Грешу на конфликт копирования и access, т.к. иных причин не вижу, а скорее всего, просто не знаю. Есть бэкап на прошлый день, из которого можно восстановить 3 таблицы, там не будет некоторой информации, но это уже не смертельно, можно ручками допечатать.

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

Есть ли какие-то варианты удалить поврежденные таблицы не средствами access, т.к. сам access не дает никак это сделать. On-line сервисы в инэте отказались принимать такой файл, пишут что файлы такого типа не поддерживаются. Как вариант перекину все доработки и новую информацию за день обратно в бэкап и начну со вчера. Но может быть есть какой-то действенный способ поправить файл без участия самого access и удалить остатки таблиц, а на их место поставить новые и заново организовать связи таблиц в текущем файле базы. В данный момент если открыть "схему данных", то при считывании состава базы система также выводит сообщение "нераспознаваемый формат базы данных: ....путь файла...", судя по всему, как раз пытаясь считать те самые поврежденные таблицы, т.к. после этого "схема данных" открывается и не поврежденные таблицы в нее можно легко добавить и посмотреть связи.

Заранее благодарен за ссылочки или практическую рекомендацию как можно попробовать решить проблему

http://www.sql.ru/forum/1305198/lechenie-tablic-access


Передать свой Type в/через Event

Воскресенье, 11 Ноября 2018 г. 22:16 + в цитатник
Господа, приветствую!

Создал свой Public Type в отдельном модуле.
+
'параметры для передачи поклассу прослушки
Public Type AlterParams
    NameFrmWork As String       
    LineId As Long              
    TypeComm As Long            
    TypeWork As Long            
End Type

Использовал ранее класс, спасибо Predeclared, когда то давал мне как пример, только добавил свои параметры:
+
Public Event Alteration(ByVal MyFrm As String, ByVal TypeWork As Long, ByVal LineId As Long, ByVal TypeBtn As Long, ByVal ParentWin As Long)

'---------------------------------------------------------------------------------------
' Procedure : RaiseAlteration
' Purpose   : переброска параметров из событийной формы в слушающую
'---------------------------------------------------------------------------------------
Public Sub RaiseAlteration(ByVal MyFrm As String, ByVal TypeWork As Long, ByVal LineId As Long, ByVal TypeBtn As Long, ByVal ParentWin As Long)
    RaiseEvent Alteration(MyFrm, TypeWork, LineId, TypeBtn, ParentWin)
End Sub

'---------------------------------------------------------------------------------------
' Procedure : Instance
' Purpose   : поднятие класса и возврат ссылки на него в вызывающую форму
'---------------------------------------------------------------------------------------
Public Property Get Instance() As clsAlterationService
    Set Instance = Me
End Property
Хотел переделать...Вместо глухого набора параметров хотел впихнуть свой созданный тип.
Вариант
Public Event Alteration(AlterParam As AlterParams)

'---------------------------------------------------------------------------------------
' Procedure : RaiseAlteration
' Purpose   : переброска параметров из событийной формы в слушающую
'---------------------------------------------------------------------------------------
Public Sub RaiseAlteration(AlterParam As AlterParams)
    RaiseEvent Alteration(AlterParam)  '-->бьет ошибку
End Sub
не прокатывает. В переводе
- Только определяемые пользователем типы, определенные в модулях общедоступных объектов, могут быть сопоставлены варианту или переданы функциям с поздней привязкой

При попытке объявить свой тип в классе с Private, приводит к другой ошибке:
- Частное перечисление и пользовательские типы не могут использоваться в качестве параметров или возвращаемых типов для открытых процедур, общих элементов данных или полей общих пользовательских типов.

Как можно использовать свой тип для передачи в параметре?
При этом из формы свой тип передается в класс без проблем..

https://www.sql.ru/forum/1305193/peredat-svoy-type-v-cherez-event


Передать свой Type в/через Event

Воскресенье, 11 Ноября 2018 г. 22:16 + в цитатник
Господа, приветствую!

Создал свой Public Type в отдельном модуле.
+
'параметры для передачи поклассу прослушки
Public Type AlterParams
    NameFrmWork As String       
    LineId As Long              
    TypeComm As Long            
    TypeWork As Long            
End Type

Использовал ранее класс, спасибо Predeclared, когда то давал мне как пример, только добавил свои параметры:
+
Public Event Alteration(ByVal MyFrm As String, ByVal TypeWork As Long, ByVal LineId As Long, ByVal TypeBtn As Long, ByVal ParentWin As Long)

'---------------------------------------------------------------------------------------
' Procedure : RaiseAlteration
' Purpose   : переброска параметров из событийной формы в слушающую
'---------------------------------------------------------------------------------------
Public Sub RaiseAlteration(ByVal MyFrm As String, ByVal TypeWork As Long, ByVal LineId As Long, ByVal TypeBtn As Long, ByVal ParentWin As Long)
    RaiseEvent Alteration(MyFrm, TypeWork, LineId, TypeBtn, ParentWin)
End Sub

'---------------------------------------------------------------------------------------
' Procedure : Instance
' Purpose   : поднятие класса и возврат ссылки на него в вызывающую форму
'---------------------------------------------------------------------------------------
Public Property Get Instance() As clsAlterationService
    Set Instance = Me
End Property
Хотел переделать...Вместо глухого набора параметров хотел впихнуть свой созданный тип.
Вариант
Public Event Alteration(AlterParam As AlterParams)

'---------------------------------------------------------------------------------------
' Procedure : RaiseAlteration
' Purpose   : переброска параметров из событийной формы в слушающую
'---------------------------------------------------------------------------------------
Public Sub RaiseAlteration(AlterParam As AlterParams)
    RaiseEvent Alteration(AlterParam)  '-->бьет ошибку
End Sub
не прокатывает. В переводе
- Только определяемые пользователем типы, определенные в модулях общедоступных объектов, могут быть сопоставлены варианту или переданы функциям с поздней привязкой

При попытке объявить свой тип в классе с Private, приводит к другой ошибке:
- Частное перечисление и пользовательские типы не могут использоваться в качестве параметров или возвращаемых типов для открытых процедур, общих элементов данных или полей общих пользовательских типов.

Как можно использовать свой тип для передачи в параметре?
При этом из формы свой тип передается в класс без проблем..

http://www.sql.ru/forum/1305193/peredat-svoy-type-v-cherez-event


Перехват CTRL+S

Воскресенье, 11 Ноября 2018 г. 16:24 + в цитатник
всем доброе время суток.

поправьте пожалуйста что делаю нет так. вроде все просто, пишу
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Call procПерехватКлавиш(KeyCode, Shift, Form.Name)
End Sub

Public Sub procПерехватКлавиш(KeyCode As Integer, Shift As Integer, frmname As String)
If KeyCode = vbKeyS And Shift = acCtrlMask Then
   MsgBox "CTRL+S" 'вставил для проверки работы
   DoCmd.Save acForm, frmname
End If
End Sub

пробегаю отладчиком, получается, что как только CTRL нажимаешь, то событие уже срабатывает и "хватает" только CTRL (ну или то что раньше нажмешь), соответственно, дальше по условию не срабатывает то, что нужно. Если повесить на KeyUp, то корректно работает, но как-то "непревычно", что надо отпустить кнопку, вместо того, чтобы нажать. Непойму в чем туплю, вроде все просто, несколько часов уже мудрю и что-то никак. Глянул примеры с VB, VBA - вроде все верно.

Подскажите в чем "затуп"?

Заранее спасибо

https://www.sql.ru/forum/1305187/perehvat-ctrl-s


Перехват CTRL+S

Воскресенье, 11 Ноября 2018 г. 16:24 + в цитатник
всем доброе время суток.

поправьте пожалуйста что делаю нет так. вроде все просто, пишу
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Call procПерехватКлавиш(KeyCode, Shift, Form.Name)
End Sub

Public Sub procПерехватКлавиш(KeyCode As Integer, Shift As Integer, frmname As String)
If KeyCode = vbKeyS And Shift = acCtrlMask Then
   MsgBox "CTRL+S" 'вставил для проверки работы
   DoCmd.Save acForm, frmname
End If
End Sub

пробегаю отладчиком, получается, что как только CTRL нажимаешь, то событие уже срабатывает и "хватает" только CTRL (ну или то что раньше нажмешь), соответственно, дальше по условию не срабатывает то, что нужно. Если повесить на KeyUp, то корректно работает, но как-то "непревычно", что надо отпустить кнопку, вместо того, чтобы нажать. Непойму в чем туплю, вроде все просто, несколько часов уже мудрю и что-то никак. Глянул примеры с VB, VBA - вроде все верно.

Подскажите в чем "затуп"?

Заранее спасибо

http://www.sql.ru/forum/1305187/perehvat-ctrl-s


ComboBox

Воскресенье, 11 Ноября 2018 г. 13:20 + в цитатник
Возможно ли,если в форме запрещены изменения,сделать невозможным раскрытие списка(как бы недоступной кнопочку с треугольником в полеСоСписком-хотя,в моем понимании,это абсолютно ни к чему. Но что поделаешь заказчику "жизненно важно")?

https://www.sql.ru/forum/1305180/combobox


ComboBox

Воскресенье, 11 Ноября 2018 г. 13:20 + в цитатник
Возможно ли,если в форме запрещены изменения,сделать невозможным раскрытие списка(как бы недоступной кнопочку с треугольником в полеСоСписком-хотя,в моем понимании,это абсолютно ни к чему. Но что поделаешь заказчику "жизненно важно")?

http://www.sql.ru/forum/1305180/combobox



Поиск сообщений в rss_sql_ru_access_programming
Страницы: 353 ... 327 326 [325] 324 323 ..
.. 1 Календарь