powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro ,SQL Server и sqlconnect()
11 сообщений из 11, страница 1 из 1
FoxPro ,SQL Server и sqlconnect()
    #32273768
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как в Visual FoxPro отловить ошибку при соединение к серверу SQL Server через ODBC и как во время коннекта выдать сообщение типа "подождите идет присоединение к серверу".
...
Рейтинг: 0 / 0
FoxPro ,SQL Server и sqlconnect()
    #32273783
cbani1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
FoxPro ,SQL Server и sqlconnect()
    #32273816
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда делаешь
lnConnect=sqlconnect(имя_соннекта ODBC)

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

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

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

Код: 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
FoxPro ,SQL Server и sqlconnect()
    #32273881
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо Crip, я правда не до конца понял, но все же есть о чем подумать.

Я выдрал процедуру коннекта, прописал все значения, но коннект все равно = -1, но все-равно спасибо.
...
Рейтинг: 0 / 0
FoxPro ,SQL Server и sqlconnect()
    #32273893
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я вам не совсем то подсунул.
Должно быть
IF EMPTY(THIS.DBUser)
вместо IF EMPTY('DBUser') (всегда .F.)
Заодно гляньте чему равно
lcConnString
...
Рейтинг: 0 / 0
FoxPro ,SQL Server и sqlconnect()
    #32273948
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
FoxPro ,SQL Server и sqlconnect()
    #32273992
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ORENBURG\angel
Больше похоже на WinNT юзера...Попробуйте trusted connection
(DBUser = "")
Если и это не поможет , то можно убрать ";Network=DBMSSOCN" ( принудительная установка протокола TCP/IP)
...
Рейтинг: 0 / 0
FoxPro ,SQL Server и sqlconnect()
    #32274005
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты прав пользователи домена 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
FoxPro ,SQL Server и sqlconnect()
    #32274076
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то твой случай решается так
Код: plaintext
1.
2.
3.
oCon = create('DataConn')
oCon.Server = 'star'
oCon.DataBase = 'Abon'
oCon.SetConnection()
...
Рейтинг: 0 / 0
FoxPro ,SQL Server и sqlconnect()
    #32274086
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro ,SQL Server и sqlconnect()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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