powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как скопировать поля из одного Query в другой ?
25 сообщений из 80, страница 2 из 4
Как скопировать поля из одного Query в другой ?
    #39837432
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что мне это дает

1. Фрейм вьюшка
я лишь добавляю связки, к примеру справочник стран

TframeCountry = class(TModel, IModel)

реализую интерфейс в ней
//передам модели форму редактор, которая в свою очередь назначит все движения фрему ToPPanel где кнопки, удалить, редактировать //и т.д.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
function TframeCountry.GetFormEdit: TFormClass;
begin
  Result := TfrmCountryEdt;
end;
//тут либо просто отображение либо могу что то иное замутить по ситуации
procedure TframeCountry.initEntity;
begin
  ShowSelf; 
end;



2. Модель

тут куча всего, в основном инициализируется форма вызванная , например, из меню как
Код: pascal
1.
2.
3.
4.
procedure TfrmMain.mnCountryClick(Sender: TObject);
begin
   Model.createForm(TfrmCountry, True);
end;



это схавает модель, которая проверит все фреймы на форме, относящиеся к TModel и вскроет их данные, а так же перехватит фомру редактор и назначит действие
3. пока кривенько но что то типа - на присланной форме ищется модель и инициализируется в пункте 4
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with AForm do
  begin
    for i := 0 to ComponentCount - 1 do
    begin
      if (Components[i] is TModel) then
      begin
        f := (Components[i] as TModel);
        t := (f.FindComponent('FrameTopPanel1') as TFrameTopPanel);
        f.init(Self, AFormStyle, '', false, t);
      end;
    end;


4. ищю вьюшку (ну у меня девэкспресс , но можно и на любом гриде отловить его источник)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
 for i := 0 to ComponentCount - 1 do
      begin
//или вьюшка       
 if (Components[i] is TcxGridDBTableView) then
        begin
          View := (Components[i] as TcxGridDBTableView);
          break;
        end
//или дерево
        else if (Components[i] is TcxDBTreeList) then
        begin
          ViewTree := (Components[i] as TcxDBTreeList);
          break;
        end;
      end;
.....
//отловил назначил 
if View <> nil then
      begin
        Query := (View.DataController.DataSource.DataSet as TUniQuery);
        DataSource := (View.DataController.DataSource as TUniDataSource);
      end
      else
      begin
        ViewTree.DataController.DataSource := DataSource;
      end;
//панель действий ()
 ATopPanel.btnDel.OnClick := DeleteRecord;
    ATopPanel.btnRefresh.OnClick := RefreshRecord;
    ATopPanel.btnEdit.OnClick := EditRecord;
    ATopPanel.btnAdd.OnClick := AddRecord;
    // ATopPanel.btnSel.OnClick := OnSelectClick;
    if View <> nil then
    begin
      if AFromForm = true then
        View.OnDblClick := OnSelectClick
      else
        View.OnDblClick := OnDblClick;
    end



дофига кода там уже может чо и упустил.. ну в общем общая идея
Создал фрейм, сказал ему что он наследник и при вызове он проинициализируется, сколько бы на форме таких фреймов не было, а они в свою очередь лукапятся все к тому самому датамодулю. Для разраба в конечном итоге - только соблюсти последовательность..точнее да же - просто правило - относледоваться от модели и интерфейса, то же самое с формой редактором.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837434
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm2. Вьюшка ни чем не лучше того же запроса с точки зрения производительности, лишь меньший код в QueryОшибаешься.
Это уже однажды скомпилированный запрос, со статистикой, готовым планом исполнения, хинтами и индексами и прочими внусностями.
А в кверике - просто запрос среди других запросов, как правило, новьё для СУБД
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837436
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

