Если документа нет в базе, возвращает ошибку. |
23:01:2008, 08:31
Сообщение
#1
|
|
|
|
Мне нужно если документа нет в базе, то выполнить определенные действия. Документ в базе я ищу с помощью :
Если такой документ есть в базе, то все работает как нужно. Если его нет, то выводит ошибку и не выполняет остальные действия. Подскажите, пожалуйста, как мне сделать, чтобы если этого дока нет, то делать …. -------------------- |
|
|
|
![]() |
Ответов
(1 - 29)
|
|
|
23:01:2008, 08:38
Сообщение
#2
|
|
|
|
if (doc is nothing) then
<твои действия> end if -------------------- |
|
|
|
23:01:2008, 08:40
Сообщение
#3
|
|
|
|
-------------------- |
|
|
|
23:01:2008, 08:41
Сообщение
#4
|
|
|
|
Для: Sasha*
так, а обработку ошибок Вас никто не учил делать? Для: allex не прокатить ибо будет ошибка -------------------- Буть осторожен в своих желаниях - они могут сбыться
]]>< База знаний Lotus >]]> ]]> ]]>консультаций по ICQ не даю |
|
|
|
23:01:2008, 08:43
Сообщение
#5
|
|
|
|
if (doc is nothing) then <твои действия> end if Оно не успевает зайти в эту проверку. Там где я получаю этот док: Set doc = db.GetDocumentByUNID(strUnid) - получает ошибку и дальше не идет -------------------- |
|
|
|
23:01:2008, 08:47
Сообщение
#6
|
|
|
|
Для: Sasha*
используйте отдельную фунцию приведёую мною или Omh -------------------- Буть осторожен в своих желаниях - они могут сбыться
]]>< База знаний Lotus >]]> ]]> ]]>консультаций по ICQ не даю |
|
|
|
23:01:2008, 08:57
Сообщение
#7
|
|
|
|
Для: Morpheus
Кстати, у меня раньше было что-то похожее на твоё: ф-ия, которая возвращала NotesDocument. Потом переделал на Boolean, т.к. таким образом экономиться пару строк в коде. Хотя, конечно, разница не принципиальная.. -------------------- |
|
|
|
23:01:2008, 09:03
Сообщение
#8
|
|
|
|
Для: Omh
Для Boolean не вижу смысла, т.к. у меня всегда будет
-------------------- Буть осторожен в своих желаниях - они могут сбыться
]]>< База знаний Lotus >]]> ]]> ]]>консультаций по ICQ не даю |
|
|
|
23:01:2008, 09:06
Сообщение
#9
|
|
|
|
А у меня будет
Т.е. строчка экономиться (IMG:http://forum.codeby.net/style_emoticons/default/smile.gif) -------------------- |
|
|
|
23:01:2008, 09:15
Сообщение
#10
|
|
|
|
Для: Omh
Ну так можно же (IMG:http://forum.codeby.net/style_emoticons/default/wink.gif) |
|
|
|
23:01:2008, 09:19
Сообщение
#11
|
|
|
|
Не, так низзя.
Где доку присваивается значение ф-ии? -------------------- |
|
|
|
23:01:2008, 09:25
Сообщение
#12
|
|
|
|
Для: Omh
Ушел пить кофе. (IMG:http://forum.codeby.net/style_emoticons/default/smile.gif) |
|
|
|
23:01:2008, 09:32
Сообщение
#13
|
|
|
|
Для: Medevic
ооо.. карашо что напомнил -------------------- Буть осторожен в своих желаниях - они могут сбыться
]]>< База знаний Lotus >]]> ]]> ]]>консультаций по ICQ не даю |
|
|
|
23:01:2008, 14:15
Сообщение
#14
|
|
|
|
Позволю себе добавить... (IMG:http://forum.codeby.net/style_emoticons/default/smile.gif)
итак, первое - очень важное замечание, в контексте данного вопроса не очень важное, но все-же... если вы выполняете возврат каких-либо объектов нотес (документ, коллекция) всегда нужно чтобы объект БД, если она не текущая, из которой тянется требуемый объект, был инициализирован в вызывающем коде, иначе получите в возвращенном значении "Nothing". например: function getDoc1(aParam1 as variant) as notesDocument dim someDb as notesDatabase set someDb = getSomeDb ... set getDoc1 = someDb.getSomeNotesDocument end function Sub someSub dim doc1 as notesDocument set doc1 = getDoc1(doc1Param1) end sub в результате вызова этой функции получим doc1 = nothing, хотя при проходе дебагером, в вызванной функции будет нормально полученный документ. исправить так: function getDoc1(aDoc1Db as notesDatabase, aParam1 as variant) as notesDocument ... set getDoc1 = aDoc1Db.getSomeNotesDocument end function Sub someSub dim someDb as notesDatabase dim doc1 as notesDocument set someDb = getSomeDb set doc1 = getDoc1(someDb, doc1Param1) end sub это связанно с тем, что лотус убивая объект БД чистит память под объектами, полученными из этой БД. А второе замечание к Omh и Morpheus: а зачем условия проверки переданного параметра-унида документа, если вызов getDocumentByUnid сам выполнит подобную проверку? если даже его и проверять, то проверять бы уже на длинну в 32 символа! (IMG:http://forum.codeby.net/style_emoticons/default/wink.gif) -------------------- не учите меня плохому...
|
|
|
|
23:01:2008, 14:31
Сообщение
#15
|
|
|
|
Для: Akupaka
Это легаси. Мне нравиться такая проверка вот и оставил (IMG:http://forum.codeby.net/style_emoticons/default/smile.gif) Хотя понимаю, что лишняя (IMG:http://forum.codeby.net/style_emoticons/default/smile.gif) -------------------- |
|
|
|
23:01:2008, 17:03
Сообщение
#16
|
|
|
|
Народ, ну вы жжете
GetDocumentByUNID всегда ошибку возвращал. В хелпе написано какую и что с ней делать Для: Sasha* Если лень разбираться, как обработать ошибку, то сделайте представление DocumentsByUNID и не ломайте голову. Работать будет чуть-чуть медленее -------------------- |
|
|
|
23:01:2008, 19:32
Сообщение
#17
|
|
|
|
в продолжение последнего поста рекомендуется использовать NoteID, если конечно он имеется и это будет быстрее всего прочего получать документ..
-------------------- |
|
|
|
23:01:2008, 19:40
Сообщение
#18
|
|
|
|
Цитата(fedotxxl @ 23:01:2008, 20:03 ) Народ, ну вы жжете GetDocumentByUNID всегда ошибку возвращал. В хелпе написано какую и что с ней делать Кстати, не всегда. Я уже кажется писал об этом. Инода возвращает нулевой документ. На форуме ibm проблема была озвучена. Что с этим делать не понятно. Поэтому, я как-то больше доверяю представлению с поиском по ключу. |
|
|
|
23:01:2008, 20:23
Сообщение
#19
|
|
|
|
Для: fedotxxl
Вообще, на самом деле не чуть-чуть медленнее будет, а заметно. Т.к. тока одна только операция взятия view стоит нормально. Зато всегда будет достоверно незакешированный документ. Я сам иногда так делаю, точнее раньше делал. Стабильнее, но медленее. -------------------- |
|
|
|
24:01:2008, 09:01
Сообщение
#20
|
|
|
|
Инода возвращает нулевой документ. На форуме ibm проблема была озвучена. Что с этим делать не понятно. Все.. Если есть док-т - он есть, если нет - doc is nothing -------------------- |
|
|
|
24:01:2008, 21:21
Сообщение
#21
|
|
|
|
Кстати, не всегда. Я уже кажется писал об этом. Инода возвращает нулевой документ. На форуме ibm проблема была озвучена. Что с этим делать не понятно. Поэтому, я как-то больше доверяю представлению с поиском по ключу. Хм... на сколько мне известно, то т.з. "пустой" документ - это документ, к которому пользователь, выполняющий метод, не имеет доступа на уровне Readers-полей. Т.е. если в документе есть Readers-поле, со значением: "CN=Вася Пупкин/...", а текущий пользователь Петя Васечкин, то вызов метода вернет "полуинициализированный" объект NotesDocument'а (IMG:http://forum.codeby.net/style_emoticons/default/smile.gif) В таких случаях его можно вычислить, вроде, только по итемах - если массив Items пустой... или =EMPTY, точно не помню... -------------------- не учите меня плохому...
|
|
|
|
24:01:2008, 21:28
Сообщение
#22
|
|
|
|
Для: Akupaka
несовсем.... пустой документ это инвалид, и вычисляетсья он свойством IsValid которое у таких документов False -------------------- Буть осторожен в своих желаниях - они могут сбыться
]]>< База знаний Lotus >]]> ]]> ]]>консультаций по ICQ не даю |
|
|
|
26:01:2008, 10:18
Сообщение
#23
|
|
|
|
Для: Akupaka несовсем.... пустой документ это инвалид, и вычисляетсья он свойством IsValid которое у таких документов False А вот и нифига... Если искать док по getDocumentByUNID и пользователь не имеет к нему доступа, то полученный документ будет валидным (IsValid вернет тру (IMG:http://forum.codeby.net/style_emoticons/default/smile.gif) ) там надо проверять на IsEmpty(doc.items)... -------------------- We need some pain to find a right way
|
|
|
|
26:01:2008, 10:29
Сообщение
#24
|
|
|
|
Для: Akupaka несовсем.... пустой документ это инвалид, и вычисляетсья он свойством IsValid которое у таких документов False мы в таких случаях называем их невалидными (IMG:http://forum.codeby.net/style_emoticons/default/smile.gif) это могут быть окурки документов, к примеру... а пустые - именно валидные, но у которых не доступны остальные свойства... Сообщение отредактировал Akupaka - 26:01:2008, 10:30 -------------------- не учите меня плохому...
|
|
|
|
28:01:2008, 07:32
Сообщение
#25
|
|
|
|
Объясните теперь мне пожалуйста
Всю жизнь писал и все было нормально... теперь валиды, инвалиды, пустые айтемы... что это??? Где это нужно?
-------------------- |
|
|
|
28:01:2008, 07:37
Сообщение
#26
|
|
|
|
Для: fedotxxl
ну представте что у вас nd - не Nothing .. Вы щасливо начинаете с ним раблотаьт и бац ... ошибка... из ниоткуда казалось бы -------------------- Буть осторожен в своих желаниях - они могут сбыться
]]>< База знаний Lotus >]]> ]]> ]]>консультаций по ICQ не даю |
|
|
|
29:01:2008, 15:43
Сообщение
#27
|
|
|
|
Для: Morpheus
Никогда ещё не встречал такой ситуации... Как правильно писать-то? Сначала проверять на существований документа, потом на существование айтемов? -------------------- |
|
|
|
29:01:2008, 17:25
Сообщение
#28
|
|
|
|
Для: Morpheus Никогда ещё не встречал такой ситуации... Как правильно писать-то? Сначала проверять на существований документа, потом на существование айтемов? Ага сначала на существование, потом на валидность, а потом на наличие итемов... -------------------- We need some pain to find a right way
|
|
|
|
29:01:2008, 17:40
Сообщение
#29
|
|
|
|
Для: Всех
Ну помоему, такая куча проверок, это немного черезчур. Вроде IsEmpty(Doc.Items) будет, если у тебя нет даже прав reader'a на документ? Или в таком случае он просто не вернётся с помощью GetDocumentByUNID? А в каком случае Doc.IsValid будет False? Кстати, именно тут ф-ия возвращающая Boolean начинает рулить, т.к. все проверки можно всунуть именно внутрь ф-ии и снаружи не городить всю кучу If-ов. Так что ф-ия вида GetDocByUNID(db, doc, UNID) возвращающая boolean - то, что доктор прописал. Попробуйте - Вам понравиться (IMG:http://forum.codeby.net/style_emoticons/default/smile.gif) -------------------- |
|
|
|
30:01:2008, 11:13
Сообщение
#30
|
|
|
|
еще NotesDocument.IsDeleted (boolean) нужно проверять (IMG:http://forum.codeby.net/style_emoticons/default/wink.gif)
isValid = False, в случае, если документ является "окурком" репликации, например, т.е. еще не документ (IMG:http://forum.codeby.net/style_emoticons/default/smile.gif) или уже не документ )) -------------------- не учите меня плохому...
|
|
|
|
Ссылка на тему:
BBCode:
HTML:
BBCode:
HTML:
![]() ![]() ![]() |
| Тема | |||||
|---|---|---|---|---|---|
![]() |
1c8. Автоподстановка при сохранении документа... В 1С7 - было - а в 1С8 - нету... |
3 | bigmax | 119 | Вчера, 18:15 vbs |
![]() |
Getdocumentbyunid , если документ был удален | 49 | wowa | 1 461 | 6:02:2010 - 16:15 VladSh |
![]() |
Crm на базе Lotus crm |
0 | p0kem0n | 0 | 2:02:2010 - 13:13 p0kem0n |
![]() |
Не работает публичное шифрование документа СОС! |
9 | fedotxxl | 199 | 1:02:2010 - 22:10 Constantin A Chervonenko |
![]() |
Помогите найти ошибку! Ставлю старую базу на сайт |
2 | kivik | 162 | 30:01:2010 - 09:48 ???? |
|
Текстовая версия | Сейчас: 9:02:2010 - 10:19 |
© 2010 .




23:01:2008, 08:31

















