Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / list / 11 сообщений из 11, страница 1 из 1
01.11.2003, 04:31
    #32312445
oma
oma
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list
Помогите с listoм. у меня их два для выбора значений и добавления их в таблицу, событие поставлено на кнопку. Но дело в этом. Не получается определить были выделены пункты или нет, т.е. если не выбрано так вообще ничего добавлять-то и не надо. Заранее спасибо.
...
Рейтинг: 0 / 0
01.11.2003, 07:10
    #32312451
NNN
NNN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list
Пример есть в хелпе.
Код: plaintext
HELP MultiSelect
...
Рейтинг: 0 / 0
01.11.2003, 08:02
    #32312453
oma
oma
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list
у меня вопрос не в мультиселекте...а как определить, было ли нажатие на listbox..есть у него такое свойство или надо с помощью логической переменной перебирать все строки?
...
Рейтинг: 0 / 0
01.11.2003, 08:52
    #32312456
NNN
NNN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list
Нет, перебирать все строки в этом случае не нужно, достаточно посмотреть, что возвращает ListBox.Value.
Код: plaintext
1.
2.
3.
4.
IF EMPTY(thisform.ListBox.Value)
*!* Ничего не выбрано
ELSE
*!* В thisform.ListBox.Value будет значение выбранного пункта
ENDIF
...
Рейтинг: 0 / 0
02.11.2003, 04:49
    #32312703
oma
oma
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list
Спасибо большое за помощь, но возникла новая проблема..))

в обработке ошибки.

Когда я беру (уже в програме) из гридов информацию, и вставляю ее в качестве новой строки в другую таблицу. как избежать ошибки повторяемости (неуникальности) записи и в этом случае вообще не вставлять новую строку, и выдать сообщение пользователю о неуникальности записи, без остановки программы и особых проблем

Спасибо заранее.
...
Рейтинг: 0 / 0
02.11.2003, 09:34
    #32312714
NNN
NNN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list
Код: 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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
*!* Свое сообщение об ошибке
#define MYERRORMESSAGE 'Ошибка. Попытка добавить неуникальное значение'
*!* Предварительные действия
CREATE CURSOR test (test i unique)
LOCAL lnValue
lnValue= 1 
*!* Вставка значения без ошибки
INSERT INTO test (test) VALUES (lnValue)
*!* Способ  1 
*!* Сначала ищем это значение и вставляем его только, если не находим.
IF INDEXSEEK(lnValue,.T.,'test','test')
	=MESSAGEBOX(MYERRORMESSAGE, 48 )
ELSE
	INSERT INTO test (test) VALUES (lnValue)
ENDIF
*!* Способ  2 
*!* Через обработку ошибок.
LOCAL onError 
onError=ON( "Error" )
ON ERROR do ErrorHandler
INSERT INTO test (test) VALUES (lnValue)
ON ERROR &onError
*!* Способ  3 
*!* Через структурную обработку исключений. Только VFP8.
LOCAL oErr AS Exception
TRY 
	INSERT INTO test (test) VALUES (lnValue)
CATCH TO oErr
	IF oErr.ErrorNo= 1884 
		=MESSAGEBOX(MYERRORMESSAGE, 48 )
	ELSE 
		=MESSAGEBOX(oErr.Message, 48 )
	ENDIF 	
ENDTRY 
*!* Последующие действия
BROWSE
USE 

PROCEDURE ErrorHandler
=MESSAGEBOX(MYERRORMESSAGE, 48 )
...
Рейтинг: 0 / 0
02.11.2003, 16:25
    #32312787
oma
oma
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list
спасибо, был выбран второй способ,но тут ошибка file errorhandler does not exists.
т.е ON ERROR do ErrorHandler - он воспринимается как файл prg
что следует делать? может не подключена какая-то библиотека?

все действия были поставлены на нажатие клавиши
...
Рейтинг: 0 / 0
02.11.2003, 18:00
    #32312817
NNN
NNN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list
Процедура ErrorHandler (из примера) должна быть в области видимости, либо в отдельном программном файле, либо в файле указанном в SET PROCEDURE TO. Смотри подробности в хелпе по SET PROCEDURE.
В твоем случае можно не мучаться и использовать еще один вариант - метод Error кнопки.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 *!* Command.Error
#define MYERRORMESSAGE 'Ошибка. Попытка добавить неуникальное значение'
LPARAMETERS nError, cMethod, nLine
IF nError= 1884 
	=MESSAGEBOX(MYERRORMESSAGE, 48 )
ELSE 
	=MESSAGEBOX(MESSAGE(), 48 )
ENDIF 	
...
Рейтинг: 0 / 0
03.11.2003, 04:04
    #32312939
oma
oma
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list
Вы не могли бы уточнить, в программе у меня только способ, поставленный на событие error, все остальное было убрано, это верно?

сообщение выдается, программа не останавливает работу, но например при попытке добавить запись 4 4, которая не уникальна, выдается сообщение об неуникальности и добавляется запись 4 0. Вы не могли бы подсказать с чем это связано. Спасибо большое за ответы.
...
Рейтинг: 0 / 0
03.11.2003, 09:11
    #32313033
NNN
NNN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list
2oma

> в программе у меня только способ, поставленный на событие error, все остальное было убрано, это верно?

Верно.

> выдается сообщение об неуникальности и добавляется запись 4 0.

Надо смотреть код, тут телепаты редко встречаются :)
...
Рейтинг: 0 / 0
03.11.2003, 16:01
    #32313718
oma
oma
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
list
Спасибо Вам большое за ответы, уже работает все, просто затесалась в код ошибка
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / list / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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