Работа в рамках одного приложения с разными БД
Добавлено: 10 Июль 2009, 11:41
Добрый день!
С63 9058 ABC, DB2
Вообщем имеем следующее: в рамках одного приложения работа идет как со своей БД, так и со сторонней (чисто получение некоторых данных, выборок...) И полный облом. Вот простецкий код, который приводит к ошибке:
---------------------------------------
LOC:ConnectDbString = 'DRIVER={{' & CLIP(LOC:Driver) & '}; ' & |
'DATABASE=' & CLIP(LOC:DataBase) & '; ' & |
'HOSTNAME=' & CLIP(LOC:HostName) & '; ' & |
'PORT=' & FORMAT(LOC:Port, @N_5) & '; PROTOCOL=' & CLIP(LOC:Protocol) & '; ' & |
'UID=******; PWD=******'
! Соединяемся в БД № 1 (Это моя БД)
IF MAVCONNECT('MYDB', LOC:ConnectDbString, 0)
BEEP(BEEP:SystemHand)
MESSAGE('Ошибка соединения с Базой данных № 1...', 'Ошибка!', ICON:Hand)
ELSE
BEEP(BEEP:SystemAsterisk)
MESSAGE('Соединение с Базой данных № 1 прошло успешно...', 'Успех!', ICON:Asterisk)
! Соединяемся с Базой данных № 2 (это не моя БД)
LOC:ConnectDbString = 'DRIVER={{' & CLIP(LOC:Driver) & '}; ' & |
'DATABASE=' & CLIP(LOC:DataBaseC) & '; ' & |
'HOSTNAME=' & CLIP(LOC:HostNameC) & '; ' & |
'PORT=' & FORMAT(LOC:Port, @N_5) & '; PROTOCOL=' & CLIP(LOC:Protocol) & ';' & |
'UID=******; PWD=******'
IF MAVCONNECT('NOMYDB', LOC:ConnectDbString, 0)
BEEP(BEEP:SystemHand)
MESSAGE('Ошибка соединения с Базой данных № 2...', 'Ошибка!', ICON:Hand)
ELSE
BEEP(BEEP:SystemAsterisk)
MESSAGE('Соединение с Базой данных № 2 прошло успешно...', 'Успех!', ICON:Asterisk)
IF MAVLOAD('SELECT COUNT(*) FROM DB2INST.INSURER', LOC:CountRec)
MAVSHOWERROR
ELSE
stop(LOC:CountRec)
END
MAVDISCONNECT('NOMYDB')
END
MAVDISCONNECT('MYDB')
END
----------------------------------------
Собственно, при выполнении запроса: SELECT COUNT(*) FROM DB2INST.INSURER вываливается ошибка:
[IBM][CLI Driver][DB2/NT] SQL0204N Имя "DB2INST.INSURER" не было определено. SQLSTATE=42704
[42S02] (42S02)
Стоит отключить подключение к своей БД, т.е. соединяемся только с БД № 2 - все проходит на ура.
Андрей судя по-всему сейчас в отпуске, но может кто-то с подобным сталкивался?
С63 9058 ABC, DB2
Вообщем имеем следующее: в рамках одного приложения работа идет как со своей БД, так и со сторонней (чисто получение некоторых данных, выборок...) И полный облом. Вот простецкий код, который приводит к ошибке:
---------------------------------------
LOC:ConnectDbString = 'DRIVER={{' & CLIP(LOC:Driver) & '}; ' & |
'DATABASE=' & CLIP(LOC:DataBase) & '; ' & |
'HOSTNAME=' & CLIP(LOC:HostName) & '; ' & |
'PORT=' & FORMAT(LOC:Port, @N_5) & '; PROTOCOL=' & CLIP(LOC:Protocol) & '; ' & |
'UID=******; PWD=******'
! Соединяемся в БД № 1 (Это моя БД)
IF MAVCONNECT('MYDB', LOC:ConnectDbString, 0)
BEEP(BEEP:SystemHand)
MESSAGE('Ошибка соединения с Базой данных № 1...', 'Ошибка!', ICON:Hand)
ELSE
BEEP(BEEP:SystemAsterisk)
MESSAGE('Соединение с Базой данных № 1 прошло успешно...', 'Успех!', ICON:Asterisk)
! Соединяемся с Базой данных № 2 (это не моя БД)
LOC:ConnectDbString = 'DRIVER={{' & CLIP(LOC:Driver) & '}; ' & |
'DATABASE=' & CLIP(LOC:DataBaseC) & '; ' & |
'HOSTNAME=' & CLIP(LOC:HostNameC) & '; ' & |
'PORT=' & FORMAT(LOC:Port, @N_5) & '; PROTOCOL=' & CLIP(LOC:Protocol) & ';' & |
'UID=******; PWD=******'
IF MAVCONNECT('NOMYDB', LOC:ConnectDbString, 0)
BEEP(BEEP:SystemHand)
MESSAGE('Ошибка соединения с Базой данных № 2...', 'Ошибка!', ICON:Hand)
ELSE
BEEP(BEEP:SystemAsterisk)
MESSAGE('Соединение с Базой данных № 2 прошло успешно...', 'Успех!', ICON:Asterisk)
IF MAVLOAD('SELECT COUNT(*) FROM DB2INST.INSURER', LOC:CountRec)
MAVSHOWERROR
ELSE
stop(LOC:CountRec)
END
MAVDISCONNECT('NOMYDB')
END
MAVDISCONNECT('MYDB')
END
----------------------------------------
Собственно, при выполнении запроса: SELECT COUNT(*) FROM DB2INST.INSURER вываливается ошибка:
[IBM][CLI Driver][DB2/NT] SQL0204N Имя "DB2INST.INSURER" не было определено. SQLSTATE=42704
[42S02] (42S02)
Стоит отключить подключение к своей БД, т.е. соединяемся только с БД № 2 - все проходит на ура.
Андрей судя по-всему сейчас в отпуске, но может кто-то с подобным сталкивался?