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

Исходные данные:
1. Очень очень очень ленивый программист самоучка.
2. СУБД Postgre
3. Подобие софта работающего с СУБД пункта 2.
4. Не хочу классов в прямом понимании ))))))))))) как отдельных сущностей - только Query
5. Классы хочу, но лишь как базовые, для предоставления общих свойств и методов и возможно где то реалзизации интерфейсов, для дочерних (зебегая вперед, все вьюшки - фреймы и редакторы формы наследуемые, но это только для моей лени, что свойства и метода по сто раз одни и те же не мутить) -реализовано.
Забегая вперед, я да же MVVM реализовал на c#(wpf) но вот не лежит душа и все тут, порыпался порыпался, добился результатов и все... комп неделю не включал домашний )))) вернулся к Delphi.

И так в чем суть то в обще вопросов, а она в логике архитектуры, вот чего мне всегда реально не хватало, так это подобного опыта с нуля.
Что я решил.
1. DataModule , на него кидаю кучки Query (надоели мне все сложные запросы и всяческие FieldByName в последствии), ну допустим справочников. Это чисто плоские..точнее сами запросы плоские, типа Select поля from таблица.
-За чем? - Другие Query, без сложных запросов (если того не требуют, а просто связь отобразить) выполнят не сложный запрос к другим таблицам, а прилукапятся.
И тут первый вопрос, что быстрее, если таблица уже вскрыта в DataModule и сделается лукап нового Query по полю или запрос c присоединением Join, с точки зрения как нагрузки сети , так и (пусть это глупо прозвучит) отображения результата в виде грида клиенту?

2. Вьюшка (не буду заморачивать, тут вопрос не в этом о ее концепции создания) - Frame, таких фреймов может быть много, как с ними совладать я разберусь... допустим он один, допустим это справочник пользователей, у пользователя есть роль, хочу увидеть эту роль по имени - делаю лукап поле (ко вскрытому ранее в datamodule справочнику)

3. Форма редактор, наследница там чего то, где есть ряд свойств и методов ,которые могу передать от вьюшки. Кинул DataSource на форму редактор (без Query), форма редактор на показ инициируется и копирует в Query (виртуальную, созданную в run-time - поле класса, и ее физической datasource (этой формы) присваиваю DataSet в виде этой Query)
-За чем? - Ленив, хочу сказать POST и все и это работает (надоели мне все сложные запросы и всяческие ParamByName в последствии), но только если есть либо точная копия с полями либо скопировать в рантайм )))
Вопрос. Как скопировать поля из одной Query в другую без гемороя, включая Lookup?
всякие там
...
query2.CopyFields(query1)
...
или
...
with query2.FieldDefs.Count-1
....
работает если лукапов нет

нагородил следующий огород, только не смейтесь, не украшал, пробовал разные варики, какой то заработал, кидаую ))))
Код: 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.
procedure TModelEdt.AssignQuery(AQuerySource: TUniQuery; ADataSourceDest: TUniDataSource);
var i: Integer; fld: TField;
begin
  self.QueryEdit := TUniQuery.Create(nil);
  self.QueryEdit.Connection := AQuerySource.Connection;
  self.QueryEdit.SQL.Text := AQuerySource.SQL.Text;
  self.QueryEdit.AddWhere('id=' + AQuerySource.FieldByName('id').AsString);
  for i := 0 to AQuerySource.Fields.Count - 1 do
  begin
    case AQuerySource.Fields[i].DataType of
      ftString:
        fld := TStringField.Create(Self);
      ftInteger:
        fld := TIntegerField.Create(Self);
    end;
    fld.Size := AQuerySource.Fields[i].Size;
    if AQuerySource.Fields[i].FieldKind = fkLookup then
    begin
      fld.FieldKind := fkLookup;
      fld.LookupResultField := AQuerySource.Fields[i].LookupResultField;
      fld.KeyFields := AQuerySource.Fields[i].KeyFields;
      fld.Lookup := true;
      fld.LookupKeyFields := AQuerySource.Fields[i].LookupKeyFields;
      fld.LookupDataSet := AQuerySource.Fields[i].LookupDataSet;
    end;
    fld.FieldName := AQuerySource.Fields[i].FieldName;
    fld.DisplayLabel := AQuerySource.Fields[i].DisplayLabel;
    fld.name := AQuerySource.Fields[i].name + 'Edt';
    fld.DataSet := self.QueryEdit;
  end;
  self.QueryEdit.FieldDefs.UpDate;
  ADataSourceDest.DataSet:= self.QueryEdit;




