
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
03.05.2005, 10:16
|
|||
|---|---|---|---|
|
|||
склсервер |
|||
|
#18+
есть такая противная проблема написана программа на фоксе которая использует одбс соединение для выкачки сведений из скл сервера при первом запуске программы всё проходит вполне нормально далее программа остается работать в свободном полете но время от времени данные нужно обновлять вот тут то и начинаються проблемы переодически программа перестает обновлять данные хотя если ее перезапустить то всё будет нормально что происходит? STORE SQLCONNECT('utf', '....', '.....') TO gnConnHandle IF gnConnHandle <= 0 = MESSAGEBOX('Cannot make connection', 16, 'SQL Connect Error') Else RR=SQLEXEC(gnConnHandle,StrSQL) = SQLDISCONNECT(gnConnHandle) endif может нужно ли ждать окончание обработки жирной команды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.05.2005, 10:32
|
|||
|---|---|---|---|
склсервер |
|||
|
#18+
А какая команда идет на SQL Server ?! Где присвоение переменной StrSQL ? С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.05.2005, 10:44
|
|||
|---|---|---|---|
|
|||
склсервер |
|||
|
#18+
ну если для Вас это принципиально StrSQL="exec utf..mysor3 " надеюсь текст хранимки Вам не нужен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.05.2005, 10:55
|
|||
|---|---|---|---|
склсервер |
|||
|
#18+
Мало информации... Может проблема с синхронным и асинхронным режимом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.05.2005, 10:59
|
|||
|---|---|---|---|
склсервер |
|||
|
#18+
Нет, текст SP меня не интересует. Если Вы уверены, что команда RR=SQLEXEC(gnConnHandle,StrSQL) проходит, а обновление данных, судя по тексту StrSQL, происходит в mysor3, то причем тут VFP !? Смотрите текст самой SP - что-то в ней. С уважением, Алексей. P.S. Я бы для уверенности проверил значение RR после отработки команды SQLEXEC. Если RR < 0, то ошибка. Если = 0, то команда закончила работу без ошибки, а если > 0, то возможно у вас установлен асинхронный режим работы и команда еще выполняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.05.2005, 11:03
|
|||
|---|---|---|---|
склсервер |
|||
|
#18+
Aleksey-KP.S. Я бы для уверенности проверил значение RR после отработки команды SQLEXEC. Если RR < 0, то ошибка. Если = 0, то команда закончила работу без ошибки, а если > 0, то возможно у вас установлен асинхронный режим работы и команда еще выполняется. Несколько не так: < 0 - ошибка. Уточняем по AERROR() какая именно = 0 - процесс выполнения еще не закончен. Работа в асинхронном режиме >0 - процесс успешно завершен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.05.2005, 11:17
|
|||
|---|---|---|---|
склсервер |
|||
|
#18+
ВладимирМ Aleksey-KP.S. Я бы для уверенности проверил значение RR после отработки команды SQLEXEC. Если RR < 0, то ошибка. Если = 0, то команда закончила работу без ошибки, а если > 0, то возможно у вас установлен асинхронный режим работы и команда еще выполняется. Несколько не так: < 0 - ошибка. Уточняем по AERROR() какая именно = 0 - процесс выполнения еще не закончен. Работа в асинхронном режиме >0 - процесс успешно завершен. Да, немного ошибся. Правда есть еще работу в асинхронном непакетном режиме. Тогда 1 - возврат очередного RowSet, а 2 - больше пакетов нет, но это уже совсем экзотика, да и команда используется не только SQLEXEC, но SQLMORERESULTS С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.05.2005, 11:18
|
|||
|---|---|---|---|
|
|||
склсервер |
|||
|
#18+
2ВладимирМ как всегда по существу спасибо я тоже думаю что скорее всего дело в том что соединенение как-то провисает и возможно что из-за того что "загруженое" соединение нельзя отключить 2Sergey Ch = SQLSETPROP(gnConnHandle, 'asynchronous', .F.) хотя в данном случае это строка лишняя если не ошибся то это установка по умолчанию но как говориться кто обжегся на молоко тот дует водка значит если я правильно понял нужно ждать заверешения выполнения жирного оператора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.05.2005, 11:20
|
|||
|---|---|---|---|
склсервер |
|||
|
#18+
кошмарик2ВладимирМ как всегда по существу спасибо я тоже думаю что скорее всего дело в том что соединенение как-то провисает и возможно что из-за того что "загруженое" соединение нельзя отключить 2Sergey Ch = SQLSETPROP(gnConnHandle, 'asynchronous', .F.) хотя в данном случае это строка лишняя если не ошибся то это установка по умолчанию но как говориться кто обжегся на молоко тот дует водка значит если я правильно понял нужно ждать заверешения выполнения жирного оператора? Если синхронный режим работы (SQLSETPROP(gnConnHandle, 'asynchronous', .F.)), то ждать не надо. Достаточно проверить, что RR > 0 С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.05.2005, 11:30
|
|||
|---|---|---|---|
склсервер |
|||
|
#18+
Такая ситуация наблюдалась в 5-ке (не помню с каким драйвером ODBC), хотя и не должна была появляться при Ваших условиях. Тем не менее есть несколько скрытых моментов 1. Между созданием соединениея и выполнением SQLEXEC - соединение рвётся, т.е. указатель существует, а соединения нет. 2. Влияние опции SELECT ... OPTION (FAST n) - в этом случае помогает принудительная выборка всего курсора 3. Если ХП не возвращает курсор, то помогало WAIT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.05.2005, 11:34
|
|||
|---|---|---|---|
|
|||
склсервер |
|||
|
#18+
понимаете здесь что-то не так не пойму что эта кнопочка по которой код вызываеться она после нажатия на пропадает (вернее должна пропасть ) и появляеться только после выполнения кода и так и происходит при первом запуске или возможно второго но переодически она просто перестает пропадать и соответственно табличка не обновляеться хотя соединение не ругаеться т.е. такое впечатление что идем по ветке else хотя this.Visible=.f. это первая строка в методе клик кнопки сам клик работает нормально как минимум один раз а при моих тестированиях и более раз она возникает переодически по непонятной причине так вот я и ищу причину возможно она и не в фоксе хотя кто знает нажатия на другие объекты формы отрабатываються нормально соединение с сервером через адсл выделенку так почему кнопка не пропадает и код не выполняеться ? может кто знает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.05.2005, 11:56
|
|||
|---|---|---|---|
склсервер |
|||
|
#18+
кошмарикпонимаете здесь что-то не так не пойму что эта кнопочка по которой код вызываеться она после нажатия на пропадает (вернее должна пропасть ) и появляеться только после выполнения кода Если ты написал код вроде: Код: plaintext 1. 2. 3. 4. То кнопка пропадать НЕ будет. Здесь вопрос в том, что после подачи команды Visible = .F. и до команды Visible = .T. нет прерывания текущего события. Т.е. самому процессу скрытия/отображения кнопки некуда втиснуться. Надо искусственно дать сработать этому событию. Примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Ну, или вызывать SQLExec() в другой процедуре Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.05.2005, 12:19
|
|||
|---|---|---|---|
|
|||
склсервер |
|||
|
#18+
this.Visible=.f. thisform.refresh ...................... и кнопка пропадает по крайней мере на тестировании и первый раз после запуска а возможно и более она перестает пропадать только когда запрос к серверу не выполняется причем не выполняеться молча полная иллюзия что все нормально типа на шипке все спокойно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.05.2005, 13:24
|
|||
|---|---|---|---|
склсервер |
|||
|
#18+
Прочти, ещё раз ОЧЕНЬ ВНИМАТЕЛЬНО все посты ВладимираМ , и подумай в каком месте выполняется функция и НЕ выполняется проверка на ошибку - сразу всё встанет на свои места. Обрати внимание, что ф-ии SQLEXEC, SQLCONNECT итд, возвращают результат выполнения и ни как не сообщают фоксовому обработчику ошибок об ошибке, так же посмотри на настройки соединения на предмет показа(возвращения) ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.05.2005, 14:47
|
|||
|---|---|---|---|
склсервер |
|||
|
#18+
2ВладимирМ Вы конечно гуру но ваше DOEVENTS мне не понятно может объясните подробнее ? особенно если AutoYield никто не трогал? Мне просто стало любопытно и я мсдн почитал так вот ничего и не понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.05.2005, 16:13
|
|||
|---|---|---|---|
склсервер |
|||
|
#18+
leaf2ВладимирМ Вы конечно гуру но ваше DOEVENTS мне не понятно может объясните подробнее ? особенно если AutoYield никто не трогал? Мне просто стало любопытно и я мсдн почитал так вот ничего и не понял? Предположим, сделали настройку _VFP.AutoYield = .F. Теперь делаем простую формочку с одной кнопкой в событии Click() которой такой код Код: plaintext 1. 2. 3. 4. 5. 6. 7. В этом случае, изменение текста Caption кнопки на "Вычисление" вообще не произойдет! Именно потому, что событие перерисовки Caption поставлено в очередь. А вот если после этой команды дать команду DOEVENTS То событие перерисовки произойдет немедленно! Т.е. будут выполнены те собятия, которые стоят в очереди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.05.2005, 16:18
|
|||
|---|---|---|---|
склсервер |
|||
|
#18+
так конечно всё правильно только по умолчанию _VFP.AutoYield = .Т. а что бы поменять ещё додуматься надо да и кнопка не заголовок окна ну да ладно по любому для меня например любая иформация полезна не знаю как автору у него кажеться соединение подвисает а потом уже кнопка не исчезает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=41&mobile=1&tid=1594305]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
187ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 554ms |

| 0 / 0 |
