Проблемы с выходом из программы.комбобокс

ping_09
Дата: 31.10.2012 10:01:43
Здравствуйте.
Есть программа, из меню происходит вызов формы,
на ней комбобокс.

В 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

Помогите решить данную проблему.
Jonny540
Дата: 31.10.2012 10:09:38
ping_09
в Destroy комбо:

If Used(this.RowSource) Then
Use In(this.RowSource)
Endif
Попробуй так:
в Destroy комбо:

This.RowSource=''
If Used(this.RowSource) Then
	Use In(this.RowSource)
Endif
Или закрывай курсор в Destroy формы
ping_09
Дата: 31.10.2012 10:16:27
Jonny540,

This.RowSource=' ' в Destroy комбо не помогло.
IgorNG
Дата: 31.10.2012 10:33:20
ping_09,

WAIT (this.RowSource) WINDOW && что покажет?
If Used(this.RowSource) Then
Use In(this.RowSource)
Endif
ping_09
Дата: 31.10.2012 10:51:46
IgorNG,

выдает название курсора.
ping_09
Дата: 31.10.2012 10:58:35
Есть мысль о том, чтобы попробовать закрывать формы, в
процедуре выхода. Что скажете, господа?
IgorNG
Дата: 31.10.2012 11:04:17
ping_09,

По кнопке выход у тебя выполняется prg, в котором команда CLOSE ALL, т.е. твой курсор закрывается. Попробуй её убрать - какой будет результат?
ping_09
Дата: 31.10.2012 11:08:22
IgorNG,

Закомментировал строку Close All и все отработало.
Объясните пожалуйста мне, неужели эту команду не нужно выполнять при закрытии приложения?
IgorNG
Дата: 31.10.2012 11:29:45
ping_09,

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

CLOSE ALL не закрывает:
Окно команд
Окно Debug
Помощь
Окно Trace
Jonny540
Дата: 31.10.2012 11:36:30
Или закрывай курсор в Destroy формы

А как насчет этого?