Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / REPLACE или UPDATE / 8 сообщений из 8, страница 1 из 1
23.12.2006, 18:45
    #34220660
Jevgeniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REPLACE или UPDATE
Доброго времени суток - это опять я.

По нажатию кнопки нужно чтоб в таблице __wh в поле count отнилась продукция.

Имеем форму. На ней листбокс List1, Кнопка btnadd, текстбокс txtcount. При нажатии на кнопку добавляется записи в ьаблицы. Вот приведу код, может впоследстывии поможет разобраться:
Код: 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.
if form_new_zakaz.txtcount.value =  0 
	messagebox("Ââåäèòå êîëè÷åñòâî ïîêóïàåìîãî ïðîäóêòà")
else
	FOR nSel =  1  TO form_new_zakaz.list1.listcount
		IF form_new_zakaz.list1.selected(nSel)
			form_new_zakaz.list2.additem(form_new_zakaz.list1.list(nSel))
		ENDIF
	ENDFOR
	form_new_zakaz.list2.refresh	

	LOCAL _zID, _pID 
	_zID=__zakaz.ID

	INSERT INTO __include (prid) VALUE (__product.id)
	REPLACE __include.count WITH form_new_zakaz.txtcount.value
	REPLACE __include.zid WITH _zID

	form_new_zakaz.txtsumm.refresh
	form_new_zakaz.txtoverball.refresh
	form_new_zakaz.txtsumm.value=form_new_zakaz.txtsumm.value+form_new_zakaz.txtprice.value*form_new_zakaz.txtcount.value
	form_new_zakaz.txtoverball.value=form_new_zakaz.txtoverball.value+form_new_zakaz.txtball.value*form_new_zakaz.txtcount.value
	form_new_zakaz.txtsumm.refresh
	form_new_zakaz.txtoverball.refresh
	REPLACE __zakaz.summ WITH form_new_zakaz.txtsumm.value
	REPLACE __zakaz.overball WITH form_new_zakaz.txtoverball.value