Может есть какой простой способ ?
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39829976
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

ну и тут я только TStringField и TIntegerField обработал, так их понятно больше, вот это и ломает )))
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39829982
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

Нихера не понял и глаза сломал. Зато отфарматировал
Код: 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.
procedure TModelEdt.AssignQuery(AQuerySource: TUniQuery; ADataSourceDest: TUniDataSource);
var i: Integer; fld: TField;
begin
  self.QueryEdit := TUniQuery.Create(nil);
  self.QueryEdit.Connection := AQuerySource.Connection;
  self.QueryEdit.SQL.Text := AQuerySource.SQL.Text;
  self.QueryEdit.AddWhere('id=' + AQuerySource.FieldByName('id').AsString);
  for i := 0 to AQuerySource.Fields.Count - 1 do begin
    case AQuerySource.Fields[i].DataType of
      ftString:   fld := TStringField.Create(Self);
      ftInteger: fld := TIntegerField.Create(Self);
    end;
   fld.Size := AQuerySource.Fields[i].Size;
   if AQuerySource.Fields[i].FieldKind = fkLookup then begin
     fld.FieldKind := fkLookup;
     fld.LookupResultField := AQuerySource.Fields[i].LookupResultField;
     fld.KeyFields := AQuerySource.Fields[i].KeyFields;
     fld.Lookup := true;
     fld.LookupKeyFields := AQuerySource.Fields[i].LookupKeyFields;
     fld.LookupDataSet := AQuerySource.Fields[i].LookupDataSet;
    end;
    fld.FieldName := AQuerySource.Fields[i].FieldName;
    fld.DisplayLabel := AQuerySource.Fields[i].DisplayLabel;
    fld.name := AQuerySource.Fields[i].name + 'Edt';
    fld.DataSet := self.QueryEdit;
  end;
  self.QueryEdit.FieldDefs.UpDate;
  ADataSourceDest.DataSet:= self.QueryEdit;


...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39829984
delphinotes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kill_zdm,

1. локальный лукап vs северный - всё зависит от...
можно делать и так, и так
в многопользовательской среде наверное лучше серверный, чтобы не обновлять локальные справочники постоянно

3. по сути нужен клон исходного НД (без данных, либо только для редактируемой записи) - там должен быть метод на подобии Clone
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830043
edruzenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,


kill_zdm что быстрее, если таблица уже вскрыта в DataModule и сделается лукап нового Query по полю или запрос c присоединением Join, с точки зрения как нагрузки сети , так и (пусть это глупо прозвучит) отображения результата в виде грида клиенту?
разумеется join быстрее на порядки.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830186
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
edruzenko,

Вы абсолютно в этом уверены? Извините, что спрашиваю, лично не проверял, мне нужно мнение - кто реально исследовал. Вот смотрите, допустим мне необходимо получить данные из связанных таблиц в кол-ве 10+ , т.е. 10+ Join, тут и запрос громоздкий ну это ладно и к СУБД напряг + нагрузка на сеть, а если уже вскрыты данные из этих таблиц, которые будут лукапиться и они в ОЗУ живут, разве это не быстрее произойдет ?
Я просто рассуждаю, не уверен абсолютно ))
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830188
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gator,

спасибо большое, виноват, исправлюсь
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830191
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphinoteskill_zdm,

1. локальный лукап vs северный - всё зависит от...
можно делать и так, и так
в многопользовательской среде наверное лучше серверный, чтобы не обновлять локальные справочники постоянно

3. по сути нужен клон исходного НД (без данных, либо только для редактируемой записи) - там должен быть метод на подобии Clone

1. Конечно серверный менее геморойный я понимаю, с другой стороны при тех же равных, нагрузка возрастает сильно при многопользовтаельской , когда один и тот же справочник к примеру дергается по 100++++ раз , только что бы отобразить связанное с ним имя к примеру по ключу. Как показала практика, справочники в целом меняются не часто, часть из них в обще единожды с начальным заполнением, тут как мне видится необходимо только грамотную валидацию на существующие проверять - ну и волшебную кнопку - обновить данные добавить )))
3 - должен быть но не нашел ((((
повторюсь , я все облазил, кучу всего перепробовал, все копируется кроме лукап полей ((( сдался и начал писать свой огород, может кто реально сталкивался и знает как тот метод зовется )))
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830240
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

тащить данные с сервера на клиент (хотя бы только справочники) заранее, не разбираясь нужны они там или нет - это какая-то, действительно, специфическая концепция. Верю, что в каких-то сценариях можно сильно выиграть в быстродействии. Но гемора поиметь можно ещё больше. Особенно с валидностью данных. Вам, что жалко трафика в локальной сети?
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830256
Фотография roschinspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIkill_zdm,

тащить данные с сервера на клиент (хотя бы только справочники) заранее, не разбираясь нужны они там или нет - это какая-то, действительно, специфическая концепция. Верю, что в каких-то сценариях можно сильно выиграть в быстродействии. Но гемора поиметь можно ещё больше. Особенно с валидностью данных. Вам, что жалко трафика в локальной сети? Справочники, они на то и справочники, что меняются достаточно редко (например список биологических полов). Поэтому нормальный подход это загрузить их всех в момент загрузки приложения (или при первом обращении) а затем не гонять по сети одни и те же строковые данные и не переусложнять запросы лишними join-ами. Но это конечно требует некоторой дисциплины. Гораздо проще накопипастить кучу однотипных квериков, тем более на тестовой БД данных мало и пользователь один поэтому не имеет значение сколько нам данных перекачивается. А то, что у 100 пользователей приложение едва ворочается, так это проблемы индейце шерифа не волнуют.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830284
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roschinspb,

справочник справочнику рознь. Есть редко изменяемые, есть часто, есть никогда. Надо построить систему, которая отслеживала бы изменения. Мне непонятно зачем это нужно. Есть сотни таблиц, из них справочников 30-50. Для этих таблиц строить отдельную схему работы? В общем, я за универсальность подхода.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830296
Hammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,
Мои 5 копеек
1. Грузить справочники на клиента без разбора = зло
2. Использовать обращение не к таблицам а ко вьюхам (лучше всего индексированным) где есть все джойны какие надо (упаси Боже в этом случае всякие правые, левые всякие другие кроме Inner). Надеюсь что такое индексы и статистика в этом случае рассказывать не стоит?
3. Ты уверен что локап не копируются? Если правильно понял юзаем UniDac? Насколько я помню есть отдельный метод копиравания полей со всякими настройками.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830357
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hammerkill_zdm,
Мои 5 копеек
1. Грузить справочники на клиента без разбора = зло
2. Использовать обращение не к таблицам а ко вьюхам (лучше всего индексированным) где есть все джойны какие надо (упаси Боже в этом случае всякие правые, левые всякие другие кроме Inner). Надеюсь что такое индексы и статистика в этом случае рассказывать не стоит?
3. Ты уверен что локап не копируются? Если правильно понял юзаем UniDac? Насколько я помню есть отдельный метод копиравания полей со всякими настройками.

3. Не копируется.. ну или копируется но это все на уровне оперативы, т.е. без запроса - отслежено в DbMonitor. Да, юнидаки, не смог найти я этот метод (((((((((((

вроде вот оно Query1.CopyFields(TDataSet) --- все коприуется кроме лукапов :(
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830359
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmHammerkill_zdm,
Мои 5 копеек
1. Грузить справочники на клиента без разбора = зло
2. Использовать обращение не к таблицам а ко вьюхам (лучше всего индексированным) где есть все джойны какие надо (упаси Боже в этом случае всякие правые, левые всякие другие кроме Inner). Надеюсь что такое индексы и статистика в этом случае рассказывать не стоит?
3. Ты уверен что локап не копируются? Если правильно понял юзаем UniDac? Насколько я помню есть отдельный метод копиравания полей со всякими настройками.

3. Не копируется.. ну или копируется но это все на уровне оперативы, т.е. без запроса - отслежено в DbMonitor. Да, юнидаки, не смог найти я этот метод (((((((((((

вроде вот оно Query1.CopyFields(TDataSet) --- все коприуется кроме лукапов :(


не очень понял, простите, сам вопрос на счет копирования, я думал Вы про переброску данных. В общем - не копируется, уже по другому отвечу. К примеру Query2 имеет 3 поля физически и один лукап -выполнив метод Query1.CopyFields(Query2) по факту только физические скопирует. Count полей после метода отличается ну и при обращении к лукап полю по имени - облом, нет такого.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830360
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hammerkill_zdm,
Мои 5 копеек
1. Грузить справочники на клиента без разбора = зло
2. Использовать обращение не к таблицам а ко вьюхам (лучше всего индексированным) где есть все джойны какие надо (упаси Боже в этом случае всякие правые, левые всякие другие кроме Inner). Надеюсь что такое индексы и статистика в этом случае рассказывать не стоит?
3. Ты уверен что локап не копируются? Если правильно понял юзаем UniDac? Насколько я помню есть отдельный метод копиравания полей со всякими настройками.

2. Вьюшка ни чем не лучше того же запроса с точки зрения производительности, лишь меньший код в Query
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830361
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmHammerkill_zdm,
Мои 5 копеек
1. Грузить справочники на клиента без разбора = зло
2. Использовать обращение не к таблицам а ко вьюхам (лучше всего индексированным) где есть все джойны какие надо (упаси Боже в этом случае всякие правые, левые всякие другие кроме Inner). Надеюсь что такое индексы и статистика в этом случае рассказывать не стоит?
3. Ты уверен что локап не копируются? Если правильно понял юзаем UniDac? Насколько я помню есть отдельный метод копиравания полей со всякими настройками.

2. Вьюшка ни чем не лучше того же запроса с точки зрения производительности, лишь меньший код в Query
ну разве, что подготовленным PrepareSQL, но это .. ну в общем не под каждый же чих мне вьюху творить.. Заморачивался этим, потом отказался, только ну где ну уж очень сложные запросы и то там чаще выруливать лучше получалось хранимыми функциями выдающими набор
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830370
black-manatee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ох, сколько я повидал всяких формо, query, мосто построителей в своей жизни.

Как правило, начинается это с того, что кучу времени тратится на то, чтобы создать супергибкую и интеллектуальную систему.
Потом на ее основе делается проект.
Потом начинаются делаться всякие заточки и заплатки, поскольку гибкости системы не хватает на какие нибудь особые случаи и нюансы.
Потом подтягиваются другие разработчики.
...
...
В конечном итоге, проект как бы есть, система вроде тоже. Но все доработки делаются без ее использования, а по старинке, поскольку оказывается, что так быстрее и надежнее.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39830605
Фотография roschinspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
black-manatee...
В конечном итоге, проект как бы есть, система вроде тоже. Но все доработки делаются без ее использования, а по старинке, поскольку оказывается, что так быстрее и надежнее. Именно так. Потом когда разбираешься в старом коде, понимаешь, что единственная функция самопального мегафрейворка это тормозить и глючить. Есть и другая крайность, все лепят как считают нужным, не признавая вообще ни каких правил и соглашений, ради очередной "круглой" кнопки затягивается какая-нибудь библиотека компонентов колхозного кружка любителей информатики...
справочник справочнику рознь
Грузить справочники на клиента без разбора = зло
Да. Делать что либо без разбору вообще зло. И любой универсальный подход будет проигрывать по скорости специально оптимизированному. С другой стороны оптимизация под каждый случай сильно увеличивает трудоемкость и сложность разработки. Тут важно найти золотую середину, а не серебряную пулю.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39831423
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

Вопрос в том, что ты таким образом собрался писать? Если домашний наколенный софт, в который ничей нос не пустишь, то ОК. Нормальный подход. А если это будет живой проект, в котором хотелки будут время от времени меняться, то подход с кучей Query потребует кучи тестов, потому что не будет простого способа узнать в коде, где какая таблица используется и в каком еще Query надо поменять SQL при изменении структуры данных. И если при таком подходе проект разрастётся - любое подобное изменение будет стоить седых волос :-)
Я за ORM.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39831870
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimonkaА если это будет живой проект, в котором хотелки будут время от времени меняться, то подход с кучей Query потребует кучи тестов, потому что не будет простого способа узнать в коде, где какая таблица используется и в каком еще Query надо поменять SQL при изменении структуры данных.
По-моему, ты кардинально переоценил подход автора. В запросе SELECT * FROM TABLE при изменении структуры менять ничего не требуется :) А относительно адекватных проектов - я бы назвал озвученную аргументацию странной и нелепой. Но, думаю, топик не стоит того, чтобы обсуждать это здесь.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837350
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
edruzenkokill_zdm,


kill_zdm что быстрее, если таблица уже вскрыта в DataModule и сделается лукап нового Query по полю или запрос c присоединением Join, с точки зрения как нагрузки сети , так и (пусть это глупо прозвучит) отображения результата в виде грида клиенту?
разумеется join быстрее на порядки.

Дошли руки , проверил.
Схема, повторюсь следующая.
1. В DataModule, Query подгружают необходимые мне справочники для лукапа (плоские запросы к таблицам, которые будут использоваться исключительно для лукапа. При старте системы - живут в оперативе)
2. На вьюшках - фреймы , уже свои Query, которые запрашивают так же плоские данные от сущности, лукапя необходимые для визуальной составляющей поля из смежных таблиц , получая данные из тех самых Query из DataModule уже загруженных.

Результаты:
Заполнил тестовую таблицу 10к записями с ключевкой к трем таблицам
Выполнил Join к трем таблицам наблюдая в DbMonitor UniDac
-0,46 до 0,52
То же самое с лукапами
0,15 до 0,16
Скорость и дельта значительно ниже
Далее понизил на маршрутизаторе себе скорость до 512 кб/с для эксперимента и наглядности (база данных на хосте)
Join вырос катастрофически, а дельта еще более катастрофично, разброс составлять стал порой до минуты.
С лукапами, результат стал еще более впечатлительным - уже не разы , а десятки раз быстрее
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837353
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
максимальные проблемы, ну пока, которые получить могу этого вижу следующее. Допустим Иванова, сменила фамилию на Петрова, ну да.. .я буду видеть (если не говорить о синхронизации и т.д.) пока Иванова в прилукапленом поле. Но это ни как не влияет на целостность данных и лишь не совсем верное отображение текущего состояния. Если удалят ту самую Иванову, то я не увижу и тех записей, где она участвовала, по сколько редактирование сущности с привязаны полем перезапрашивается и если произошло удаление, то и записи связной не увижу.

Может, что пока и упускаю, выслушаю с удовольтсвием.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837359
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я благодарен всем комментаторам, но пока ни кто не убедил.
Дал коллеге попробовать, так сказать для наглядности.. К слову все фреймы вьюшки наследуются от обобщающей, где вся эта движуха происходит, сокращение трудоемкости да же он оценил, впервые увидев и сначала ни чего не понимая.. просто сказал ему - отнаследуйся от класса и реализуй интерфейс .. все.. 90% работы ушло . Всякие кошмарные FieldByName на каждый чих ушли в прошлое.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837391
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmмаксимальные проблемы, ну пока, которые получить могу этого вижу следующее. Допустим Иванова, сменила фамилию на Петрова, ну да.. .я буду видеть (если не говорить о синхронизации и т.д.) пока Иванова в прилукапленом поле. Но это ни как не влияет на целостность данных и лишь не совсем верное отображение текущего состояния. Если удалят ту самую Иванову, то я не увижу и тех записей, где она участвовала, по сколько редактирование сущности с привязаны полем перезапрашивается и если произошло удаление, то и записи связной не увижу.

Может, что пока и упускаю, выслушаю с удовольтсвием.

Ты многое упрощаешь.

Идентифицировать надо именно сущность, а не её аттрибуты.
Допустим, Иванова/Петрова в 5-й раз вышла замуж за Сидорова, развелась и взяла девичью фамилию Попандопуло, а потом и пол сменила.

Привязаться к паспорту? Он меняется много раз. К свидетельству ПФР? Кто даст гарантии его постоянства?
Веди свой ключ. А остальные бумажки/пластик считай привязанными аттрибутами. Тут тебе будет и история и актуальная информация на заданный период.
...
Рейтинг: 0 / 0
Как скопировать поля из одного Query в другой ?
    #39837428
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gatorkill_zdmмаксимальные проблемы, ну пока, которые получить могу этого вижу следующее. Допустим Иванова, сменила фамилию на Петрова, ну да.. .я буду видеть (если не говорить о синхронизации и т.д.) пока Иванова в прилукапленом поле. Но это ни как не влияет на целостность данных и лишь не совсем верное отображение текущего состояния. Если удалят ту самую Иванову, то я не увижу и тех записей, где она участвовала, по сколько редактирование сущности с привязаны полем перезапрашивается и если произошло удаление, то и записи связной не увижу.

Может, что пока и упускаю, выслушаю с удовольтсвием.

Ты многое упрощаешь.

Идентифицировать надо именно сущность, а не её аттрибуты.
Допустим, Иванова/Петрова в 5-й раз вышла замуж за Сидорова, развелась и взяла девичью фамилию Попандопуло, а потом и пол сменила.

Привязаться к паспорту? Он меняется много раз. К свидетельству ПФР? Кто даст гарантии его постоянства?
Веди свой ключ. А остальные бумажки/пластик считай привязанными аттрибутами. Тут тебе будет и история и актуальная информация на заданный период.

привязка идет по ID юзера!!!
Живет ее Фамилия исключительно в рамках запуска программы, если она 10 раз сменит да же фамилию в течении ОДНОГО дня, это не критично, я лишь буду видеть ее старую фамилию, пока не перезапущу прогу, которая в свою очередь при запуске не перезапросит данные.
к примеру
Users
id=125
Name= Иванова
Pasport_Serias = 4202
.....


Интерисующая_меня_таблица
Интерисующее_меня_поле = 'что -то'
User_id =125

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


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