Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Как поступать  [new]
_mirror
Member

Откуда:
Сообщений: 30
я пишу обработчик нажатия кнопки поиск

как мне открывать и закрывать таблицу в этой процедуре

я написал

SELECT customer
LOCATE FOR customer.fio=ALLTRIM(thisform.text20.Value)
IF FOUND() then
thisform.text1.Value=customer.fio
ENDIF

при первом запуске он пишет

alias customer is not found

ладно хорошо таблица не открыта, делаем так

use customer.dbf
SELECT customer
LOCATE FOR customer.fio=ALLTRIM(thisform.text20.Value)
IF FOUND() then
thisform.text1.Value=customer.fio
ENDIF

но ведь при повторном запуске формы и нажатии кнопки fox пытается открыть уже открытую таблицу и естественно выдает file is in use

наверное надо закрывать таблицу в конце обработчика нажатия кнопки?
как это сделать и как решить целиком эту проблему?
10 июн 07, 23:49    [4254725]     Ответить | Цитировать Сообщить модератору
 Re: Как поступать  [new]
Burn
Member

Откуда: Днепропетровск, Украина
Сообщений: 1167
Всетаки хелп надо читать и поиском по форуму пользоватся.
Буквально на этой странице подобное обсуждали.

Открытие таблицы c проверкой
IF not Used('customer')
USE customer
ENDIF

Закрытие с проверкой
USE IN Select('customer')

Все таблицы надо открывать при окрытие формы и закрывать при выходе из нее. А не дергать каждый раз
11 июн 07, 09:14    [4254911]     Ответить | Цитировать Сообщить модератору
 Re: Как поступать  [new]
anelsasha
Member

Откуда:
Сообщений: 9
* 1-й вариант
IF NOT USED('customer')
use customer.dbf
ENDIF
SELECT customer
LOCATE FOR customer.fio=ALLTRIM(thisform.text20.Value)
IF FOUND() then
thisform.text1.Value=customer.fio
ENDIF

* 2-й вариант
use customer.dbf
SELECT customer
LOCATE FOR customer.fio=ALLTRIM(thisform.text20.Value)
IF FOUND() then
thisform.text1.Value=customer.fio
ENDIF
USE IN customer

Но все зависит от конкретной идеологии работы с формой: можно закрытие "USE IN customer" разместить и в методе UNLOAD рассматриваемой формы, а открытие "use customer.dbf" в методе INIT рассматриваемой формы ... и тогда не нужно будет "открывать/закрывать" при каждом поиске....
11 июн 07, 09:24    [4254917]     Ответить | Цитировать Сообщить модератору
 Re: Как поступать  [new]
BMJ
Member

Откуда: Москва
Сообщений: 270
Чтобы на париться USE не USE

SELECT fio FROM customer where customer.fio=ALLTRIM(thisform.text20.Value) into CURSOR qcur
thisform.text1.Value=qcur.fio
11 июн 07, 11:04    [4255054]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить