Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как прочитать сообщение из raise notice ... в клиенте на MS Access ?
|
|||
|---|---|---|---|
|
#18+
В java для этого есть st.getWarnings() В php есть pg_get_notify() А как, блин, в Access прочитать warning ? Пускаю оператор по conn.Execute stQuery, dbExecDirect в случае ошибки смотрю на Err.Number и на DBEngine.Errors. А куда смотреть на предупреждения, а не на ошибки - не пойму ... :( Err.Number = 0, а семейство DBEngine.Errors - пустое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 20:05 |
|
||
|
Как прочитать сообщение из raise notice ... в клиенте на MS Access ?
|
|||
|---|---|---|---|
|
#18+
Через что подключаешься? ADO, ODBC? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2006, 17:20 |
|
||
|
Как прочитать сообщение из raise notice ... в клиенте на MS Access ?
|
|||
|---|---|---|---|
|
#18+
Извини, не заметил. Похоже ODBC. ИМХО никак не прочитаешь. По умолчанию - только критические ошибки. Все остально в этом творении била - игнор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2006, 17:23 |
|
||
|
Как прочитать сообщение из raise notice ... в клиенте на MS Access ?
|
|||
|---|---|---|---|
|
#18+
Да я уж понял, что надо работать через libpq.dll. Есть у кого-нить пример использования функций PQconnectDb(), PQexec() из MSAccess ? Поделитесь, pls ! В лоб пытался их юзать - Access выдает ошибку: "Нарушение соглашения о вызовах DLL" писал так: Declare Function PQconnectdb Lib "LIBPQ.DLL" (stConString As String) As Long Declare Function PQsetdbLogin Lib "LIBPQ.DLL" (stPgHost As String, stPgPort As String, stPgOptions As String, stPgTty As String, stDbName As String, stLogin As String, stPwd As String) As Long Declare Function PQstatus Lib "LIBPQ.DLL" (lConnection As Long) As Long Declare Function PQexec Lib "LIBPQ.DLL" (lConnection As Long, stQuery As String) As Long Private Sub aa() Dim bb As Long bb = PQsetdbLogin("192.168.101.103", "", "", "", "in3", "postgres", "mypass") End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2006, 20:35 |
|
||
|
Как прочитать сообщение из raise notice ... в клиенте на MS Access ?
|
|||
|---|---|---|---|
|
#18+
Мдя. Ошибка-то моя в самом начале - функция PQsetdbLogin возвращает объект типа PGconn, который ни в коем разе не long. И его описание на C меня испугало - не хочется его переписывать на MSAccess ... Да и типы, используемые для возврата результатов запроса, не проще :( В связи с этим я склоняюсь к такому алгоритму. 1) создать спецтабличку для сообщений create table notice_messages (id serial not null, message_body varchar(254), muser varchar(20) not null default session_user, primary key (id)); create index mu_notice_messages on notice_messages (muser, id); 2) На клиенте операторы, которые требуют последующего чтения предупреждений сервера оформлять такой, примерно, транзакцией: begin; select into mid curr_var('notice_messages_id_seq'); оператор insert, update или delete; функции на триггерах пишут предупреждения в таблицу notice_messages вместо выдачи raise notice; select * from notice_message where muser = session_user and id >= mid; delete from notice_message where muser = session_user and id >= mid; commit; Соответственно, клиент получает предупреждения, которые добавились при выдаче операторов обновления/удаления/вставки в таблицу notice_messages с момента начала его транзакции. Все это хорошо, но вот в конкретной системе юзеры работают под одним логином парами - типа взаимозаменяемые работники (сектора, как они называются в организации). И в бухгалтерии такие есть, и в отделе продаж, и в отделе доставки ... Слава богу, что хоть в планировании и на складе таких нету :) И как мне в этом случае правильно идентифицировать текущую транзацию (session_user будет одинаков для двух работников) ? Готового id транзакции в postgresql нет - в этом форуме уже обсуждалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2006, 11:32 |
|
||
|
Как прочитать сообщение из raise notice ... в клиенте на MS Access ?
|
|||
|---|---|---|---|
|
#18+
А зачем тебе вообще понадобилось нотаисы хранимок видеть на клиенте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2006, 15:14 |
|
||
|
Как прочитать сообщение из raise notice ... в клиенте на MS Access ?
|
|||
|---|---|---|---|
|
#18+
Есть производственные лимиты, превышать которые никак нельзя (хранимки, которые это проверяют, отсекают попытки по raise exception с соответсвующим грозным текстом), но еще нужно при "подходе к лимиту" (где 5%, где 10%) выдавать предупреждение типа "скоро лафа закончится !" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2006, 18:41 |
|
||
|
Как прочитать сообщение из raise notice ... в клиенте на MS Access ?
|
|||
|---|---|---|---|
|
#18+
Если это сделано через хп ( но не через триггеры) то может просто сообщение возаращать из процедур? А если до лимита не дошло то возвращать нулл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2006, 22:33 |
|
||
|
Как прочитать сообщение из raise notice ... в клиенте на MS Access ?
|
|||
|---|---|---|---|
|
#18+
2 strizh Т.к. косвенно касаюсь этой тематики, хотел узнать, а чем собственно ado не угодило для доступа к бд, или я совсем не о том? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2006, 23:09 |
|
||
|
Как прочитать сообщение из raise notice ... в клиенте на MS Access ?
|
|||
|---|---|---|---|
|
#18+
To bubucha: А разве через ADO можно прочитать raise notice ? Мне казалось, что драйвер ado работает ту же библиотеку psqlodbc.dll ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 19:31 |
|
||
|
Как прочитать сообщение из raise notice ... в клиенте на MS Access ?
|
|||
|---|---|---|---|
|
#18+
To Jelis: На триггерах все, на них, родимых ... Реализовал приведенный мной выше алгоритм, наплевав на их сектора. Раз сотрудники взаимозаменяемы - так пусть оба предупреждения и получают, даже если кто-то из них не с той датой работает, тем более, что редко такое будет - все ж одновременно запустить запрос - это тренироваться надо :) Как посчитал - 500 строк кода в 16 функциях эти все лимиты контролируют ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 19:37 |
|
||
|
Как прочитать сообщение из raise notice ... в клиенте на MS Access ?
|
|||
|---|---|---|---|
|
#18+
strizh И как мне в этом случае правильно идентифицировать текущую транзацию (session_user будет одинаков для двух работников) ? Готового id транзакции в postgresql нет - в этом форуме уже обсуждалось.достаточно, имхо, идентифицировать сессию. для этого - пользовать сессионные переменные. ЗЫ. поскоку запускаете из акса, то каждый запрос должен быть дополнен вызовом инициации переменной. (т.к. акс может открыть что-то помница около 250 соединений из одного приложения, если коннешн не описан явно, и вы работаете просто в формах через присоединенные таблы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 11:37 |
|
||
|
Как прочитать сообщение из raise notice ... в клиенте на MS Access ?
|
|||
|---|---|---|---|
|
#18+
strizhTo Jelis: На триггерах все, на них, родимых ... Реализовал приведенный мной выше алгоритм, наплевав на их сектора. Раз сотрудники взаимозаменяемы - так пусть оба предупреждения и получают, даже если кто-то из них не с той датой работает, тем более, что редко такое будет - все ж одновременно запустить запрос - это тренироваться надо :) Как посчитал - 500 строк кода в 16 функциях эти все лимиты контролируют ... А может лучше просто на клиенте отдельно функции проверок запускать после обновления/добавления? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 15:33 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34077962&tid=2005993]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 393ms |

| 0 / 0 |
