powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Програмная ошибка
12 сообщений из 12, страница 1 из 1
Програмная ошибка
    #34155890
mr. Eof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Подскажите пожалуйста, в чем может быть проблема:

Для свойства InteractiveChange элемента ComboBox делаю следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CLOSE TABLES ALL
USE "Tables\posts_table.dbf" ALIAS posts_table
SELECT posts_table

num = RECCOUNT('posts_table')
FOR i =  1  TO num
	GOTO i
	IF (posts_table.post+" " = ALLTRIM(thisform.pageframe1.page2.combo1.Value+" ")) THEN
		thisform.pageframe1.page2.text4.Value = posts_table.id
		EXIT
	ENDIF
ENDFOR

Структура posts_table
+---+-------+
| id | post |
+---+-------+

В ComboBex - RowSourceType - Alias a RowSource - posts_table.post

Тоесть выбираю в Combobox - значение а в Text4 хочу загнать соответствующий этому значению id.

FoxPro говорит: File in use (тоесть первая проблема - доступа) и в Text4 значение из id так и не подставляет (а это - вторая проблема)...

Почему так происходит - не понимаю. Только догадываюсь..

Большое Спасибо!
...
Рейтинг: 0 / 0
Програмная ошибка
    #34155985
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 mr. Eof

У тя файл 'posts_table' уже кемто используеться или даже ты его уже где-то открыл. и открыт он у тебя в монопользовательском режиме. Пропеши это в самом начале SET EXCLUSIVE OFF
...
Рейтинг: 0 / 0
Програмная ошибка
    #34156183
BMJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BMJ
Гость
Может запись искать через locate FOR ...,
GO TO i кажется из бейсика (фортрана)
Зачем закрывать все таблицы? Потеряются данные в контролах, лучше проверить на USE
IF !USED('tabl')
USE table
ENDIF
selECT table
...
Рейтинг: 0 / 0
Програмная ошибка
    #34156309
M.Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Close Databases All
Set Exact Off
Set Deleted On

* Создаем таблицу
Create Table posts_table ( Id N( 10 ), post C( 20 ))
Local llOK As Logical
llOK = OpenTable("D:\posts_table.dbf","posts_table","Exclusive",'') && Открываем в Exclusive
&& В данном случае не обязательно, она уже в Exclusive
Index On Alltrim(post) Tag tpost && Создаем индекс
&& Все. Теперь таблички закрыли.
Close Databases All

llOK = llOK  And OpenTable("D:\posts_table.dbf","posts_table","Shared",'tpost') && Открываем в Shared
Local lcFindSearch
lcFindSearch = ALLTRIM(thisform.pageframe1.page2.combo1.Value)
If Seek( lcFindSearch ) && Вот тут ищем
   ? OK
Endif


Procedure OpenTable(cNameTable As String,cNameAlias As String, cMode As String,cOrder As String)
   If !Used(cNameAlias)
      Use (cNameTable) In  0  Again  &cMode  Alias (cNameAlias) Order Iif(!Empty(cOrder), ( cOrder ), 0 )
      Select (cNameAlias)
   Endif
   Return Used(cNameAlias)
Endproc

НО ! Это никак нельзя использовать в InteractiveChange , как и твой код. Тем более при привязке контрола к Alias. Получается ты выбрал из контрола значение которое должно найти какое-то другое значение из этой же таблицы. В чем смысл ? Да и результат у тебя будет тот же что и ты выбрал только дольше будет искаться. Зачем искать то, что ты выбрал ? Может быть просто его записать в из свойства Value контрола ? В общем возможно я что-то не понял :)
...
Рейтинг: 0 / 0
Програмная ошибка
    #34156450
ORAselect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А зачем такой кишмишь? Ты что хочешь сделать? Вообще если речь идет об обновлении то и обновляй а цикл гонять зачем? Можешь описать задачу? Я не понял, зачем так написано и что нужно...
...
Рейтинг: 0 / 0
Програмная ошибка
    #34156460
ORAselect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
local thisValue,OldArea

*Сохранили обстановку
OldArea =select()
*В переменную значение ключа поиска
thisValue = this.value+' '
*открыли таблицу

USE "Tables\posts_table.dbf" in 0 ALIAS posts_table
*нашли значение, соответствующее ключу
select * from posts_table where ThisValue = post+' ' into cursor MyCursor
*перешли в курсор
select MyCursor
* сохранили значение
if reccount() >0
thisform.pageframe1.page2.text4.Value = MyCursor.id
else
thisform.pageframe1.page2.text4.Value = 0 && Или -1, например
messagebox('Нет совпадений')
endif

slect(OldArea)

Я тему правильно понял?
...
Рейтинг: 0 / 0
Програмная ошибка
    #34156461
ORAselect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А чтобы так не ругалась, добавь еще в конце,


use in MyCursor
sele(OldArea)
...
Рейтинг: 0 / 0
Програмная ошибка
    #34156465
ORAselect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И закоменнтируй открытие своей таблицы. Ты ее открываешь, но не закрываешь и когда снова обращаешься к методу фокс скандалит справедливо. Вообще всегда проверяй таблицу перед открытием, может она уже открыта:
if !used('MyTable')
use MyTable in 0 excl && share
endif
sele MyTable

Так ругаться не будет никогда
...
Рейтинг: 0 / 0
Програмная ошибка
    #34156467
ORAselect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Недоходящий2 mr. Eof

У тя файл 'posts_table' уже кемто используеться или даже ты его уже где-то открыл. и открыт он у тебя в монопользовательском режиме. Пропеши это в самом начале SET EXCLUSIVE OFF

Надо не в эксклюзиве открывать, а просто проверить на существования алиаса
...
Рейтинг: 0 / 0
Програмная ошибка
    #34157352
Maltsev Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Присоединяюсь к предыдущему докладчику:

ORAselectА зачем такой кишмишь? Ты что хочешь сделать? ....

Если ты хочешь значение из сомбо загнать в текст, то зачем такие навороты ?!?

Дано:
1) Есть табла.
2) Есть комбо в источнике которого эта табла ...
3) ТАБЛА ОТКРЫТА !!!
4) Есть текст который отображает ID выбранной строки

Надо: при выборе значения из сомбо, обновить ID в тексте.

1) Из дезайнера
1.1) Указываешь источник для списка комбобокса (ControlSource=posts_table.post)
1.2) Указываешь источник для текста (ControlSource=posts_table.ID)

Запускаешь: все работает !!! :-))
Смысл в том, что при переходе в сомбо, он автоматически перемещает указатель записи в табле. И поидее ТЕкстБокс должен обновиться ... Если не обновился в InterActiveChange напиши: ThisForm.Refresh()
...
Рейтинг: 0 / 0
Програмная ошибка
    #34158907
ORAselect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.....Maltsev Max .....

Если таблица одна и из нее тянем ID - действительно достаточно. А если из другой по значению в списке - не пойдет.
...
Рейтинг: 0 / 0
Програмная ошибка
    #34159610
Maltsev Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда в InterActiveChange
Код: plaintext
1.
2.
3.
4.
5.
6.
 
_Alias=Alias()
Select OtherTable
Locate for AllTrim(OtherTable.Field)=AllTrim(This.Value)
Select Select(_Alias)
ThisForm.Refresh()


Ну и само собой у TextBox`a д.б. прописан ControlSource = OtherTable.ID
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Програмная ошибка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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