Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: A2003.Перенос в отд. модуль проц. NotInList при преобр. в MDE файл
 
 автор: Мудрый клен   (06.04.2007 в 09:37)   личное сообщение
 
 

Проблема в том что не работает параметр 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)

  Ответить  
 
 автор: osmor   (06.04.2007 в 09:55)   личное сообщение
 
 

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

  Ответить  
 
 автор: osmor   (06.04.2007 в 10:06)   личное сообщение
 
 

вообще ваша функция не универсальна
вот нашел в закромах

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

  Ответить  
 
 автор: ГлазастыйМышь   (06.04.2007 в 10:12)   личное сообщение
 
 

так тоже не универсальная функция
хотя близко к тому

работает с линейными справочными таблицами. При условии наличия доп. индексов, сложных ключей или внешних связей не будет работать.

  Ответить  
 
 автор: osmor   (06.04.2007 в 10:35)   личное сообщение
 
 

обрати внимание функция называется NotInListWOFrm
WOForm... т.е. без вызова дополнительных форм :-)
Где-то есть и с вызовом формы... а если нужны какие-то условия, то они просто под конкретную аздачу делаются

  Ответить  
 
 автор: ГлазастыйМышь   (06.04.2007 в 10:46)   личное сообщение
 
 

ну тады ой. победил :)

  Ответить  
 
 автор: Мудрый клен   (06.04.2007 в 10:12)   личное сообщение
 
 

Тут понятно:
Response = False - это зачем?

А это зачем:

Private Sub Поле_NotInList(NewData As String, Response As Integer) 

Response = frm_SOTRUD_PRIMECH_NotInList(NewData) 

End Sub

ведь я создаю MDE файл !!! Соответственно модуль формы должен отсутствовать ?!

  Ответить  
 
 автор: osmor   (06.04.2007 в 10:37)   личное сообщение
 
 


ведь я создаю MDE файл !!! Соответственно модуль формы должен отсутствоват


КТО ВАМ ЭТО СКАЗАЛ!!!!? ОН ПОШУТИЛ!!!

  Ответить  
 
 автор: Мудрый клен   (06.04.2007 в 10:54)   личное сообщение
43 Кб.
 
 


тогда мне объясните как новичку, при каком случае не формируется MDE файл?
Потому, что я если оставлю хоть одну форму со свойством HasModule=Yes то
файл MDE не формируется и появляется сообщение см. вл.файл

  Ответить  
 
 автор: Мудрый клен   (06.04.2007 в 10:55)   личное сообщение
 
 

У меня 29 форм. Не так много.

  Ответить  
 
 автор: osmor   (06.04.2007 в 11:02)   личное сообщение
 
 

Попробуйте откомпилировать модули и сжать БД

  Ответить  
 
 автор: Serge Gavrilov   (06.04.2007 в 11:03)   личное сообщение
 
 

попробуйте перенести все объекты в новый файл и создать mde из него.

  Ответить  
 
 автор: ИгорьК   (06.04.2007 в 14:09)   личное сообщение
 
 

Response = False это не есть хорошо
Response = acDataErrContinue а это хорошо

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList