Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблемы с выходом из программы.комбобокс / 17 сообщений из 17, страница 1 из 1
31.10.2012, 10:01
    #38019622
ping_09
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с выходом из программы.комбобокс
Здравствуйте.
Есть программа, из меню происходит вызов формы,
на ней комбобокс.

В Init комбо написан вот такой код:

Local curLpt

m.curSmo='t'+SYS(2015)
This.RowSource=''
strSQL="SELECT UPPER(name) as name,kod FROM lpt order by name"
m.result=SQLExec(nConn,strSQL,m.curLpt)

This.IncrementalSearch=.T.
This.ColumnCount = 1
This.BoundColumn = 2
This.BoundTo = .T.
This.ColumnWidths ='300,0'
This.RowSourceType=2
This.RowSource=m.curLpt

в Destroy комбо:

If Used(this.RowSource) Then
Use In(this.RowSource)
Endif

И все работает прекрасно, если только не нажать на кнопку "Выход" в меню.
Появляется сообщение, что нет доступа и далее название моего курсора,
который служит источником данных для комбы.

Код кнопки "Выход":

vareexit=MESSAGEBOX("Программа будет закрыта.Вы уверены?",33,"Выход")
IF vareexit=1
DO exitprogram.prg
ENDIF

Код exitprogram.prg:

Procedure ExitProgram

* устанавливаем меню по умолчанию

Set Sysmenu To

* отключаем обработчик ошибок

On Error

* включаем статусную строку

Set Status Bar On

* закрываем все окна и таблицы

Close All

* очищаем все переменные из памяти

Clear All

* и выходим в среду разработки или операционную систему

Cancel

Endproc

Помогите решить данную проблему.
...
Рейтинг: 0 / 0
31.10.2012, 10:09
    #38019634
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с выходом из программы.комбобокс
ping_09в Destroy комбо:

If Used(this.RowSource) Then
Use In(this.RowSource)
Endif
Попробуй так:
Код: plsql
1.
2.
3.
4.
5.
6.
в Destroy комбо:

This.RowSource=''
If Used(this.RowSource) Then
	Use In(this.RowSource)
Endif

Или закрывай курсор в Destroy формы
...
Рейтинг: 0 / 0
31.10.2012, 10:16
    #38019644
ping_09
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с выходом из программы.комбобокс
Jonny540,

This.RowSource=' ' в Destroy комбо не помогло.
...
Рейтинг: 0 / 0
31.10.2012, 10:33
    #38019664
IgorNG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с выходом из программы.комбобокс
ping_09,

WAIT (this.RowSource) WINDOW && что покажет?
If Used(this.RowSource) Then
Use In(this.RowSource)
Endif
...
Рейтинг: 0 / 0
31.10.2012, 10:51
    #38019710
ping_09
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с выходом из программы.комбобокс
IgorNG,

выдает название курсора.
...
Рейтинг: 0 / 0
31.10.2012, 10:58
    #38019723
ping_09
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с выходом из программы.комбобокс
Есть мысль о том, чтобы попробовать закрывать формы, в
процедуре выхода. Что скажете, господа?
...
Рейтинг: 0 / 0
31.10.2012, 11:04
    #38019736
IgorNG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с выходом из программы.комбобокс
ping_09,

По кнопке выход у тебя выполняется prg, в котором команда CLOSE ALL, т.е. твой курсор закрывается. Попробуй её убрать - какой будет результат?
...
Рейтинг: 0 / 0
31.10.2012, 11:08
    #38019742
ping_09
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с выходом из программы.комбобокс
IgorNG,

Закомментировал строку Close All и все отработало.
Объясните пожалуйста мне, неужели эту команду не нужно выполнять при закрытии приложения?
...
Рейтинг: 0 / 0
31.10.2012, 11:29
    #38019779
IgorNG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с выходом из программы.комбобокс
ping_09,

Закрывает все открытые базы данных, таблицы и индексы во всех рабочих областях и выбирает рабочую область 1. Команда CLOSE ALL также закрывает все файлы, открытые с помощью функций файлов низкого уровня FCREATE( ) и FOPEN( ) и процедурные файлы открытые с помощью команды SET PROCEDURE. CLOSE ALL не закрывает файлы открытые командой SET PRINT. По команде CLOSE ALL также закрываются:
Дизайнер Форм
Менеджер проектов
Дизайнер этикеток
Дизийнер отчетов
Дизайнер запросов

CLOSE ALL не закрывает:
Окно команд
Окно Debug
Помощь
Окно Trace
...
Рейтинг: 0 / 0
31.10.2012, 11:36
    #38019798
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с выходом из программы.комбобокс
Или закрывай курсор в Destroy формы
А как насчет этого?
...
Рейтинг: 0 / 0
31.10.2012, 12:37
    #38019922
ping_09
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с выходом из программы.комбобокс
Jonny540,

А так фокса ругается, что не существует переменнная m.curLpt.

If Used (this.m.curLpt) Then
Use In (this.m.curLpt)
Endif
...
Рейтинг: 0 / 0
31.10.2012, 12:45
    #38019942
IgorNG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с выходом из программы.комбобокс
ping_09,

Потому что он определена как local
...
Рейтинг: 0 / 0
31.10.2012, 12:47
    #38019946
ping_09
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с выходом из программы.комбобокс
IgorNG,

Верно, но ведь PUBLIC-переменные не очень-то и рекомендуют использовать.
...
Рейтинг: 0 / 0
31.10.2012, 13:04
    #38019978
IgorNG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с выходом из программы.комбобокс
ping_09,

Верно.
Я вообще предпочитаю именовать курсоры своими именами и этим уменьшаю количсетво проблем.

SQLEXEC(nStatementHandle [, cSQLCommand [, cCursorName[, aCountInfo]]])
cCursorName
Определяет имя (наименование) Курсора Visual FoxPro, в который выгружаются получаемые результаты выполнения оператора SQL. Если данный параметр функции не указан, Visual FoxPro использует имя по-умолчанию: SQLRESULT.

И непонятно зачем имя курсора заносить в переменную?
Что разве так не будет работать?
m.result=SQLExec(nConn,strSQL,"curLpt")
Тогда и отпала бы необходимость в танцах, типа
If Used(this.RowSource) Then
Use In(this.RowSource)

Люблю понятность. :)
...
Рейтинг: 0 / 0
31.10.2012, 13:05
    #38019980
IgorNG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с выходом из программы.комбобокс
ping_09,

Верно.
Я вообще предпочитаю именовать курсоры своими именами и этим уменьшаю количсетво проблем.

SQLEXEC(nStatementHandle [, cSQLCommand [, cCursorName[, aCountInfo]]])
cCursorName
Определяет имя (наименование) Курсора Visual FoxPro, в который выгружаются получаемые результаты выполнения оператора SQL. Если данный параметр функции не указан, Visual FoxPro использует имя по-умолчанию: SQLRESULT.

И непонятно зачем имя курсора заносить в переменную?
Что разве так не будет работать?
m.result=SQLExec(nConn,strSQL,"curLpt")
Тогда и отпала бы необходимость в танцах, типа
If Used(this.RowSource) Then
Use In(this.RowSource)

Люблю понятность. :)
...
Рейтинг: 0 / 0
31.10.2012, 15:21
    #38020292
Reese
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с выходом из программы.комбобокс
Как вариант, перейти на приватные сессии. Тогда все курсоры закроются по закрытии формы.
...
Рейтинг: 0 / 0
31.10.2012, 16:22
    #38020421
ping_09
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с выходом из программы.комбобокс
Всем спасибо. Проблема решена. Советы учту.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблемы с выходом из программы.комбобокс / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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