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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Периодически не открывается форма.
 
 автор: Garik-1980   (09.11.2006 в 11:49)   личное сообщение
 
 

В общем сабж. Система Win2k access такой же, компьютеры в сети (в домене), причем как только я переписываю клиента заново, все работает. Возможна ли такая ситуевина, из-за наложенных на пользователя ограничений?

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

клиент на компьютере пользователя?
вряд-ли это из-за ограницений, тогда бы всегда не открывались.
а что значит "не открывается" , можно подробнее

  Ответить  
 
 автор: Garik-1980   (09.11.2006 в 14:08)   личное сообщение
 
 

Вот код.

Option Compare Database

Public Function AddNomZ()
Dim rst As Recordset
str_SQL = "SELECT * FROM тНомТемп WHERE 1"
Set rst = CurrentDb.OpenRecordset(str_SQL) '("тНомТемп")
SearchCriteria = "кодНом=" & P("кодНом") '& "'"
If rst.EOF Then ' нет записей
rst.AddNew
rst!Обозначение = P("Обозначение")
rst!Наименование = P("Номенкл")
rst!заявка = P("Заявка")
rst!Цех = P("Цех")
rst!кодНом = P("кодНом")
If P("ППп") = "Истина" Then rst!Прим = P("ДСЕ")
rst.Update
Else
rst.FindFirst SearchCriteria
If rst.NoMatch Then ' ничего не нашли надо добавлять
rst.AddNew
rst!Обозначение = P("Обозначение")
rst!Наименование = P("Номенкл")
rst!заявка = P("Заявка")
rst!Цех = P("Цех")
rst!кодНом = P("кодНом")
If P("ППп") = "Истина" Then rst!Прим = P("ДСЕ")
rst.Update
End If
End If
On Error GoTo 1
DoCmd.OpenForm "фНомТемп"
Forms!фНомТемп.Requery
Exit Function
1:
'If Err.Number = 22 Then
MsgBox Err.Number & vbNewLine & Err.Description
Err.Clear
End Function

Сообщения об ошибке не вылетает, и самое главное то, что после переписывания клиента все работает. Конечно ничего страшного, но напрягает.

  Ответить  
 
 автор: Йожык   (14.11.2006 в 11:48)   личное сообщение
 
 

Открытый рекордсет.
Допишите

rst.Close
Set rst = Nothing
DoCmd.OpenForm "фНомТемп"
Forms!фНомТемп.Requery
Exit Function

Ведь явно ссылки на объекты не закрыты и форма может не открываться, если рекорсорз явно не закрыт.
А процедурка не закончена ...
и ссылка на обхект висит...

  Ответить  
 
 автор: Garik-1980   (14.11.2006 в 12:05)   личное сообщение
 
 

Попробую. Хотя тут явно мистика у меня все работает. Да и у них тоже. Какое-то время. А переписываю клиента заново (БЕЗ ИЗМЕНЕНИЙ) и снова все работает.

  Ответить  
 
 автор: KrukVN   (14.11.2006 в 12:48)   личное сообщение
 
 

млин, ну код-то не удобоваримый совсем
нуна пользоваться [cоde][/cоdе]
а то:
тратататататата
тратататататататратататататата
тратататататата
тратататататататратататататататрата татататата
тратататататата
тратататататататратататататататрата татататататратататататата
...
end
и... пожалуйста посмотрите и подскажите в чем тут дело...

  Ответить  
 
 автор: Garik-1980   (14.11.2006 в 13:20)   личное сообщение
 
 

Да в принципе отступы-то он соблюдает, но вопрос-то не в этом. Почему она то работает, то нет. Причем при переписывании клиента все нормаль. Больше ничего не меняется. У меня все время работает. Никаких разумных объяснений этому я не нашел. Думал может такая же хрень у кого-то уже случалась и ее победили.

  Ответить  
 
 автор: Йожык   (16.11.2006 в 13:59)   личное сообщение
 
 

> меня все время работает.
Уже лучче :)

>Никаких разумных объяснений этому я не нашел.
Разумные объяснения?
Версии Аксесса? Сервиспаки? - бывает.

