|
Макрос на проверку полей
|
|||
---|---|---|---|
#18+
Помогите плиз!! Уже измучилась. уверена решение какое то прсотое но не приходит в голову. вобщем есть форма на ней поля. при нажатии кнопки надо чтоб данные с них заносились в базу скл. Я хотела через vba сделать но не получается. в итоге сделала макрсоом. все прекрасно заносит. НО! Мне также нужна проверка на этой форме. я ее делала на vba/(ниже прилагается) и как теперь совместить я не понимаю((( Либо ставить процедуру либо макрос. а через процедуру не получается сделать добавление в базу. через макрос не могу сделать проверку(((( Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2016, 11:19 |
|
Макрос на проверку полей
|
|||
---|---|---|---|
#18+
Kassiaнадо чтоб данные с них заносились в базу скл. Я хотела через vba сделать но не получается. И что не получается? Вы же создали ADODB.Recordset, так откройте его на нужной таблице и добавьте запись. Kassiaв итоге сделала макрсоом... и как теперь совместить я не понимаю Можно выполнить DoCmd.RunMacro, но это извращение. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2016, 11:41 |
|
Макрос на проверку полей
|
|||
---|---|---|---|
#18+
Анатолий ( Киев ), я уже пробовала. не получается добавить запись. может я не так прописываю код добавления конечно. но вроде все верно. и так пробовала: 'rs.Open "insert into s_kontr (kontr,pred,summa,stat) values ('" & Me.kontr & "','" & Me.pred & "','" & Me.Summa & "','" & Me.stat & "')", xCon, adOpenForwardOnly и апдейтом. ничего не выходит. ошибка. вот только макрсоом получилось норм. но теперь не проверить ошибки( ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2016, 11:49 |
|
Макрос на проверку полей
|
|||
---|---|---|---|
#18+
Kassiars.Open "insert into ... Ну это вы замутили... Попробуйте так: Код: vbnet 1. 2. 3. 4. 5. 6. 7.
Можно выполнить и запрос: xCon.Execute "insert into..." Но в случае с "insert into...values..." убедительно не советую. Такой запрос очень капризен. В вашем случае он выполняется только потому, что у вас в Me.Summa целое число или десятичный разделитель - "." (точка). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2016, 13:00 |
|
Макрос на проверку полей
|
|||
---|---|---|---|
#18+
Не получается( Выдает ошибку может как то еще можно записать)? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2016, 13:13 |
|
Макрос на проверку полей
|
|||
---|---|---|---|
#18+
Kassia, подсказка на будущее - когда ты видишь вот такое или подобное окошко, практически всегда можно сделать Ctrl+C и получить в буфер его содержимое. И показать его людям в человеческом виде. Это сильно облегчит жизнь и тебе самой и твоим визави... Щаз-то оно ни к чему, а вот если ошибка будет более экзотическая... . ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2016, 13:21 |
|
Макрос на проверку полей
|
|||
---|---|---|---|
#18+
rs.Open "SELECT * FROM s_kontr WHERE 1=0", xCon, adOpenKeyset, adLockOptimistic Забыл, что по умолчанию - ReadOnly. Если и это не поможет, надо ждать помощи от спецов по SQL Server. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2016, 14:15 |
|
Макрос на проверку полей
|
|||
---|---|---|---|
#18+
Анатолий, спасибо огромное получилось. только у меня пришлось делать обнволением. но благодаря вам нашла эту функцию. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
ТОлько теперь возник еще вопрос( У меня при входе открывается окно и там выводиться порядковый номер. вот его я обновляю и вставляю данные. но чтоб добавить еще один контракт я нажимаю кнопку добавить. вот как запросом вывести последний номер по порядку? Или лучше так не делать. потому что с базой работает несколько пользователей, не будут ли они затирать друг друга. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2016, 06:19 |
|
Макрос на проверку полей
|
|||
---|---|---|---|
#18+
[quot Kassia] Код: vbnet 1. 2. 3. 4.
1. "nom = '" & Me.nom & "'" - это поиск по текстовому полю. У вас что, порядковый номер не числовой? 2. После выполнения Find нужно убедиться, что запись найдена. В ADODB.Recordset это проверка св-ва EOF при поиске вперед (в DAO.Recordset св-во NoMatch). 3. Видимо вы открываете всю таблицу и ищете одну запись. Проще и быстрее использовать запрос с "...WHERE nom = '" & Me.nom & "'" Kassiaкак запросом вывести последний номер по порядку? Или лучше так не делать. потому что с базой работает несколько пользователей, не будут ли они затирать друг друга. Опять же здесь важно какого типа ваш номер, числовой или текстовый. А также важно - получение номера и добавление записи разделены во времени или это одна операция. Ответите - продолжим. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2016, 11:17 |
|
Макрос на проверку полей
|
|||
---|---|---|---|
#18+
Все сделала разобралась наконец то. все данные добавляет и условия выполянет. едиственное я скрыла порядковый номер и просто добавляю данные и теперь он не отображется на форме. я не могу его привязать к другой форме. то есть у меян у контракта несколько соглашений. как вывети порядковый номер если пользователь нажал например добавить соглашение в отдельный тексбокс? чтобы потом я взяла его с этого текстбокса и вставила в форму соглашений чтобы он привязался по номеру к нему. пыталась так: cn.Open "Select nom from s_kontr where kontr = '" & Me.kontr.Value & "' and summa = '" & Me.summa.Value & "' and pred = '" & Me.pred.Value & "' and stat = '" & Me.stat.Value & "'", cn, adOpenStatic, adLockReadOnly Me.Поле64.Value = cn четсно вобще не знаю как это сделать. поэтому не ругайтесь если бред полный( ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 08:54 |
|
Макрос на проверку полей
|
|||
---|---|---|---|
#18+
Kassia cn .Open "Select nom from s_kontr where kontr = '" & Me.kontr.Value & "' and summa = '" & Me.summa.Value & "' and pred = '" & Me.pred.Value & "' and stat = '" & Me.stat.Value & "'", cn , adOpenStatic, adLockReadOnly Me.Поле64.Value = cn не ругайтесь если бред полный( Не ругаюсь, но бред полный. cn, это, видимо, Connection, поэтому вместо cn.Open нужно rs .Open, т.е.: Код: vbnet 1.
Св-во Value можно не указывать - оно по умолчанию. Присвоение значения: Код: vbnet 1.
Но запись может быть и не найдена, поэтому лучше так: Код: vbnet 1. 2. 3. 4. 5.
Теперь ...and summa = '" & Me.summa & "'... У вас что, поле "summa" текстовое? Если числовое, то зачем апострофы? К тому же не в том месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 10:04 |
|
Макрос на проверку полей
|
|||
---|---|---|---|
#18+
Анатолий ( Киев ), спасибо все получилось) Правда еще есть вопрос. Я это сделла с порядковым номером чтобы у меня заработал запрос на формирование в ексель. ОН до этого работал. Но потом я переделала и перестал. то есть у меня была связь порядковый номер контракта - и я его присваивала соглашению. чтобы потом этот запрос в ексель формирвоать. сейчас я снова вернула обратно и все равно не работает. пишет ошибку: 3265 не удается найти объект в семейсте соответвующий порядковому номеру. я конечно не знаю в чем причина но думала из-за того что соглашение ссылается не на порядковый номер контракта. потому что у меня есть база до исправлени и там все работает( Может подсказать как исправить эту ошибку?))) Ругается на эту строку: Код: vbnet 1. 2.
весь код формирования выгрузки в ексель: Код: 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. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 12:17 |
|
Макрос на проверку полей
|
|||
---|---|---|---|
#18+
Kassia.... НО! Мне также нужна проверка на этой форме.....Это всё из HELPA (его Вы должны читать) Событие До обновления часто используется для проверки соответствия данных условиям на значение Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 15:52 |
|
|
start [/forum/topic.php?fid=45&msg=39238932&tid=1613487]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 143ms |
0 / 0 |