20.04.2005, 10:55 | #1 |
Участник
|
Не корректно отображаюстя данные
Доброго всем времени суток.
У меня следующая проблема: Я создал ди сплей метод на ДС. Метод должен в каждой строке грида добавить поле в котором отображается наименование номенклатуры. Вот код PHP код:
Всем заранее спасибо. |
|
20.04.2005, 11:03 | #2 |
Модератор
|
1) find тащит целиком всю запись - посчитайте кол-во байт в курсоре InventTable и ужаснитесь
2) InventName - очень часть используемый display метод, так что напишите его на ТАБЛИЦЕ: PHP код:
С Уважением, Георгий. |
|
20.04.2005, 11:14 | #3 |
Участник
|
Если дисплэй метод объявляется не на таблице, то в качестве параметра должен передоваться курсор.
PHP код:
|
|
20.04.2005, 11:16 | #4 |
Administrator
|
Эх. Читайте Developer's Guide что ли для начала.
mk:@MSITStore:C:\Program%20Files\Navision\Client\Bin\AxDvgFormsUs.chm::/Designing_forms/FORM_Using_display_and_edit_method_mo.htm Цитата:
The exception to this is when you define display on a form data source method. If you choose to write a display method on a form data source, you must include the data source as parameter, for example
PHP код:
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
20.04.2005, 11:17 | #5 |
Роман Долгополов (RDOL)
|
Ну зачем Вам эти дисплейные методы в случаях, когда можно замечательно и без них
Две таблицы соединить что-ли сложно? Поручите работу серверу БД, получите шустренькую форму, а в качестве бонуса возможность фильтровать по ItemName 1. Закинуть на форму датасорс по InventTable 2. Сделать ему InnerJoin на таблицу в которой есть ItemId 3. Поставить в свойствах датаорса AllowEdit, Create, Delete в No 4. Поставить в свойствах датасора OnlyFetchActive в Yes 5. Перекрыть на датасорсе методы след образом public void delete() { } public boolean validateWrite() { return true; } public void write() { } public boolean validateDelete() { return true; } 6. На write датасорса в котром есть ItemId написать где нито после super() InventTable.data(InventTable::find(Моя_Таблица_C_ItemId.ItemId)); InventTable_DS.setCurrent(); 7. Затащить из датасорса нужные поля в нужные места все |
|
20.04.2005, 11:21 | #6 |
Administrator
|
Цитата:
Изначально опубликовано George Nordic
2) InventName - очень часть используемый display метод, так что напишите его на ТАБЛИЦЕ Цитата:
Изначально опубликовано George Nordic
3) Не забудьде его закэшировать в форме.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
20.04.2005, 11:23 | #7 |
Administrator
|
Цитата:
Изначально опубликовано db
Две таблицы соединить что-ли сложно?
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
20.04.2005, 11:37 | #8 |
Модератор
|
Цитата:
Изначально опубликовано db
1. Закинуть на форму датасорс по InventTable 2. Сделать ему InnerJoin на таблицу в которой есть ItemId ... получите шустренькую форму Как ни странно, многоуважаемый db, в данном случае позволю себе с Вами не согласиться: я не думаю, что джойня иннерджоином InventTable, Вы получите "шустренькую" форму Единственный плюс - сортировка по имени. Да и то, довольно сомнительный... Только если невозможно найти по коду... С Уважением, Георгий |
|
20.04.2005, 11:41 | #9 |
Роман Долгополов (RDOL)
|
А Вы не думайте, Вы попробуйте
|
|
20.04.2005, 11:42 | #10 |
Administrator
|
Цитата:
Изначально опубликовано George Nordic
я не думаю, что джойня иннерджоином InventTable, Вы получите "шустренькую" форму
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
20.04.2005, 11:43 | #11 |
Модератор
|
Цитата:
Изначально опубликовано Maxim Gorbunov
А вот к кэшированию я бы призвал Вас относиться осторожнее. Не кэшируйте методы, если Вы не уверены полностью в том, что Вы делаете. Если Вы все-таки кэшируете метод, предусматривайте возможность для пользователя сбросить кэш не закрывая форму (если это возможно, конечно). Тщательно тестируйте формы с кэшируемыми методами, так как кэширование широко не использовалось, и проблемы, которые могут быть вызваны кэшированием, до конца не изучены Например, кэшируемые методы иногда ведут себя не так, как хотелось бы, в случае, если для DataSource StartPosition = Last. Заронил ты в мою душу сомнения, Максим! Пока глюков не было у нас.. хотя половина форм (большая) - StartPosition = Last. С Уважением, Георгий |
|
20.04.2005, 11:45 | #12 |
Роман Долгополов (RDOL)
|
А насчет поиска, юзерам сами как нибудь вразумительно объясните, почему по этому полю нельзя ничего найти. Если они вас после этого не порвут на части, то будут не правы
|
|
20.04.2005, 11:48 | #13 |
Модератор
|
Цитата:
Изначально опубликовано db
А Вы не думайте, Вы попробуйте При innerJoine SalesTable (форма) умерла. При delayed - все ок. А так - очень долго загружается.... Хотя delayActive тоже вроде выставлял... Шайтан! С Уважением, Георгий. |
|
20.04.2005, 11:51 | #14 |
Administrator
|
Цитата:
Изначально опубликовано George Nordic
Пока глюков не было у нас.. хотя половина форм (большая) - StartPosition = Last Просто посмотри, для каких записей реально происходит кэширование. В целом: оно, конечно, работает, но с ним надо осторожней
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
20.04.2005, 11:52 | #15 |
Модератор
|
Цитата:
Изначально опубликовано db
А насчет поиска, юзерам сами как нибудь вразумительно объясните, почему по этому полю нельзя ничего найти. Если они вас после этого не порвут на части, то будут не правы Жопа та еще. Если нет возможности закодировать номенклатуру, то поиск... Еще один выход (убогий, крайний вариант) - хранить еще и itemName С Уважением, Георгий. |
|
20.04.2005, 11:52 | #16 |
Роман Долгополов (RDOL)
|
Цитата:
Изначально опубликовано George Nordic
Я тут часть полей самопальных, очень больших (адреса доставки/грузополучателя/отправителя, примечания и прочую мишуру, которую только в отчетах нужна) вынес с SalesTable в новую таблицу - SalesTableNotes.. При innerJoine SalesTable (форма) умерла. При delayed - все ок. А так - очень долго загружается.... Хотя delayActive тоже вроде выставлял... Шайтан! С Уважением, Георгий. 4. Поставить в свойствах датасора OnlyFetchActive в Yes в результате имеем не a join b а a join ItemName from b то есть тащатся ттолько данные из полей, привязанных к контролам и никакие больше. В данном случае только ItemName |
|
20.04.2005, 11:53 | #17 |
Administrator
|
Цитата:
Изначально опубликовано George Nordic
При innerJoine SalesTable (форма) умерла. При delayed - все ок. А так - очень долго загружается.... Хотя delayActive тоже вроде выставлял... Шайтан!
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
20.04.2005, 11:59 | #18 |
Модератор
|
Цитата:
Изначально опубликовано db
то есть тащатся ттолько данные из полей, привязанных к контролам и никакие больше. В данном случае только ItemName Только вот они все нужны были, для заполнения С Уважением, Георгий. 2 Maxim Gorbunov: Да, от тюнинга никуда не уйти |
|
20.04.2005, 12:39 | #19 |
Участник
|
Всем спасибо за помощь, но мне мой начальник не разрешил использовать присоединение таблиц => пришлось все display - методом делать.
|
|
20.04.2005, 12:59 | #20 |
Роман Долгополов (RDOL)
|
Цитата:
Изначально опубликовано Red Stranger
Всем спасибо за помощь, но мне мой начальник не разрешил использовать присоединение таблиц => пришлось все display - методом делать. Станешь начальником, научись слушать подчиненных |
|