Но чаще некорректно написанный код.
А искать неохота (типо, некогда) и кивая на версии и сервиспаки плодим уродов...

Были же случаи, когда код не работал, обращаясь к чекеру (check) во вложенной форме, будучи, хм, написаным не явно (А97):

If chk1 Then ...

И требовалось писать явно :

If chk1 = True Then ...


...приходилось не один раз корректировать код, и только после этого искать ошибки
...как легко было потом переехать с 97 на 2000-й Ассесс, когда, например, библиотеки и переменные явно определены...

Не жалейте на это времени.... Потом его понадобицца больше

  Ответить  
 
 автор: KrukVN   (14.11.2006 в 13:50)   личное сообщение
 
 

не поленился...
попробуйте этот вариант кода:

Public Function AddNomZ()
On Error GoTo Err_AddNomZ
Dim rst As DAO.Recordset
Dim SearchCriteria As String

    Set rst = CurrentDb.OpenRecordset("SELECT * FROM тНомТемп WHERE 1") '("тНомТемп")
    SearchCriteria = "кодНом=" & P("кодНом") '& "'"
    
    If rst.EOF Then ' нет записей
        rst.AddNew
            rst!Обозначение = P("Обозначение")
            rst!Наименование = P("Номенкл")
            rst!заявка = P("Заявка")
            rst!Цех = P("Цех")
            rst!кодНом = P("кодНом")
            If P("ППп") = "Истина" Then rst!Прим = P("ДСЕ")
        rst.Update
      Else
        rst.FindFirst SearchCriteria
        If rst.NoMatch Then ' ничего не нашли надо добавлять
            rst.AddNew
                rst!Обозначение = P("Обозначение")
                rst!Наименование = P("Номенкл")
                rst!заявка = P("Заявка")
                rst!Цех = P("Цех")
                rst!кодНом = P("кодНом")
                If P("ППп") = "Истина" Then rst!Прим = P("ДСЕ")
            rst.Update
        End If
    End If
    
    rst.Close 'Закрываем рекордсет
    Set rst = Nothing 'освобождаем память от объекта rst
    
    DoCmd.OpenForm "фНомТемп"

Exit Function
Err_AddNomZ:
    MsgBox Err.Number & vbNewLine & Err.Description
End Function

ЗЫ. А что за P("ххх")?

  Ответить  
 
 автор: Garik-1980   (14.11.2006 в 15:02)   личное сообщение
 
 

Спасибо, так тоже работает. Подождем. Будет сбоить или нет.

P("xxx") - Функция для хранения и вызова параметров. При вызове P("xxx") возвращает значение параметра ххх, если вызвать P("xxx",true,"zzz"), то запишет в ххх - zzz.

  Ответить  
 
 автор: Garik-1980   (16.11.2006 в 14:19)   личное сообщение
 
 

Ох бл%, нашлась обшибка. Недостаточен размер поля чтобы принять данные. Надо было сразу-же поставить обработчик в начало функции.
Но почему-же оно у них работало после перезаписи.

PS^ Всем спасибо.

  Ответить  
 
 автор: KrukVN   (16.11.2006 в 14:23)   личное сообщение
 
 

именно по этому я обработчик в начало функции и поставил, т.к. не все было ясно с этим самым Р("ххх")

  Ответить  
 
 автор: Garik-1980   (14.11.2006 в 11:16)   личное сообщение
 
 

Видно ни у кого такие траблы не возникали. Обидно.
Надо будет подумать еще разок.

  Ответить  
 
 автор: час   (14.11.2006 в 19:51)   личное сообщение
 
 

а вот там on error goto 1
значит error происходит, а вот какой ...
Может от Requery или ещё что , а по шаговый режим отладки что в этот момент показыват???

  Ответить  
 
 автор: Garik-1980   (15.11.2006 в 10:19)   личное сообщение
 
 

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

  Ответить  
 
 автор: час   (19.11.2006 в 17:45)   личное сообщение
 
 

А может залезишь в пошаговый кода не будет открываться.
или на пиши

on error goto b
exit sub
b:
MsgBox " Сообщение разработчику ---> " & Err.Description

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