|
![]() |
#1 |
Banned
|
Цитата:
Сообщение от AfterEarth
![]() Здравствуйте!
Искал поиском и в помощи, но ничего, кроме EvalBuf не нашёл, а он не работает с переменными. Есть задача - сделать запрос с динамическими данными -выбирать значения из переменных для insert в зависимости от описания и имён полей, а также переменных по имени из таблицы. Это выгрузки в различные форматы, чтобы не писать на каждую выгрузку свою функцию. Что-то типа: "insert 'insert into tablename (FIELD1, FIELD2,etc..... VALUES (%1,%2,etc....), EvalBuf('var1'),EvalBuf('var2'),etc.... Строковые значения для формирования строки запроса 'FIELD1', 'FIELD2', 'var1', "var2" берутся из таблицы, а сами переменные var1,var2 объявляются в классе Заранее спасибо за ответ! Отблагодарю за реальную помощь! ![]() ![]() |
|
![]() |
#2 |
Участник
|
|
|
![]() |
#3 |
Banned
|
Цитата:
Сообщение от AfterEarth
![]() Есть задача - сделать запрос с динамическими данными -выбирать значения из переменных для insert в зависимости от описания и имён полей, а также переменных по имени из таблицы.
Это выгрузки в различные форматы, чтобы не писать на каждую выгрузку свою функцию. ... Уже "наколбашено" штук 15 и ещё 15 нужно, а потом будут ещё. Смысле копипаст делать? Не по программистки это :-/ Если вы же профессионал, то за такое программирование надо бить, а потом еще раз бить. Это программизм небитого энтузиаста, а не программирование. Если есть общее - выделите в родительский класс, если нет сделайте как набор статических методов. Пусть их будет 50 методов или 50 классов - вам всем скажут только спасибо, а не будут проклинать. |
|
|
За это сообщение автора поблагодарили: ta_and (4). |
![]() |
#4 |
Участник
|
Абсолютно согласен.
Извращаться для себя чисто в образовательном плане можно сколько угодно. Но если это делать в рабочем приложении... то это жесть. Попробуйте сделать нормальную постановку задачи и тогда будет видно грамотное архитектурное решение без всяких чесаний инсертов через ранбуф. Последний раз редактировалось ta_and; 13.07.2017 в 19:24. |
|
|
За это сообщение автора поблагодарили: ax_mct (5). |
![]() |
#5 |
Участник
|
Цитата:
Сообщение от ta_and
![]() Абсолютно согласен.
Извращаться для себя чисто в образовательном плане можно сколько угодно. Но если это делать в рабочем приложении... то это жесть. Попробуйте сделать нормальную постановку задачи и тогда будет видно грамотное архитектурное решение без всяких чесаний инсертов через ранбуф.
Нужно сопоставить в какое поле какой выгрузки выгружать данную переменную. Пример: Имена полей CODE, KOD, PR_CODE, Код товара должны заполняться из переменной productCode Имена полей 'CODEKONT, K_CODE, Код контрагента должны заполняться из переменной clientCode в зависимости от типа и формата выгрузки. Нужна процедура, генерирующая запрос на вставку в файл с подстановкой полей и переменных класса, без описания через map, например, всех полей и переменных, как мне писали выше. Пока придумал занести в таблицу кроме имён полей, типов и формата выгрузки ещё их физ смысл - код контрагента, код товара, производитель, etc. , а эти сущности описать в классе через map и подставлять из него. |
|
![]() |
#6 |
Участник
|
Цитата:
На примере таблицы DBF имеем следующую задачу: 1. Есть таблица, структура которой в каждой конкретной выгрузке своя 2. Значения для заполнения полей в каждой конкретной выгрузке вычисляются по своему Т.е. в каждой конкретной выгрузке Вы формируете уникальную (отличную от других выгрузок) команду INSERT-SQL. Вы же хотите (точнее, к этому придете. Пока Вы это явно не сформулировали) вместо явного написания этой самой команды Insert-SQL сделать следующее 1. Организовать некие правила сопоставления полей и выражений для их вычисления (комплекс настроечных таблиц) 2. На основании этих правил "автоматически" конструировать команду Insert-SQL Теоретически, это возможно. В Ax3.0 посмотрите функционал "Российской Финансовой Отчетности". Там выгрузка в Excel по именованным ячейкам, но, по сути, это мало чем отличается от того, что Вы хотите. Ну, и попробуйте настроить парочку отчетов в этом функционале. Причем вручную ![]() Просто не стоит "овчинка выделки". Трудозатраты на создание и поддержание данного комплекса будут очень большие, а смысла особого нет ![]()
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
![]() |
#7 |
Участник
|
![]() Цитата:
Для себя разрабатывали нечто подобное, выгружает в txt и xls. Другие форматы никого не интересовали. Базовый функционал был написан за 1 неделю, потом уже шло допиливание хотелок. Здесь же не нужны сложные формы, структура всегда в виде таблицы. В экселе настраивать ничего не надо. Данные берутся из запроса, который настраивается визуально (пришлось допилить стандартный построитель, чтобы можно было указывать тип связи между таблицами). Выбрали таблицы, указали связи, условия выборки, указали какие поля выводить и в какой последовательности. ВСЁ! Простейшая выгрузка настраивается за 5 минут. Если запрос не устраивает можно выгрузить данные из класса возвращающего контейнер. |
|
![]() |
#8 |
Участник
|
Цитата:
Сообщение от ax_mct
![]() Если вы сидите на клиенте как постоянный программист и просто от скуки извращаетесь, то конечно можно все.
Если вы же профессионал, то за такое программирование надо бить, а потом еще раз бить. Это программизм небитого энтузиаста, а не программирование. Если есть общее - выделите в родительский класс, если нет сделайте как набор статических методов. Пусть их будет 50 методов или 50 классов - вам всем скажут только спасибо, а не будут проклинать. |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|