|
|
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
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 значение отсутствует. Любопытно почему ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 18:51 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Надо понимать так, что сообщение об ошибке возникает на команде ErrServ(). И что это за команда такая? UDF? Тогда, что внутри? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 20:04 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Если это полный код, то что-то не видно SQLCONNECT(...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 20:24 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
SU2014Если это полный код, то что-то не видно SQLCONNECT(...) Function ErrServ Parameters nAnswr, StrSQL ************************* IF nAnswr < 0 THEN **************** IF nCON > 0 THEN SQLDISCONNECT(nCON) ENDIF ******************************************************* MessageBox("Ошибка обращения к серверу!", 16, "Ошибка") QUIT **** ENDIF ******* ENDFUNC Поясню подробнее. Все есть. И коннект есть. Когда указанные три строки располагаю в Init формы, то все нормально функционирует. Когда хочу все это же иметь по клику на кнопку, расположенную на этой же форме, то возникает описанная мною проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 20:32 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
То, что в некотором свойстве формы (thisform.text1.value) записано некое число вовсе не говорит о том, что это число и есть номер открытого в данный момент соединения. Это просто число! Судя по сообщению об ошибке, Вы где-то явно закрываете соединение с хендлом 1. Возможно, Вы потом его снова открываете, но уже с другим хендлом. Ищите, что же у Вас там прописано в событиях открытия формы до того, как Вы нажали Click кнопки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 21:00 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Ищите, что же у Вас там прописано в событиях открытия формы до того, как Вы нажали Click кнопки. Специально создал форму с пустым Initом (для чистоты эксперимента). Если триада прописана в Init формы, то ноу проблем. Потом Init удаляю и эту триаду закрепляю за кликом кнопки. И возникает означенная проблема. Странновато как то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 21:09 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Где и когда создается nCon? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 21:16 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 21:23 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Конечно здесь зарыты! У вас nCON это PRIVATE переменная, которая не доступна после отработки метода из других методов формы. Создайте свойства в форме nCON и храните дескриптор соединения в нем. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 21:29 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Aleksey-K Создайте свойства в форме nCON и храните дескриптор соединения в нем. С уважением, Алексей Т.е. объявить здесь public nCON ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 22:11 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
C каких это пор создание свойства формы стало тождественным объявлению публичной переменной? Вроде вполне однозначно сказано - создайте свойство формы. Свойства формы видны во всех методах формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 22:19 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Aleksey-K Создайте свойства в форме nCON и храните дескриптор соединения в нем. Допустим будет храниться в Init. Тогда и в клике кнопки это будет видно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 22:22 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Init - метод, внем никакие данные не могут храниться. Для хранения есть свойства. Еще раз повторяю, они видны из всех методов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 22:26 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Sergey SizovInit - метод, внем никакие данные не могут храниться. Для хранения есть свойства. Еще раз повторяю, они видны из всех методов. И в каком свойстве формы можно сохранить nCON ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 22:33 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
В том, которое для этого создадите. Меню Form->New Property ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 22:39 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Sergey SizovВ том, которое для этого создадите. Меню Form->New Property Век живи, век учись... Это я о себе. А как дальше ? Задал имя (nCON), а как там прописать значение ? В окне, вместо .f. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 22:46 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Это я вручную задам, а как текущее значение формой считывать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 22:49 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Попробуйте так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 23:32 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Дек Попробуйте так: Попробовал. Дает : "Ошибка" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2007, 23:57 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
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 дает сообщение об ошибке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 00:02 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Поменял на: .AddProperty('nCon',1) И все равно дает ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 00:07 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Ионас With Thisform .AddProperty('nCon',0) .nCon = SQLConnect('DNS','User','Password') If .nCon <=0 ? "Ошибка" ? nCON Return .F. Endif = SQLEXEC(.nCon ,StrSQL) Endwith Дает сообщение "ошибка", а значение nCON выводит 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 00:14 |
|
||
|
Visual FoxPro + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
ИонасПоменял на: .AddProperty('nCon',1) И все равно дает ошибка Что-то у вас все перепуталось: 1. Какой ТОЧНЫЙ текст ошибки и где она происходит 2. Если вы добавили свойство nCon в дизайнере формы (Меню Form->New Property), то не надо это делать еще раз программно (.AddProperty('nCon',0)) 3. В свой код, где вы создаете соединение и используете его, вместо nCon применятеся THISFORM.nCon С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 08:21 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34706543&tid=1588921]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 234ms |
| total: | 395ms |

| 0 / 0 |
