|
|
|
| Проблема в том что не работает параметр Response процедуры NotList.
Что я сделал:
1. Код я перенес в отдельный модуль:
Public Function frm_SOTRUD_PRIMECH_NotInList(NewData As String, Response As Integer)
On Error GoTo 999
Response = False
CurrentDb.Execute ("INSERT INTO S_PRIM([NAME]) VALUES('" & NewData & "')"), dbFailOnError
Response = acDataErrAdded
Exit Function
999:
MsgBox Err.Description, vbCritical, Err.Number
Err.Clear
End Function
2. в параметре Comboxa вешаю : =frm_SOTRUD_PRIMECH_NotInList([PRIMECH];0) | |
|
| |
|
|
|
| Response = False - это зачем?
Вообще за такое вольное обращение с типами переменных можно и поплатиться... ACCESS конечно простит когда в Integer пихают Boolean.... но другие я зыки могут сильно обидеться, лучше сразу привыкать к хорошему.
Поворчал, теперь по существу
я бы сделал так:
Public Function frm_SOTRUD_PRIMECH_NotInList(NewData As String) as integer
On Error GoTo 999
CurrentDb.Execute ("INSERT INTO S_PRIM([NAME]) VALUES('" & NewData & "')"), dbFailOnError
frm_SOTRUD_PRIMECH_NotInList = acDataErrAdded
Exit Function
999:
MsgBox Err.Description, vbCritical, Err.Number
Err.Clear
End Function
|
Вызывал бы так:
Private Sub Поле_NotInList(NewData As String, Response As Integer)
Response = frm_SOTRUD_PRIMECH_NotInList(NewData)
End Sub
|
| |
|
| |
|
|
|
| вообще ваша функция не универсальна
вот нашел в закромах
Function NotInListWOFrm(strTbl As String, strFld As String) As Integer
'***************************************************************************************
' Author : Oleg Smorchkov
' Date : 6 Октябрь 1999
' Comments : добавление данных в таблицу при событии NotInList
' strTbl - имя таблицы для добавления
' strFld - имя поля для добавления
'***************************************************************************************
On Local Error GoTo NotInListWOFrm_ERR
Dim ctlList As Control
Set ctlList = Screen.ActiveControl
If MsgBox("Значение отсутствует в списке. Добавить?", vbOKCancel) = vbOK Then
CurrentDb.Execute ("INSERT INTO " & strTbl & "(" & strFld & ") VALUES ('" & ctlList.Text & "');")
NotInListWOFrm = acDataErrAdded
Else
NotInListWOFrm = acDataErrContinue
ctlList.Undo
End If
NotInListWOFrm_EXIT:
Exit Function
NotInListWOFrm_ERR:
MsgBox "Ошибка #: " & Format$(Err.Number) & vbCrLf & Err.Description, vbInformation, "NotInListWOFrm"
Resume NotInListWOFrm_EXIT
End Function
|
Пример вызова:
Private Sub idMetal_NotInList(NewData As String, Response As Integer)
Response = NotInListWOFrm("tblMetal", "Metal")
End Sub
|
| |
|
| |
|
|
|
| так тоже не универсальная функция
хотя близко к тому
работает с линейными справочными таблицами. При условии наличия доп. индексов, сложных ключей или внешних связей не будет работать. | |
|
| |
|
|
|
| обрати внимание функция называется NotInListWOFrm
WOForm... т.е. без вызова дополнительных форм :-)
Где-то есть и с вызовом формы... а если нужны какие-то условия, то они просто под конкретную аздачу делаются | |
|
| |
|
|
|
|
| Тут понятно:
Response = False - это зачем?
А это зачем:
Private Sub Поле_NotInList(NewData As String, Response As Integer)
Response = frm_SOTRUD_PRIMECH_NotInList(NewData)
End Sub
|
ведь я создаю MDE файл !!! Соответственно модуль формы должен отсутствовать ?! | |
|
| |
|
|
|
|
ведь я создаю MDE файл !!! Соответственно модуль формы должен отсутствоват
|
КТО ВАМ ЭТО СКАЗАЛ!!!!? ОН ПОШУТИЛ!!! | |
|
| |
|
43 Кб. |
|
|
тогда мне объясните как новичку, при каком случае не формируется MDE файл?
Потому, что я если оставлю хоть одну форму со свойством HasModule=Yes то
файл MDE не формируется и появляется сообщение см. вл.файл | |
|
| |
|
|
|
| У меня 29 форм. Не так много. | |
|
| |
|
|
|
| Попробуйте откомпилировать модули и сжать БД | |
|
| |
|
|
|
| попробуйте перенести все объекты в новый файл и создать mde из него. | |
|
| |
|
|
|
| Response = False это не есть хорошо
Response = acDataErrContinue а это хорошо | |
|
| |