10.11.2004, 17:05 | #1 |
Гость
|
использование create() ds
привет
вопрос такой есть: 1. в run() формы вызываю _ds.create() (после super(), перед ним - еще хуже) 2. _ds.create(), в свою очередь, вызывает initValue() таблицы _ds-а. 3. в initValue() таблицы _ds-а (перед super()) я инициализирую одно поле. Делал так неоднократно, работало. 4. по выходу из _ds.create() (см п 1.) поле теряет инициализацию == пустое!!!! Хочу сохранить инициализацию. что я делаю не так? Предыстория ttsbegin - insert - ttsrollback не хочу исп, так как : 1. траффик 2. транзакция 3. тупое напряжение сервака бд и аос (а ведь create - это чистый клиент) 4. в станд функционале исп таки create() так что хочу добить create() форма отрывается, в ней - 1 строка (огромная) форма эта (таблица) подвязывается к SalesLine 1:1. Подязанных строк очень немного, но колонок в них оч много, поэтому и вынесено в отдельную табл. Поэтому и не нужно создавать заранее строки или оставлять ненужные. При открытии формы идет подфильтрация и проверка - есть привязка уже или нужно создавать новую строку. После редакции польз может от своих слов ) отказаться. Тогда новой строки остаться не должно. Как , впрочем, и изменений в старой (неуаляемой и несозданной только что) строке. |
|
11.11.2004, 07:29 | #2 |
сибиряк
|
Re: использование create() ds
Цитата:
Изначально опубликовано sassas
привет вопрос такой есть: ..... 3. в initValue() таблицы _ds-а (перед super()) я инициализирую одно поле. Делал так неоднократно, работало. 4. по выходу из _ds.create() (см п 1.) поле теряет инициализацию == пустое!!!! поставьте инициализацию после вызова super()/
__________________
С уважением, Вячеслав. |
|
11.11.2004, 10:05 | #3 |
Участник
|
При отрисовке формы автоматически срабатывают все связи дс.
Поэтому возникают проблемы при добавлении новых строк в дс с иннер джойном. Выход один. Убрать автоматическую связку по свойствам дс на форме и линковать эти дс программно (в методе актив и ехекутеКвери) Нужно будет перекрыть метод врайт на СалесЛайне, и проверять РекИд на ноль. Если ноль - то делать запись и вашей таблицы. Нужно еще учесть, что при переходе с полей одного дс на поля другого происходит АВТОМАТИЧЕСКАЯ запись. Там вроде есть какое-то свойство за это отвечающее, или контролировать это программно в том же методе врайт. |
|
11.11.2004, 13:08 | #4 |
Гость
|
2 slava
"переинициализируется". Только если до super(). Работает на др табл. Работает и на этой таблице. Вижу в отладчике , что иниц-ся в create(), вызывающем initvalue() таблицы автоматически. По выходу из create() поле == "". 2 ta_and связей нет. На форме , в которой отраб create() 1 датасорс. Без грида и возможности перейти на др строку. 1 строка всегда. В релайшнах таблиц нет связей тоже. связь делается программно через args(). Проверка по рекайди ведется, запись создается именно по ее рез . Не хочется записывать запись в базу. Вот в чем вопрос. Хочу использовать create(), а не insert(). Вот , правда есть тип , один и тот же исп на колонках SalesLine И моей табл... Попробую поменять EDT у SalesLine... Попробовал Да, на EDT был релайшн. Именно он отвечал за фильтрацию. После его снятия и программной реализации фильтра (через QBR & init() ds) стало не лучше - initValue() отрабатывает, а после выхоода из create() все благополучно затирается... Да, нужно копаться... Скажу сразу, что обход я нашел. Но хочется взаимности и описанного в мануалах функционирвания добиться от create() + initValue(). Если такое возможно. |
|
11.11.2004, 14:13 | #5 |
Участник
|
А как устанавливается связь через аргс?
не через поле из аргс.рекорд в ранж? если так - то это почти тот же автолинк. Тут видимо нужно какой-то ключ через строковый параметр передавать.... Нужно еще клеарить диналинки на всякий случай... |
|
11.11.2004, 15:22 | #6 |
Гость
|
спос
|
|