![]() |
#1 |
Участник
|
Фильтр join'а в другую форму
Доброго времени суток!
Необходимо передать в другую форму DataSource первой с наложенными пользователем фильтрами. Для этого передаю Query. Нюанс тот, что таблица - outer join 2-х таблиц, а во второй форме мне необходимо заполнять значения второй таблицы, в которой может не быть записей. Не смотря на то, что использую ttsbegin, ttscommit и query.dataSourceNo(2).update(true) () выдается сообщение о том, что запись не выбрана для обновления. Что можно сделать?
__________________
Являться частью базы знаний, дабы не изобретать велосипед Делать больше, чем говорить |
|
![]() |
#2 |
Участник
|
up!
__________________
Являться частью базы знаний, дабы не изобретать велосипед Делать больше, чем говорить |
|
![]() |
#3 |
Участник
|
Я так думаю народ в шоке от таких "архитектурных решений" поэтому и молчит
![]() Если есть какая-то возможность, просто сделайте попроще интерфейс. |
|
![]() |
#4 |
Участник
|
Согласен.
![]() Тогда расскажу о том, чего хочется достичь – возможно, есть более простое решение. На 1-й форме – таблица, которую пользователь может фильтровать при помощи стандартных средств. Вторая форма выполняет т.н. «групповое обновление» таблицы в первой, т.е. при её вызове пользователь при помощи checkbox и textbox может определить, какие поля и какие значения первой таблицы заполнить, и по нажатию OK все записи в соотв. полях таблицы должны заполниться одинаковыми значениями. Так выглядит 2-ая форма:
__________________
Являться частью базы знаний, дабы не изобретать велосипед Делать больше, чем говорить |
|
![]() |
#5 |
Модератор
|
Не с ценами ли балуетесь?
![]() так и так Вам по Query перебирать все записи. Следите, неапротив которые установлены checkboxы и заполняйте только их! |
|
![]() |
#6 |
Участник
|
Иллюстрацию присоединять не хочет; попробую файл...
__________________
Являться частью базы знаний, дабы не изобретать велосипед Делать больше, чем говорить |
|
![]() |
#7 |
Участник
|
Цитата:
Не с ценами ли балуетесь?
так и так Вам по Query перебирать все записи. Следите, неапротив которые установлены checkboxы и заполняйте только их! ![]() Query как раз и используется для того, чтобы не перебирать все записи.
__________________
Являться частью базы знаний, дабы не изобретать велосипед Делать больше, чем говорить |
|
![]() |
#8 |
Участник
|
Может я чего-то не так понял, но во второй форме вообще данные из первой не нужны, вторая форма это что-то вроде диалога (и, кстати, можно ее было и сделать в виде RunBaseDialog)
Но если уж хочется использовать нарисованную форму, я бы все сделал через класс. Т.е. есть класс "обновления себестоимости". У него есть свой query (queryRun) который мы получаем из 1-й формы. В форме-2 на closed мы вешаем методы, передающие значения контролов классовым внутренним переменным. А потом запускаем метод класса, который, используя query из первой формы и параметры из 2-й, проводит необходимую нам групповую операцию. |
|
![]() |
#9 |
Участник
|
Цитата:
Может я чего-то не так понял, но во второй форме вообще данные из первой не нужны, вторая форма это что-то вроде диалога (и, кстати, можно ее было и сделать в виде RunBaseDialog)
Но если уж хочется использовать нарисованную форму, я бы все сделал через класс. Т.е. есть класс "обновления себестоимости". У него есть свой query (queryRun) который мы получаем из 1-й формы. В форме-2 на closed мы вешаем методы, передающие значения контролов классовым внутренним переменным. А потом запускаем метод класса, который, используя query из первой формы и параметры из 2-й, проводит необходимую нам групповую операцию.
__________________
Являться частью базы знаний, дабы не изобретать велосипед Делать больше, чем говорить |
|
![]() |
#10 |
Участник
|
На вскидку, проверяй неравенство 0 recid строки второй таблицы перед обновлением, а в противном случае делай insert, если это требуется.
|
|
![]() |
#11 |
Участник
|
Цитата:
На вскидку, проверяй неравенство 0 recid строки второй таблицы перед обновлением, а в противном случае делай insert, если это требуется.
__________________
Являться частью базы знаний, дабы не изобретать велосипед Делать больше, чем говорить |
|
![]() |
#12 |
Участник
|
Код (неработающий) выглядит так:
PHP код:
__________________
Являться частью базы знаний, дабы не изобретать велосипед Делать больше, чем говорить |
|
![]() |
#13 |
Участник
|
Выскажу пару соображений. Извини, нет возможности сейчас проверить.
1) Первые две строчки после ttsbegin поменять местами. Ты создаешь queryRun по query, а затем модифицируешь query. Я сильно сомневаюсь, что эта модификация скажется на QueryRun. 2) Можно попробовать вызвать standardCostTable.selectForUpdate(true); 3) Возможно стоит перенисти ttsbegin чуть ниже, сразу перед циклом (хотя вроде это и не принципиально) 4) Попробуй закоментировать insert - будет вылезать ошибка? |
|
![]() |
#14 |
Участник
|
Ничего не помогает. У кого-нибудь есть свежие мысли?
__________________
Являться частью базы знаний, дабы не изобретать велосипед Делать больше, чем говорить |
|
![]() |
#15 |
Участник
|
Класс QueryBuildDataSource метод update( boolean _value ).
|
|
![]() |
#16 |
Moderator
|
Может, попробовать
PHP код:
__________________
Андрей. |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|