никаких проверок пока нет, просто пробую, по этому на возможные исключения пока - пофиг, да и собственно, этот механизм не заставляет весь код так работать, это сработает только в случае особого вызова создания формы , можно оставляя текущее - писать и иначе , классически.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837440
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gatorkill_zdm2. Вьюшка ни чем не лучше того же запроса с точки зрения производительности, лишь меньший код в QueryОшибаешься.
Это уже однажды скомпилированный запрос, со статистикой, готовым планом исполнения, хинтами и индексами и прочими внусностями.
А в кверике - просто запрос среди других запросов, как правило, новьё для СУБД
Да, согласен, погорячился.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837442
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmGatorпропущено...
Ошибаешься.
Это уже однажды скомпилированный запрос, со статистикой, готовым планом исполнения, хинтами и индексами и прочими внусностями.
А в кверике - просто запрос среди других запросов, как правило, новьё для СУБД
Да, согласен, погорячился.

Но и плодить вьюшки то же желание особо нет. На мой взгляд они хороши для различных отчетов и т.д., это все то же остается в силе, как и различные триггеры и ХП, я просто заморчоился именно отображением и минимизацией нагрузки ну и плюс мне очень понравилось как лукапы можно юзать в форме радакторе ограничаваясь не сложными INSERT а одним лишь POST
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837446
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

А не надо плодить. Они хороши для редко меняемых справочников и т.п.
Никто не требует иметь справочник ВСЕХ фамилий/имен в базе.
Это лишь частичные аттрибуты.
Вот что есть у неизменное у сущности Человек?
Есть лишь дата рождения, место рождения, мама/папа (тоже Человеки мб неизвестные ) всё остальное - от лукавого.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837448
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorВот что есть у неизменное у сущности Человек?
Генокод.

GatorЕсть лишь дата рождения, место рождения, мама/папа (тоже Человеки мб неизвестные )
Всё это вполне может измениться.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837449
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorВот что есть у неизменное у сущности Человек?
Есть лишь дата рождения, место рождения, мама/папа (тоже Человеки мб неизвестные ) всё остальное - от лукавого.Неизменное разве что имя. Остальное может быть неизвестно и не навсегда. Да и имя может поменяться, н-р было неправильно записано на слух. Особенно иностранное.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837453
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerВсё это вполне может измениться.Типа машина времени и кибер производство? :)
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837455
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorТипа машина времени и кибер производство? :)
Типа эти данные берутся из документов со всеми вытекающими.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837473
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

Я о том, что документы, имена могут меняться в отличие от генокода.
Но что такое генокод и как из него ключ сделать?
Вот я и говорю, что нужен свой уникальный ID, который и вести всё время существования сущности
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837479
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmedruzenko,

Вы абсолютно в этом уверены? Извините, что спрашиваю, лично не проверял, мне нужно мнение - кто реально исследовал. Вот смотрите, допустим мне необходимо получить данные из связанных таблиц в кол-ве 10+ , т.е. 10+ Join, тут и запрос громоздкий ну это ладно и к СУБД напряг + нагрузка на сеть, а если уже вскрыты данные из этих таблиц, которые будут лукапиться и они в ОЗУ живут, разве это не быстрее произойдет ?
Я просто рассуждаю, не уверен абсолютно ))

ну как вариант можно держать локальную базу, в которой справочники будут реплицированы целиком, а рабочие таблицы - в части интересной с точки зрения текущего процесса. Так и джойнить можно. И сеть лишними данными теоретически не напряжется. И серверу дышать полегче.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837489
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Baskakovну как вариант можно держать локальную базу, в которой справочники будут реплицированы целиком, а рабочие таблицы - в части интересной с точки зрения текущего процесса. Так и джойнить можно. И сеть лишними данными теоретически не напряжется. И серверу дышать полегче.
Например я так и делаю.
Всякие справочники, НСИ, актуальные формы/бланки храню в отдельной базе.
Серверу легче не становится, но базу сопровождать легче. И ясна ответственность за целостность -
в центре или в локациях собаки порылись
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837502
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gator, мне показалось что центральная идея первого поста - отказаться от SQL как средства соединения данных рабочих и справочных, а соединять на клиенте, причем за счет пробегания по выгруженным предварительно из базы наборам данных. С тем чтобы минимизировать нагрузку на сеть и сервер. Это может быть эффективно и безопасно, или не очень, в зависимости от конкретной ситуации, от регламента бизнес процессов, объема и количества справочников, их волатильности, критичности работы по немного устаревшим версиям.

