:: Visual Foxpro, Foxpro for DOS
SELECT не считает
Артём

Сообщений: 116
Дата регистрации: 23.04.2001
есть sql и привязанный к нему через set relation dbf
WITH ThisForm.GNameGrid
.RecordSourceType = 4
.RecordSource = this.oSQL.get_text()+' ORDER BY sorder INTO CURSOR main_sql'
SELECT main_sql
SET RELATION TO good_code INTO ww_good
...
.Column1.ControlSource = "main_sql.name"
...
.Column6.ControlSource = "ww_good.qupack"
.Column7.ControlSource = "ww_good.quantity"
.Column8.ControlSource = "main_sql.price"
всё это рисуется в grid . я могу редактировать значения qupack и quantity

в AfterRowColChange грида пытаюсь просуммировать , грубо говоря сумму накладной
FLUSH FORCE
SELECT SUM((g_name.pack*ww_good.qupack + ww_good.quantity) * main_SQL.price) AS cost;
FROM main_SQL, ww_good, g_name, goodies;
WHERE (main_SQL.good_code = ww_good.code).AND.;
(main_SQL.good_code = goodies.code).AND.;
(g_name.code = goodies.g_name);
INTO CURSOR Cost_SQL
thisform.SumLabel.Caption = 'Сумма заказа: ' + ALLTRIM( TRANSFORM( Cost_SQL.cost, '999 999 999.99'))+;
' qupack='+STR( ww_good.qupack)+;
' quantity='+STR( ww_good.quantity)

FLUSH FORCE вставил для убедительности

я перехожу от ячейки к ячейке в гриде и меняю в ней значения ww_good.qupack и ww_good.quantity
при этом SumLabel.Caption работает следующим образом
- если я перехожу на новую строку, все три числа выводятся правильно
- если я перехожу в соседний столбик - сумма, которую вычисляет селект, не изменяется, а оба количества , которые я изменяю в гриде (ww_good.qupack и ww_good.quantity) не изменяются.

вопрос такой. Почему не изменяется сумма, когда я не перехожу на соседнюю запись в гриде?

хочется разобраться в чем дело



Исправлено 3 раз(а). Последнее : Артём, 19.01.23 13:15
Ratings: 0 negative/0 positive
Re: SELECT не считает
Burn

Сообщений: 5640
Откуда: Днепр
Дата регистрации: 02.01.2002
Следствие буфферизации. Добавьте в SELECT конструкцию WITH (BUFFERING = .t.)

SELECT SUM((g_name.pack*ww_good.qupack + ww_good.quantity) * main_SQL.price) AS cost;
FROM main_SQL, ww_good, g_name, goodies WITH (BUFFERING = .t.);



Исправлено 1 раз(а). Последнее : Burn, 19.01.23 13:28
Ratings: 0 negative/1 positive
Re: SELECT не считает
Артём

Сообщений: 116
Дата регистрации: 23.04.2001
Burn
Добавьте в SELECT конструкцию WITH (BUFFERING = .t.)
К сожалению, не помогло.

вот так работает
SKIP 1
SKIP -1
SELECT SUM((g_name.pack*ww_good.qupack + ww_good.quantity) * main_SQL.price) AS cost;
FROM main_SQL, ww_good, g_name, goodies;
WHERE (main_SQL.good_code = ww_good.code).AND.;
(main_SQL.good_code = goodies.code).AND.;
(g_name.code = goodies.g_name);
INTO CURSOR Cost_SQL
но это как то не красиво.
з.ы. проверку на EOF() я добавлю, если другого решения не найдется
Ratings: 0 negative/0 positive
Re: SELECT не считает
Артём

Сообщений: 116
Дата регистрации: 23.04.2001
еще вот так работает
SET MULTILOCKS ON
=CURSORSETPROP("Buffering", 2, "ww_good")
SELECT SUM((g_name.pack*ww_good.qupack + ww_good.quantity) * main_SQL.price) AS cost;
FROM main_SQL ;
INNER JOIN goodies ON main_SQL.good_code = goodies.code;
INNER JOIN g_name ON g_name.code = goodies.g_name;
INNER JOIN ww_good ON main_SQL.good_code = ww_good.code;
INTO CURSOR Cost_SQL
thisform.SumLabel.Caption = 'Сумма заказа: ' + ALLTRIM( TRANSFORM( Cost_SQL.cost, '999 999 999.99'))+;
' qupack='+STR( ww_good.qupack)+;
' quantity='+STR( ww_good.quantity)



Исправлено 1 раз(а). Последнее : Артём, 19.01.23 23:38
Ratings: 0 negative/0 positive
Re: SELECT не считает
Артём

Сообщений: 116
Дата регистрации: 23.04.2001
Burn
Следствие буфферизации. Добавьте в SELECT конструкцию WITH (BUFFERING = .t.)
SELECT SUM((g_name.pack*ww_good.qupack + ww_good.quantity) * main_SQL.price) AS cost;
FROM main_SQL, ww_good, g_name, goodies WITH (BUFFERING = .t.);
Спасибо. Без этой подсказки не нашел бы ответ.
Ratings: 0 negative/0 positive
Re: SELECT не считает
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Burn, это где-то описано, это поле "BUFFERING"? или условное слово (не проверял)

И "WITH"... это в фоксе?



Исправлено 1 раз(а). Последнее : of63, 21.01.23 00:18
Ratings: 0 negative/0 positive
Re: SELECT не считает
akvvohinc
Автор

Сообщений: 4201
Откуда: Москва
Дата регистрации: 11.11.2008
Смотри Help по команде
SELECT - SQL Command
раздел
SELECT - SQL Command - WITH Clause
Ratings: 0 negative/0 positive
Re: SELECT не считает
sphinx

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Олег был ярым противником SQL, а ты ему хэлп даешь.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: SELECT не считает
akvvohinc
Автор

Сообщений: 4201
Откуда: Москва
Дата регистрации: 11.11.2008
sphinx
Олег был ярым противником SQL, а ты ему хэлп даешь.
Так, может, действительно был (когда-то)...
Ratings: 0 negative/0 positive
Re: SELECT не считает
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
akvvohinc
Смотри Help по команде
SELECT - SQL Command
раздел
SELECT - SQL Command - WITH Clause

Нет у меня в русском хелпе этого WITH (этот пердикат знаком)... может, только в англоязе... поищу потом
Ratings: 0 negative/0 positive
Re: SELECT не считает
akvvohinc
Автор

Сообщений: 4201
Откуда: Москва
Дата регистрации: 11.11.2008
of63
Нет у меня в русском хелпе этого WITH (этот пердикат знаком)... может, только в англоязе... поищу потом
Русский Help с опцией WITH команды SELECT SQL есть на этом форуме.
Смотри в главном меню пункт "VFP Help Online".
Ratings: 0 negative/1 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 25 (Гостей: 25)

© 2000-2024 Fox Club 
Яндекс.Метрика