|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
nataxa23Но я так же хотела сказать, что проверку поля из первой таблицы так не сделать, потому что записи у меня добавляются путем присваивания поля со счетчиком из первой таблицы, связанному полю из второй таблицы для последующих записей. Я все время пытаюсь это сказать, вот код того как идет добавление: Код: vbnet 1. 2. 3.
Поэтому в моем случае проверка поля «applType» для первой таблицы, всегда будет сообщать об ошибке - значение всегда будет совпадать с данными в поле. Разве здесь я не права? При создании записи таким образом: - в таблице applications запись не добавляется, а редактируется(если, конечно, пользователь внесет изменения) - в таблице applDetails будут добавляться новые записи. Соответственно код вот этой проверки: Код: vbnet 1. 2. 3. 4. 5. 6.
нужно переписать. Т.к. то, что я написал для редактирования существующей записи(таблицы applications) не подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 23:30 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
и вторую проверку тоже нужно переписать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 23:32 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
например, так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
кстати, хоть вам это сейчас и не интересно, я, думаю, что можно будет заблокировать крест и в tabbed интерфейсе. Будет время - попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 23:57 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
Сергей, решила уточнить, протестила Ваш код, все равно проверял и выдавал ошибку, я правда с ориентировалась и поменяла местами прописанный блок условия запросов в «Проверим applType на повторения» и «Проверим detailsType на повторения». Вроде срабатывает теперь как надо и отлавливает ошибку когда надо: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
Вакшуль Сергейкстати, хоть вам это сейчас и не интересно, я, думаю, что можно будет заблокировать крест и в tabbed интерфейсе. Будет время - попробую. Если честно, то очень интересно, не откажусь и от такого варианта знать как это возможно было бы реализовывать. И если что приму участие в тестировании. Спасибо Вам еще раз за огромную помощь мне, за потраченное время в решении для меня двух больших проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2017, 00:42 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
ну и напоследок, насчет классов - 20706929 Не знаю, будете ли применять, но если да, то выкладываю последнюю их версию. Используйте этот код. Все-таки тогда делал впопыхах, кое-что нужно было подправить (обработку откатов событий - Cancel=true). Там важный момент - порядок инициализации: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2017, 00:53 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
Вакшуль СергейНе знаю, будете ли применять, но если да, то выкладываю последнюю их версию. Используйте этот код. Обязательно буду, хочу разобраться в Вашем примере, спасибо. Это очень грамотный и талантливый подход, я это сразу поняла, как только Вы его предложили. Мне это очень интересно, главное разобраться. Сергей в тысячный раз выражаю Вам свою благодарность за помощь в решении непосильной для меня проблемы, за пример и потраченное время на все вместе взятое. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2017, 11:53 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
nataxa23, в принципе ваши таблицы --это вариант накладных --есть головная часть(не повторяются) --и может быть табличная часть ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2017, 12:53 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
nataxa23, сейчас же у вас ситуация, что стол можно продать только один раз (только одному клиенту) хотя обычно требуется продажа столов любому числу клиентов, только нельзя продать некому клиенту 2 раза стол если добавить в ключ дату --то это приведет к запрету повтора товарной позиции в данной накладной ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2017, 12:57 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
nataxa23, пример прилагаю ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2017, 13:31 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
nataxa23, ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2017, 13:32 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА, прошу меня извинить, что отвечаю с опозданием, разбираюсь в коде Сергея и попутно пытаюсь привести свой код в порядок. Спасибо, что тоже заинтересовались моей темой. Я просмотрела Ваш пример, но тут есть некоторые нюансы, которые были согласованы с заказчиком. Форма для заполнения должна быть как можно проще для пользователей - не иметь ни лишних дополнительных кнопок, ни тем более дополнительных всплывающих форм для другого какого-либо ввода. Им нужно, чтобы заполнение данными было в одной простой форме. Я даже по этому не стала делать форму с подчиненной формой. С моей стороны в этом отношении просьба была выполнена - простая форма, кнопок по минимуму (сохранить, добавить, ну и кнопки переходов по записям для просмотра). Вы писали: ПЕНСИОНЕРКАесли добавить в ключ дату --то это приведет к запрету повтора товарной позиции в данной накладной Не сильно поняла Вашу мысль. То что акс отлавливает в моих 2-х полях ошибку это и есть запрет повтора, аксес таким образом и пытается сказать пользователю, что в этих полях должно быть значение уникальным. Моя же проблема была связана с тем, что после срабатывания ошибки аксес не удерживает текущую запись, чтобы юзер мог исправить. До того момента, как Сергей помог мне с запросом я пыталась осуществлять проверку перед сохранением, и кстати говоря в общем смысле, я шла то в правильном направлении, но только код моей проверки, который я пыталась изначально использовать не совсем подходил для моего варианта работы формы. Я приводила здесь пример своего кода, который нарыла в нете: 20703030 А здесь Сергей хорошо разъяснил момент, который происходит у меня на самом деле: 20712254 и в конечном итоге помог с запросом. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2017, 18:00 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
nataxa23но только код моей проверки, который я пыталась изначально использовать не совсем подходил для моего варианта работы формы. Я приводила здесь пример своего кода, который нарыла в нете: Код: vbnet 1. 2. 3.
Уж подобное надо делать без запинки самостоятельно. А не нарывать в нете. Какое-то тяжелое впечатление производит вся эта страшно многословная тема. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2017, 18:37 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
nataxa23Форма для заполнения должна быть как можно проще для пользователей - не иметь ни лишних дополнительных кнопок, ни тем более дополнительных всплывающих форм для другого какого-либо ввода не могу припомнить какой-то тупости у исполнителей --две минуты пояснений при установке им всегда было достаточно --затем они обычно спрашивали, а можно ли добавить некие плюшечки типа фильтра/поиска/распечатки конечно я делала работу с повтором немного по другому(не люблю системную ругань, обычно пишу свою) например в вашем случае возможно применила бы форму1 с подчиненной формой2 --ввожу в свободное поле формы1 значение для первой таблицы -----если найдено --высвечиваю запись из первой таблицы и в подчиненной форме --записи из второй(если есь) -----если не найдено --запрос добавить запись в таб1 или отказаться --ввожу в свободное поле формы1 значение для второй таблицы -----если не нашла --добавляю -----если нашла показываю предупреждение, что запись во второй таблице и даю возможность оператору исправиться(при этом он видит в подчиненной форме, а что же уже есть в таблице2 по заданному полю из таблицы1) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2017, 11:51 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
guest_rusimportВакшуль Сергейguest_rusimport, я с наскока не нашел API код, который может заблокировать крестик, если приложение работает в tabbed интерфейсе. также не нашел код, который может заблокировать крестик у формы, развернутой на весь экран(не всплывающей), при работе в традиционном ранее оконном интерфейсе(не tabbed). Если найдете источник, поделитесь, пожалуйста. Хотелось бы добить тему. Здравствуйте, Сергей! Поиски не увенчались успехом, хотя вопросы такие встречал, именно апишного решения не нашел. Хотя мне это кажется странным, ведь должно же оно быть. Но к сожалению сам не силен в этом вопросе. Тоже было бы интересно посмотреть решение. Я еще поковырял тему, но не очень успешно. До самого креста через API я не добрался. Дело в том, что и сам крест, и ярлычки вкладок, и серая область, на которой они лежат, являют собой единое окно, с одним дескриптором. До этого окна я дохожу, двигаясь от главного окна Access вниз, используя Код: vbnet 1.
и Код: vbnet 1.
или просто сразу из формы вот так: Код: vbnet 1. 2. 3. 4.
а потом блокирую: Код: vbnet 1. 2.
В результате получается, что блокируется не только крест, но и все ярлычки. Т.е. нельзя переключится на другую форму, пока не разблокируешь: Код: vbnet 1. 2.
Собственно это и все, чего смог добиться. Не нравится. На картинке ниже в окне Spy++ видно блокируемое окно. Видно, что внутрь уже не войдешь :( А Inspect.exe легко доходит до креста(тоже видно на картинке). Inspect.exe использует UI Automation: https://msdn.microsoft.com/en-us/library/windows/desktop/ee684009(v=vs.85).aspx Но как из VBA с ней работать - понятия не имею. Но даже если бы и смог, то нужны будут библиотеки, которые нужно за собой тащить. Короче, цель средства не оправдывает. Хотя, возможно, это просто я не в курсе, как от этого окна(область ярлычков с крестиком) добраться до креста и взять его под контроль. Если у кого-то есть идеи, было бы интересно послушать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2017, 02:52 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
Доброе утро, Сергей а так попробуйте, по идее, для найденного дескриптора окна должен заблокироваться только крестик Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
где Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2017, 09:10 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
Доброе утро, guest_rusimport :) Код: vbnet 1.
lngMenu в результате будет равно 0, т.е. ссылку на системное меню мы не получим. У этого окна нет доступного системного меню. Но, даже если с помощью GetSystemMenu того "единого" окна мы и получили бы ссылку на его системное меню, то его крест(Close button) это не тот крест, который нам нужно заблокировать. Я так понимаю, что крест, закрывающий вкладки, это не Close button обычного окна Windows. Это контрол. Т.е. та область, на которую мы получили дескриптор: Код: vbnet 1. 2.
это в терминах Access - подчиненная форма, на которой лежат контролы управления:область для ярлычков, сами ярлычки и та самая заветная кнопка "крестик", управляющая видимостью ярлычков. Как до нее добраться и контролировать, я не знаю. Как возможное направление решения главной задачи(выдать сообщение по клику на область "креста"), думаю, можно получить примерные координаты кнопки "крест", а дальше, отловить клик. Допустим клик отловили, но можно ли его отменить и как - я не знаю, нужно разбираться. Почему я говорю "примерные координаты", потому, что если вертикальные размеры мы знаем, то горизонтальные - нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2017, 12:57 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
Вакшуль СергейДопустим клик отловили, но можно ли его отменить и как - я не знаю, нужно разбираться. Посмотрел - да, можно. Нужно будет оформить это в код ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2017, 14:34 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
С точки зрения использования 2003 акса было бы интересно посмотреть это решение - Вакшуль Сергей... код, который может заблокировать крестик у формы, развернутой на весь экран(не всплывающей), при работе в традиционном ранее оконном интерфейсе(не tabbed)... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2017, 16:50 |
|
Отследить изменения на закрытие и отмену формы
|
|||
---|---|---|---|
#18+
guest_rusimportС точки зрения использования 2003 акса было бы интересно посмотреть это решение - Вакшуль Сергей... код, который может заблокировать крестик у формы, развернутой на весь экран(не всплывающей), при работе в традиционном ранее оконном интерфейсе(не tabbed)... получилось, но есть и ложка дегтя: 20774213 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2017, 02:06 |
|
|
start [/forum/topic.php?fid=45&msg=39504331&tid=1612123]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 315ms |
total: | 458ms |
0 / 0 |