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