Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro ,SQL Server и sqlconnect() / 11 сообщений из 11, страница 1 из 1
24.09.2003, 10:45
    #32273768
AngelOKES
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro ,SQL Server и sqlconnect()
Подскажите как в Visual FoxPro отловить ошибку при соединение к серверу SQL Server через ODBC и как во время коннекта выдать сообщение типа "подождите идет присоединение к серверу".
...
Рейтинг: 0 / 0
24.09.2003, 10:51
    #32273783
cbani1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro ,SQL Server и sqlconnect()
dimension laError(1)
wait window 'Подождите идет подключение к серверу' nowait noclear
lnConnect=sqlconnect(...)
if lnConnect<0 &&Подключение не удалось
AERROR(laError)
? laError(1)
? laError(2)
? laError(3)
? laError(4)
? laError(5)
? laError(6)
? laError(7)
endif

HELP AERROR

The following table describes the contents of each element when an ODBC error numbered 1526 occurs. When an ODBC error occurs, the array contains two or more rows; one row for each ODBC error.

Element number Description
1 Numeric. Contains 1526.
2 Character. The text of the error message.
3 Character. The text of the ODBC error message.
4 Character. The current ODBC SQL state.
5 Numeric. The error number from the ODBC data source.
6 Numeric. The ODBC connection handle.
7 The null value.
...
Рейтинг: 0 / 0
24.09.2003, 11:17
    #32273816
AngelOKES
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro ,SQL Server и sqlconnect()
Когда делаешь
lnConnect=sqlconnect(имя_соннекта ODBC)

на этой строчке выходит сообщение об ошибке, а если делать так

if lnConnect<0 &&Подключение не удалось
messagebox('Есть коннект',32,'Оповещение')
else
messagebox('Нет коннекта',32,'Оповещение')
endif

то это не успевает срабатывать, а срабатывает ошибка ODBC при попытке присоединиться.
...
Рейтинг: 0 / 0
24.09.2003, 11:26
    #32273828
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro ,SQL Server и sqlconnect()
У меня это сделано где-то вот так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
DEFINE CLASS DataConn AS AbstractClass 
	SERVER = ''
	SQLDataBase = ''
	CONNECTHANDLE = NULL
	DBUser = ''
	DBPassword = ''
	HostName =  ""
*****************************
	PROCEDURE Init
		SQLSETPROP(0 ,'DispWarnings',.F.) 
		SQLSETPROP( 0 ,'ConnectTimeOut', 15 ) 
		SQLSETPROP( 0 ,'DispLogin', 3 )
		SQLSETPROP( 0 ,"Asynchronous ",.F.)  
		SQLSETPROP(0 ,"BatchMode ",.T.)  
		SQLSETPROP(0 ,"PacketSize ",2048 )
	ENDPROC 	
************************
	FUNCTION SetConnection
		LOCAL lcConnString
		IF EMPTY('DBUser')
			lcConnString = [DRIVER=SQL Server;SERVER=]+THIS.SERVER+;
				[;DATABASE=]+THIS.SQLDataBase+;
				[;LANGUAGE=Русский;Trusted_Connection=Yes;Network=DBMSSOCN]
		ELSE
			lcConnString = [DRIVER=SQL Server;SERVER=]+THIS.SERVER+;
				[;UID=]+THIS.DBUser+;
				[;PWD=]+THIS.DBPassword+;
				[;DATABASE=]+THIS.SQLDataBase+;
				[;LANGUAGE=Русский;Network=DBMSSOCN]
		ENDIF
		THIS.CONNECTHANDLE = SQLSTRINGCONNECT(lcConnString)
		IF THIS.CONNECTHANDLE = -  1 
			MESSAGEBOX("Невозможно установить соединение ")
		ENDIF

		THIS.DBUser = ''
		THIS.DBPassword = ''

	ENDFUNC
*******************************
	FUNCTION DESTROY
		IF TYPE(" THIS.CONNECTHANDLE") == [N] ;
				.AND. THIS.CONNECTHANDLE >=  0 
			SQLDISCONNECT(THIS.CONNECTHANDLE)
			this.ConnectHandle  =  0 
		ENDIF
	ENDFUNC
ENDDEFINE
...
Рейтинг: 0 / 0
24.09.2003, 12:07
    #32273881
AngelOKES
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro ,SQL Server и sqlconnect()
Спасибо Crip, я правда не до конца понял, но все же есть о чем подумать.

Я выдрал процедуру коннекта, прописал все значения, но коннект все равно = -1, но все-равно спасибо.
...
Рейтинг: 0 / 0
24.09.2003, 12:17
    #32273893
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro ,SQL Server и sqlconnect()
Что-то я вам не совсем то подсунул.
Должно быть
IF EMPTY(THIS.DBUser)
вместо IF EMPTY('DBUser') (всегда .F.)
Заодно гляньте чему равно
lcConnString
...
Рейтинг: 0 / 0
24.09.2003, 12:46
    #32273948
AngelOKES
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro ,SQL Server и sqlconnect()
SERVER = 'star'
SQLDataBase = 'abon'
DBUser = 'ORENBURG\angel'
DBPassword = 'ekmnhjabjktn'
HostName = ""

lcConnString="DRIVER=SQL Server;SERVER=star;UID=ORENBURG\angel;PWD=ekmnhjabjktn;DATABASE=abon;LANGUAGE=русский;Network=DBMSSOCN"
...
Рейтинг: 0 / 0
24.09.2003, 13:04
    #32273992
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro ,SQL Server и sqlconnect()
ORENBURG\angel
Больше похоже на WinNT юзера...Попробуйте trusted connection
(DBUser = "")
Если и это не поможет , то можно убрать ";Network=DBMSSOCN" ( принудительная установка протокола TCP/IP)
...
Рейтинг: 0 / 0
24.09.2003, 13:10
    #32274005
AngelOKES
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro ,SQL Server и sqlconnect()
Ты прав пользователи домена 2000 винды и на серваке SQL у меня прописаны пользователи домена ORENBURG.

Но я нашел вот строка коннекта:

lcConnString = [DSN=Abon;APP=Microsoft® Visual FoxPro®;WSID=VFP;DATABASE=Abon;LANGUAGE=us_english;Network=DBNMPNTW;AutoTranslate=No;Trusted_Connection=Yes;Regional=Yes]

Здесь уже не надо прописывать пользователей, вся эта информация береться из "DSN=Abon" - это настроики ODBC.

Можно даже написать :

lcConnString = [DSN=Abon]

И в принципе работает, но

Можно прописать в строке коннекта не опираясь на созданный коннект в ODBC, а в строке самому создать этот коннект ODBC?
...
Рейтинг: 0 / 0
24.09.2003, 13:41
    #32274076
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro ,SQL Server и sqlconnect()
Вообще-то твой случай решается так
Код: plaintext
1.
2.
3.
oCon = create('DataConn')
oCon.Server = 'star'
oCon.DataBase = 'Abon'
oCon.SetConnection()
...
Рейтинг: 0 / 0
24.09.2003, 13:45
    #32274086
AngelOKES
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro ,SQL Server и sqlconnect()
2:Crip

Я немного переделал твою функцию

FUNCTION SetConnection

SQLSETPROP(0,'DispWarnings',.F.)
SQLSETPROP(0,'ConnectTimeOut',30)
SQLSETPROP(0,'DispLogin',3)
SQLSETPROP(0,"Asynchronous",.F.)
SQLSETPROP(0,"BatchMode",.T.)
SQLSETPROP(0,"PacketSize",2048)

lcConnString = "Driver=SQL Server;Server=star;Database=abon;Trusted_Connection=Yes"
aaa = SQLSTRINGCONNECT(lcConnString)
IF aaa = - 1
MESSAGEBOX('Присоединение к серверу невозможно',32,'Оповещение')
ENDIF

ENDFUNC

Вроде все работает и ошибка перехватываеться этой функцией, вообщем спасибо за помощь.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro ,SQL Server и sqlconnect() / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]