Мне кажется, что отказываться от SQL не стоит, а если очень хочется убрать нагрузку на сеть и сервер, можно делать это за счет неполной репликации.

Но может я и недостаточно вник в идею автора, и в чем ее новизна.
И к чему там фреймы и интерфейсы? может и не понял. тогда сорри.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837527
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorВот я и говорю, что нужен свой уникальный ID
Согласен. Я ещё не встречал хорошего естественного ключа.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837568
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerGatorВот я и говорю, что нужен свой уникальный ID
Согласен. Я ещё не встречал хорошего естественного ключа.Встречаются, но они всё равно по своей сути примерно соответствуют искусственным
и время от времени возникает (нездоровое) желание их "потрогать" (в т.ч. изменить).
Так что проще не париться и на этапе проектирования втыкать везде искусственные,
с годами это начинаешь делать уже автоматом, увы.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837575
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЯ ещё не встречал хорошего естественного ключав основном по жизни чаще юзал суррогаты а вот для лоры не стал, задействовал как есть appeui/deveui
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837576
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамс годами это начинаешь делать уже автоматомда уж, прям некоторое насилие над собой пришлось применить
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837596
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простите меня тёмного, но что (кто?) такое лора? Палмер?
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837598
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837602
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамПростите меня тёмного, но что (кто?) такое лора? Палмер?
Разве ты не знаешь, что vavan - сотрудник компании Semtech, которая разработала для IBM Research технологию Энергоэффективных Сетей Дальнего Радиуса Действия — LPWAN (Low-Power Wide-Area Network)???
...
Часто лорой называют или одну из трех вещей, или все сразу:

1. Низкий уровень: LoRa - технология и метод модуляции. Т.е. физический уровень.
2. Повыше: LoRaWAN - протокол для сетей /с особыми характеристиками - емкость (до 1М устройств в одной сети), радиус действия ( до 10-15км на открытой местности), низкое энергопотребление/.
3. Совсем высоко LPWAN (см. выше).
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837604
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помните - Вернон Виндж все время мусолит тему локальных сетей, построенных на основе массы автономных модулей, со слабыми сигналами? Вот тут то же самое, только лучше, но не модули пока летать не умеют.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837625
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамс> Так что проще не париться и на этапе проектирования втыкать везде искусственные,
с годами это начинаешь делать уже автоматом, увы.
Вот и я о том же. Всё в мире изменчиво и связи приходится строить через линковочные таблицы
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837634
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerGatorВот я и говорю, что нужен свой уникальный ID
Согласен. Я ещё не встречал хорошего естественного ключа.

ИНН
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837637
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGunssoftwarerпропущено...

Согласен. Я ещё не встречал хорошего естественного ключа.

ИНН
Во-первых, ИНН никаких не было до 94го. И у многих ФЛ его нет до сих пор. Например, я ИНН получил по слезной просьбе бухгалтера всего года два назад.

Во-вторых, ИНН могут и отменить, давно собираются - вместо СНИЛС, ИНН, № паспорта и т.п.

В третьих, какой смысл выдумывать, когда суррогатный ключ решает все проблемы, причем - единообразно?


Уже давным-давно обсудили, в разных местах: http://www.ibase.ru/natural-keys-versus-atrificial-keys-by-tentser/

"Естественные" колючи имеют единственное оправдание - человек почему-то не хочет разобраться с SQL. Ну или, как тут 21926604 - явную лажу делает, "лукапы"...
...
Рейтинг: 0 / 0
25 сообщений из 80, страница 2 из 4
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как скопировать поля из одного Query в другой ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]