endif
В этот моменте все прекрасно работает, но проблема в том что при добавлении продукта в ЗАКАз, он не убавляется со склада ( Вот такой резиновый склад получается :( ).
Добавляю код в конец всего этого кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
	Select count From __wh Where prid=thisform.list1.value into cursor qw
	Replace __wh.count With count-form_new_zakaz.txtcount.value
или
        DIMENSION cc( 1 , 1 )
        Select count From __wh Where prid=thisform.list1.value into array cc
	Replace __wh.count With cc-form_new_zakaz.txtcount.value

Варианты впринципе не отличаются, но не работает. Вернее работает, но отнимает в таблице __wh в поле count в первой записи -2. При каждом нажатии на кнопку. Пробовал делать через UPDATE - вообще никак не работает.
Подскажите как правильно обращаться с REPLACE, и если он тут не годиться, то как можно сделать по другому.
Спасибо.
...
Рейтинг: 0 / 0
23.12.2006, 19:22
    #34220689
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REPLACE или UPDATE
Jevgeniy...
Код: plaintext
1.
2.
Select count From __wh Where prid=thisform.list1.value into cursor qw
Replace __wh.count With count-form_new_zakaz.txtcount.value
В команде
Код: plaintext
Replace __wh.count With count-form_new_zakaz.txtcount.value
после опции WITH
count чей берется ? Если нужно чтобы курсора qw, то его и надо указывать
Код: plaintext
Replace __wh.count With qw.count-form_new_zakaz.txtcount.value
Но непонятно: курсор создается из той же записи, где сейчас установлен маркер в таблице __wh??? Если да, то зачем нужно создавать курсор из записи на которой сейчас находишься в таблице __wh, можно было сразу
Код: plaintext
Replace __wh.count With __wh.count-form_new_zakaz.txtcount.value
и не использовать курсор. Но м.б. у тебя своя какая-то идеология или я чего-то недопонял ???
...
Рейтинг: 0 / 0
23.12.2006, 20:34
    #34220753
Jevgeniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REPLACE или UPDATE
У меня count - поле таблицы __wh
...
Рейтинг: 0 / 0
23.12.2006, 20:40
    #34220756
Jevgeniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REPLACE или UPDATE
Я хочу отнять из поля count значение введеное в txtcount. Но при этом я беру значение поля __wh.prid равное значению form_new_zakaz.list1.value. Проблема в том, что почемуто при моем запросе почемуто изменяется только 1-я запись, и меняется на 2.

Конструкция
Код: plaintext
1.
UPDATE __wh SET count = count - form_new_zakaz.txtcount.value
WHERE __wh.prid = form_new_zakaz.list1.value
- но почему-то не работает :(
...
Рейтинг: 0 / 0
23.12.2006, 20:44
    #34220759
Jevgeniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REPLACE или UPDATE
Пишет что TXTCOUNT is not found, хотя вот скрин формы - тут оно точно есть, да и код ведь в первом посте работает!
...
Рейтинг: 0 / 0
24.12.2006, 06:30
    #34220939
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REPLACE или UPDATE
JevgeniyЯ хочу отнять из поля count значение введеное в txtcount. Но при этом я беру значение поля __wh.prid равное значению form_new_zakaz.list1.value. Проблема в том, что почемуто при моем запросе почемуто изменяется только 1-я запись, и меняется на 2.

Конструкция
Код: plaintext
1.
UPDATE __wh SET count = count - form_new_zakaz.txtcount.value
WHERE __wh.prid = form_new_zakaz.list1.value
- но почему-то не работает :(Если хочешь использовать UPDATE, то сначала переприсвой значения: form_new_zakaz.txtcount.value, form_new_zakaz.list1.value каким-либо переменным и их используй. Например:
Код: plaintext
1.
2.
3.
m.new_count = form_new_zakaz.txtcount.value
m.new_list = form_new_zakaz.list1.value
UPDATE __wh SET count = __wh.count - m.new_count
WHERE __wh.prid = m.new_list
Но можно было и REPLACE использовать, только как я и сообщал ранее надо явно указывать COUNT
Код: plaintext
Replace __wh.count With __wh.count-form_new_zakaz.txtcount.value
потому что в выше приведенном тобой коде скорее всего он брался из запроса qw .
И вообще надо следить за таблицами. Какие таблицы на каких записях в текущий момент установлены???.
...
Рейтинг: 0 / 0
24.12.2006, 17:24
    #34221233
Jevgeniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REPLACE или UPDATE
В таблице __include установлена последняя запись, в таблице __zakaz - последняя, в таблице __wh - с ней никакие операции е проводилисб, значит либо первая, либо та - которая использовалась в предыдущих запросах.

Структура такая: __zakaz (id, cid, summ, ovearball, data), __include(zid, prid, count), __product(id,...), __wh(prid, count, data,...)
...
Рейтинг: 0 / 0
24.12.2006, 17:48
    #34221256
Jevgeniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REPLACE или UPDATE
Владимир СА JevgeniyЯ хочу отнять из поля count значение введеное в txtcount. Но при этом я беру значение поля __wh.prid равное значению form_new_zakaz.list1.value. Проблема в том, что почемуто при моем запросе почемуто изменяется только 1-я запись, и меняется на 2.

Конструкция
Код: plaintext
1.
UPDATE __wh SET count = count - form_new_zakaz.txtcount.value
WHERE __wh.prid = form_new_zakaz.list1.value
- но почему-то не работает :(Если хочешь использовать UPDATE, то сначала переприсвой значения: form_new_zakaz.txtcount.value, form_new_zakaz.list1.value каким-либо переменным и их используй. Например:
Код: plaintext
1.
2.
3.
m.new_count = form_new_zakaz.txtcount.value
m.new_list = form_new_zakaz.list1.value
UPDATE __wh SET count = __wh.count - m.new_count
WHERE __wh.prid = m.new_list
Но можно было и REPLACE использовать, только как я и сообщал ранее надо явно указывать COUNT
Код: plaintext
Replace __wh.count With __wh.count-form_new_zakaz.txtcount.value
потому что в выше приведенном тобой коде скорее всего он брался из запроса qw .
И вообще надо следить за таблицами. Какие таблицы на каких записях в текущий момент установлены???.

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


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