Форум программистов, компьютерный форум, киберфорум HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/214: Рейтинг темы: голосов - 214, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 23.08.2007
Сообщений: 85

Если документа нет в базе, возвращает ошибку.

22.01.2008, 10:44. Показов 39119. Ответов 29
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Мне нужно если документа нет в базе, то выполнить определенные действия. Документ в базе я ищу с помощью :


Code Скопировано
1
db.GetDocumentByUNID(strUnid)
Если такой документ есть в базе, то все работает как нужно.

Если его нет, то выводит ошибку и не выполняет остальные действия.

Подскажите, пожалуйста, как мне сделать, чтобы если этого дока нет, то делать ….
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.01.2008, 10:44
Ответы с готовыми решениями:

Написать метод который возвращает true если хоть где-то в массиве идут три числа в порядке возрастания, false если нет
Написать метод который возвращает true если хоть где-то в массиве идут три числа в порядке возрастания, false если нет public static...

ВПР возвращает НД, если нет данных
День добрый, подскажите как правильно сделать. есть перечень конфет и есть отдельный заказ на магазин (некоторые позичии). К заказу нежно...

В поиске добавить код если нет такого значения в стринггрид то вывести ошибку такого значения нет, если находит то вывод
procedure TForm1.Button5Click(Sender: TObject); var i,j,k:integer;S:string; begin for i:=1 to sg.RowCount do begin if...

29
0 / 0 / 0
Регистрация: 10.09.2005
Сообщений: 560
22.01.2008, 10:51
if (doc is nothyng) then

<твои действия>

end if
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
22.01.2008, 10:53
Code Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Function GetDocByUNID(db As NotesDatabase, doc As NotesDocument, UNID As String) As Boolean
On Error Goto Errh
 
GetDocByUNID = False
 
If db Is Nothyng Then Exit Function
If Trim$(UNID) = "" Then Exit Function
 
On Error Resume Next
Set doc = db.GetDocumentByUNID(UNID)
On Error Goto Errh
 
If Not doc Is Nothyng Then GetDocByUNID = True
 
Exit Function
Errh:
Call ErrHandler
Exit Function
End Function
0
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
22.01.2008, 10:54
Для: Sasha*
так, а обработку ошибок Вас никто не учил делать?


Code Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Function MY_GetDocByUNID(db As NotesDatabase, sunid As String) As NotesDocument
On Error Goto err1
if db is Nothyng Then Exit Function
if Len( sunid ) = 0 Then Exit Function
Set MY_GetDocByUNID = Nothyng
 
Set MY_GetDocByUNID = db.GetDocumentByUNID(sunid)
If Not MY_GetDocByUNID.IsValid Then Set MY_GetDocByUNID = Nothyng
Exit Function
 
err1:
Err = 0
Exit Function
End Function
Для: allex
не прокатить ибо будет ошибка
0
0 / 0 / 0
Регистрация: 23.08.2007
Сообщений: 85
22.01.2008, 10:56
Цитата Сообщение от allex
if (doc is nothyng) then

<твои действия>

end if
Оно не успевает зайти в эту проверку. Там где я получаю этот док:

Set doc = db.GetDocumentByUNID(strUnid) - получает ошибку и дальше не идет
0
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
22.01.2008, 11:00
Для: Sasha*
используйте отдельную фунцию приведёую мною или Omh
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
22.01.2008, 11:10
Для: Morpheus
Кстати, у меня раньше было что-то похожее на твоё: ф-ия, которая возвращала NotesDocument.
Потом переделал на Boolean, т.к. таким образом экономиться пару строк в коде.
Хотя, конечно, разница не принципиальная..
0
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
22.01.2008, 11:16
Для: Omh
Для Boolean не вижу смысла, т.к. у меня всегда будет

Code Скопировано
1
2
3
 Dim Doc as NotesDocumnt
Set Doc MY_GetDocByUNID(db , "UNID")
if Not MY_GetDocByUNID is Nothyng Then ....
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
22.01.2008, 11:19
А у меня будет

Code Скопировано
1
2
3
4
Dim Doc as NotesDocument
If GetDocByUNID(db, Doc, UNID) then
ПОНЕСЛАСЬ
End if
Т.е. строчка экономиться
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
22.01.2008, 11:28
Для: Omh
Ну так можно же

Code Скопировано
1
2
3
4
Dim Doc as NotesDocument
if Not (MY_GetDocByUNID(db , "UNID") is Nothyng) then
ПОНЕСЛАСЬ
End if
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
22.01.2008, 11:32
Не, так низзя.
Где доку присваивается значение ф-ии?
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
22.01.2008, 11:38
Для: Omh
Ушел пить кофе.
0
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
22.01.2008, 11:45
Для: Medevic
ооо.. карашо что напомнил
0
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
22.01.2008, 16:28
Позволю себе добавить...

итак, первое - очень важное замечание, в контексте данного вопроса не очень важное, но все-же...
если вы выполняете возврат каких-либо объектов нотес (документ, коллекция) всегда нужно чтобы объект БД, если она не текущая, из которой тянется требуемый объект, был инициализирован в вызывающем коде, иначе получите в возвращенном значении "Nothyng".
например:

function getDoc1(aParam1 as variant) as notesDocument
dym someDb as notesDatabase

set someDb = getSomeDb
...
set getDoc1 = someDb.getSomeNotesDocument
end function

Sub someSub
dym doc1 as notesDocument

set doc1 = getDoc1(doc1Param1)
end sub

в результате вызова этой функции получим doc1 = nothyng, хотя при проходе дебагером, в вызванной функции будет нормально полученный документ.

исправить так:

function getDoc1(aDoc1Db as notesDatabase, aParam1 as variant) as notesDocument
...
set getDoc1 = aDoc1Db.getSomeNotesDocument
end function

Sub someSub
dym someDb as notesDatabase
dym doc1 as notesDocument

set someDb = getSomeDb
set doc1 = getDoc1(someDb, doc1Param1)
end sub

это связанно с тем, что лотус убивая объект БД чистит память под объектами, полученными из этой БД.


А второе замечание к Omh и Morpheus:
а зачем условия проверки переданного параметра-унида документа, если вызов getDocumentByUnid сам выполнит подобную проверку? если даже его и проверять, то проверять бы уже на длинну в 32 символа! ;)
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
22.01.2008, 16:44
Для: Akupaka
Это легаси.
Мне нравиться такая проверка вот и оставил
Хотя понимаю, что лишняя ;)
0
0 / 0 / 0
Регистрация: 19.10.2005
Сообщений: 603
22.01.2008, 19:16
Народ, ну вы жжете
GetDocumentByUNID всегда ошибку возвращал. В хелпе написано какую и что с ней делать

Для: Sasha*
Если лень разбираться, как обработать ошибку, то сделайте представление DocumentsByUNID и не ломайте голову. Работать будет чуть-чуть медленее
0
1 / 1 / 0
Регистрация: 01.10.2006
Сообщений: 615
22.01.2008, 21:45
в продолжение последнего поста рекомендуется использовать NoteID, если конечно он имеется и это будет быстрее всего прочего получать документ..
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
22.01.2008, 21:53
<!--QuoteBegin-fedotxxl+23:01:2008, 20:03 -->
<span class="vbquote">(fedotxxl @ 23:01:2008, 20:03 )</span><!--QuoteEBegin-->Народ, ну вы жжете
GetDocumentByUNID всегда ошибку возвращал. В хелпе написано какую и что с ней делать
[snapback]94772" rel="nofollow" target="_blank[/snapback]?[/quote]
Кстати, не всегда. Я уже кажется писал об этом. Инода возвращает нулевой документ. На форуме ibm проблема была озвучена. Что с этим делать не понятно.
Поэтому, я как-то больше доверяю представлению с поиском по ключу.
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
22.01.2008, 22:36
Для: fedotxxl
Вообще, на самом деле не чуть-чуть медленнее будет, а заметно.
Т.к. тока одна только операция взятия view стоит нормально.
Зато всегда будет достоверно незакешированный документ.
Я сам иногда так делаю, точнее раньше делал.

Стабильнее, но медленее.
0
0 / 0 / 0
Регистрация: 26.05.2006
Сообщений: 1,313
23.01.2008, 11:14
Цитата Сообщение от Medevic
Инода возвращает нулевой документ. На форуме ibm проблема была озвучена. Что с этим делать не понятно.


Code Скопировано
1
2
3
on error resume next
set doc = db.GetDocumentByUNID(unid)
on error goto 0
Все.. Если есть док-т - он есть, если нет - doc is nothyng
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.01.2008, 11:14
Помогаю со студенческими работами здесь

Если json возвращает несколько вариантов вернуть ошибку
привет, прошу помочь. Мне нужно, чтобы если Json возвращал несколько вариантов, к примеру: выводилась ошибка Error, а если...

Написать функцию, которая возвращает истину, если в массиве нет отрицательных элементов
Ребята, нужна ваша помощь. На носу сессия и времени практически нет. Помогите с заданием по программированию: 1.Написать функцию, которая...

Как запретить проведение документа, если на складе нет товара?
У меня есть различные склады, на которые поступает товар, как сделать так, чтобы при реализации товара можно было брать его только со...

Прописать ошибку, если данный ID в базе данных отсутствует
Доброй ночи. Продолжаю долбить вас банальными вопросами. *да простит Бог* В этот раз ситуация такая. Я использую форму методом: _POST,...

Если к базе подключаются сразу несколько пользователей, то выдает ошибку
Приветствую. Имеется Windows 7 x64, на ней расшарена папка с базами 1С 7.7 Если к базе подключаются в раз несколько пользователей, то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Многопоточность в C#: Threadpool
UnmanagedCoder 28.03.2025
Пул потоков в C# — это коллекция заранее созданных и готовых к использованию потоков, которые находятся в распоряжении приложения. Вместо того чтобы создавать и уничтожать потоки для каждой небольшой. . .
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточность в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер