Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Visual FoxPro + MS SQL Server 2000 / 23 сообщений из 23, страница 1 из 1
05.08.2007, 18:51
    #34706373
Ионас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
StrSQL="Select id, nm, Cn0 FROM table1"
*thisform.text1.value=nCON
nAnswr=SQLEXEC(nCON,StrSQL)
*thisform.text2.value=nAnswr
ErrServ(nAnswr, StrSQL)
Если это располагаю в Init формы, то проблем никаких.
Если на форму бросаю кнопку и прописываю в Click кнопки, то идет сообщение: "Connection handle is invalid".
При этом в первом случае 2 и 4 строки дают по 1.
В случае кнопки nCON=1, а nAnswr значение отсутствует.
Любопытно почему ?
...
Рейтинг: 0 / 0
05.08.2007, 20:04
    #34706427
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
Надо понимать так, что сообщение об ошибке возникает на команде ErrServ(). И что это за команда такая? UDF? Тогда, что внутри?
...
Рейтинг: 0 / 0
05.08.2007, 20:24
    #34706441
SU2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
Если это полный код, то что-то не видно SQLCONNECT(...)
...
Рейтинг: 0 / 0
05.08.2007, 20:32
    #34706447
Ионас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
SU2014Если это полный код, то что-то не видно SQLCONNECT(...)
Function ErrServ
Parameters nAnswr, StrSQL
*************************
IF nAnswr < 0 THEN
****************
IF nCON > 0 THEN
SQLDISCONNECT(nCON)
ENDIF
*******************************************************
MessageBox("Ошибка обращения к серверу!", 16, "Ошибка")
QUIT
****
ENDIF
*******
ENDFUNC

Поясню подробнее. Все есть. И коннект есть. Когда указанные три строки располагаю в Init формы, то все нормально функционирует. Когда хочу все это же иметь по клику на кнопку, расположенную на этой же форме, то возникает описанная мною проблема.
...
Рейтинг: 0 / 0
05.08.2007, 21:00
    #34706468
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
То, что в некотором свойстве формы (thisform.text1.value) записано некое число вовсе не говорит о том, что это число и есть номер открытого в данный момент соединения. Это просто число!

Судя по сообщению об ошибке, Вы где-то явно закрываете соединение с хендлом 1. Возможно, Вы потом его снова открываете, но уже с другим хендлом. Ищите, что же у Вас там прописано в событиях открытия формы до того, как Вы нажали Click кнопки.
...
Рейтинг: 0 / 0
05.08.2007, 21:09
    #34706475
Ионас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
ВладимирМ Ищите, что же у Вас там прописано в событиях открытия формы до того, как Вы нажали Click кнопки.
Специально создал форму с пустым Initом (для чистоты эксперимента). Если триада прописана в Init формы, то ноу проблем. Потом Init удаляю и эту триаду закрепляю за кликом кнопки. И возникает означенная проблема. Странновато как то.
...
Рейтинг: 0 / 0
05.08.2007, 21:16
    #34706483
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
Где и когда создается nCon?
...
Рейтинг: 0 / 0
05.08.2007, 21:23
    #34706489
Ионас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
Sergey SizovГде и когда создается nCon?
Видимо собака здесь зарыта ?
WITH THISFORM
cDSN = ALLTRIM(.TextDSN.VALUE)
cUser = ALLTRIM(.TextUser.VALUE)
cParol = ALLTRIM(.TextParol.VALUE)
********************************************************************
IF .NOT.EMPTY(cDSN) .AND. .NOT.EMPTY(cUser) .AND. .NOT.EMPTY(cParol)
************создание локальной БД под именем "dblDOXOD"*************
ON ERROR a = 0
DELETE FILE dblgradient.DBC
DELETE FILE dblgradient.dct
DELETE FILE dblgradient.dcx
ON ERROR
*-----------------------
CREATE DATABASE dblgradient
*-----------
ON ERROR a=0
DELETE CONNECTION congradient
ON ERROR
*-------
CREATE CONNECTION congradient DATASOURCE &cDSN USERID &cUser PASSWORD &cParol DATABASE &cDSN
*-----------------------------------------------
DBSETPROP('congradient','connection','DispLogIn',3)
*-----------------------------------------------
nCON = SQLCONNECT('congradient')
*-----------------------------
If nCON <= 0 Then
MessageBox("Не удалось соединиться с сервером. Возможно вы неправильно указали имя пользователя, пароль или сервер в данный момент выключен. Если Вам не удается исправить ошибку, обратитесь к системному администратору.", 16, "Не удалось соединиться с сервером")
CLOSE DATABASES
Return
EndIF
********
.RELEASE
********закрытие и удаление локальной БД под именем "dblgradient"**********
CLOSE DATABASES
ON ERROR a = 0
DELETE FILE dblgradient.DBC
DELETE FILE dblgradient.dct
DELETE FILE dblgradient.dcx
ON ERROR
*-------
ELSE
*********
nCON = -1
Return
******

ENDIF
********
.RELEASE
********
ENDWITH
...
Рейтинг: 0 / 0
05.08.2007, 21:29
    #34706493
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
Конечно здесь зарыты!
У вас nCON это PRIVATE переменная, которая не доступна после отработки метода из других методов формы.
Создайте свойства в форме nCON и храните дескриптор соединения в нем.
С уважением, Алексей
...
Рейтинг: 0 / 0
05.08.2007, 22:11
    #34706516
Ионас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
Aleksey-K Создайте свойства в форме nCON и храните дескриптор соединения в нем.
С уважением, Алексей
Т.е. объявить здесь public nCON ?
...
Рейтинг: 0 / 0
05.08.2007, 22:19
    #34706522
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
C каких это пор создание свойства формы стало тождественным объявлению публичной переменной? Вроде вполне однозначно сказано - создайте свойство формы. Свойства формы видны во всех методах формы.
...
Рейтинг: 0 / 0
05.08.2007, 22:22
    #34706525
Ионас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
Aleksey-K Создайте свойства в форме nCON и храните дескриптор соединения в нем.

Допустим будет храниться в Init. Тогда и в клике кнопки это будет видно ?
...
Рейтинг: 0 / 0
05.08.2007, 22:26
    #34706529
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
Init - метод, внем никакие данные не могут храниться. Для хранения есть свойства. Еще раз повторяю, они видны из всех методов.
...
Рейтинг: 0 / 0
05.08.2007, 22:33
    #34706533
Ионас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
Sergey SizovInit - метод, внем никакие данные не могут храниться. Для хранения есть свойства. Еще раз повторяю, они видны из всех методов.
И в каком свойстве формы можно сохранить nCON ?
...
Рейтинг: 0 / 0
05.08.2007, 22:39
    #34706537
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
В том, которое для этого создадите. Меню Form->New Property
...
Рейтинг: 0 / 0
05.08.2007, 22:46
    #34706541
Ионас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
Sergey SizovВ том, которое для этого создадите. Меню Form->New Property
Век живи, век учись... Это я о себе.
А как дальше ? Задал имя (nCON), а как там прописать значение ? В окне, вместо .f. ?
...
Рейтинг: 0 / 0
05.08.2007, 22:49
    #34706543
Ионас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
Это я вручную задам, а как текущее значение формой считывать ?
...
Рейтинг: 0 / 0
05.08.2007, 23:32
    #34706577
Дек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
Попробуйте так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
With Thisform
     .AddProperty('nCon', 0 )
     .nCon = SQLConnect('DNS','User','Password')
     If .nCon <= 0 
          ? "Ошибка"
          Return .F.
     Endif
     = SQLEXEC(.nCon ,StrSQL)
Endwith
...
Рейтинг: 0 / 0
05.08.2007, 23:57
    #34706587
Ионас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
Дек Попробуйте так:
Попробовал. Дает : "Ошибка"
...
Рейтинг: 0 / 0
06.08.2007, 00:02
    #34706590
Ионас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
StrSQL="Select id, nm, Cn0 FROM table1"
thisform.text1.value=nCON
nAnswr=SQLEXEC(nCON,StrSQL)
thisform.text2.value=nAnswr
ErrServ(nAnswr, StrSQL)
В таком варианте дает nCOM=1, а в варианте

With Thisform
.AddProperty('nCon',0)
.nCon = SQLConnect('DNS','User','Password')
If .nCon <=0
? "Ошибка"
Return .F.
Endif
= SQLEXEC(.nCon ,StrSQL)
Endwith
дает сообщение об ошибке.
...
Рейтинг: 0 / 0
06.08.2007, 00:07
    #34706593
Ионас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
Поменял на:
.AddProperty('nCon',1)
И все равно дает ошибка
...
Рейтинг: 0 / 0
06.08.2007, 00:14
    #34706596
Ионас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
Ионас
With Thisform
.AddProperty('nCon',0)
.nCon = SQLConnect('DNS','User','Password')
If .nCon <=0
? "Ошибка"
? nCON
Return .F.
Endif
= SQLEXEC(.nCon ,StrSQL)
Endwith

Дает сообщение "ошибка", а значение nCON выводит 1.
...
Рейтинг: 0 / 0
06.08.2007, 08:21
    #34706713
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visual FoxPro + MS SQL Server 2000
ИонасПоменял на:
.AddProperty('nCon',1)
И все равно дает ошибка
Что-то у вас все перепуталось:
1. Какой ТОЧНЫЙ текст ошибки и где она происходит
2. Если вы добавили свойство nCon в дизайнере формы (Меню Form->New Property), то не надо это делать еще раз программно (.AddProperty('nCon',0))
3. В свой код, где вы создаете соединение и используете его, вместо nCon применятеся THISFORM.nCon
С уважением, Алексей.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Visual FoxPro + MS SQL Server 2000 / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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