|
|
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
Добрый день. Разрабатываю очередное приложение и вновь наткнулся на старую проблему (раньше менял подход), но сейчас решил разобраться в сути, ведь решение должно быть Есть у меня AdoQuery из двух таблиц (очень простой) Код: sql 1. 2. 3. 4. в процессе работы я его редактирую, но затем сохранять надо только в одну таблицу (Addresses), если ничего не настраивать, то при добавлении 1 записи по одной записи добавится в обе таблицы, прочитав документацию применил у датасета свойство Unique Table, Код: pascal 1. 2. 3. но ничего не изменилось, наверное что-то не доделал. Может кто сталкивался. Заранее спасибо Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2018, 12:08 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
patrick1968Может кто сталкивался. msdnWhile Unique Table is set, the Delete method affects only the named table. The AddNew, Resync, Update, and UpdateBatch methods affect any appropriate underlying base tables of the Recordset. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2018, 12:12 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
Вот смысл этого предложения не совсем понятен, что значит именованные таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2018, 12:21 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
patrick1968что значит именованные таблицы? Названная (указанная) таблица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2018, 12:26 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
казалось бы при чём тут Дельфи, если речь про Microsoft SQL и Microsoft-же ADO http://www.sql.ru/forum/microsoft-sql-server ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2018, 12:33 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
Что же получается Unique table это только для удаления, а как же быть с добавлением и изменением? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2018, 12:39 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
patrick1968, Здесь: http://www.delphikingdom.com/asp/viewitem.asp?catalogID=413 http://delphikingdom.ru/asp/viewitem.asp?catalogid=420 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2018, 14:19 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
Спасибо за полезную информацию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2018, 14:57 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
Добрый день. В продолжение темы. В одном случае (тот запрос из первого сообщения) реализовал. qAddress.Open; qAddress.Properties['Unique Table'].Value := 'Addresses'; ADODataSet1.Properties['Resync Command'].Value:= 'SELECT ad.AddressID, ad.AgentID, ad.AddressName, ad.[Index], ad.Town, ad.[Address], ad.[AddressType], adt.AddressTypeName FROM dbo.Addresses ad inner join dbo.AddressTypes adt on adt.AddressType = ad.AddressType where ad.AddressID = ?'; правда пришлось LockType установить в ltBatchOptimistic и после Post делать BatchUpdate() работало только так я на форуме вычитал, что якобы такая схема работает лишь в случае, когда запрос связывает только 2 таблицы, но я что-то засомневался, но во втором случае у меня как-раз так запрос связывает 3 таблицы, вносить изменения надо только в одну SELECT op.OptID, op.ModelID, m.ModelName, m.BrandId, m.BrandName, op.Serial, op.DeviceID, op.Note FROM dbo.Options op left outer join dbo.vModels m on m.ModelID = op.ModelID vModels - VIEW запрос открываю так qOptions.Open; qOptions.Properties['Unique Table'].Value := 'Options'; qOptions.Properties['Update Criteria'].Value := adCriteriaKey; qOptions.Properties['Update Resync'].Value:= adResyncAll; qOptions.Properties['Resync Command'].Value := 'SELECT op.OptID, op.ModelID, m.ModelName, m.BrandId, m.BrandName, op.Serial, op.DeviceID, op.Note FROM dbo.Options op left outer join dbo.vModels m on m.ModelID = op.ModelID where op.OptID = ?'; но при Post'е после добавлении записи система пытается также добавлять в таблицу Models Действительно ли только 2 таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 11:05 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
patrick1968, В Resync Command, в селекте, указываете только таблицу которую изменяете: Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 12:24 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
a LockType какой устанавливать? а то при ltOptimistic система всё равно пытается добавлять в таблицу Models ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 13:12 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
А почему не воспользоваться хранимыми процедурами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 16:21 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
patrick1968, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. В запросе соеденено 3 таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 16:38 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
Вот это не совсем понятно 'Select from SpisokTnLicsNU where (TN = ?) and (MgLics = ?) and (KeyID = ?)'; текст основного запроса для примера пришлите пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 17:44 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
patrick1968, Извиняюсь, рузкмеется должно быть: Код: sql 1. TN, MgLics, KeyID - это первичные ключи. Сам запрос у меня динамически формируется, в зависимости что пользователю надо. Конкретно приведенный запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2018, 21:34 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
а у меня картинка вот какая, все дело видно в том, что 1-я таблица соединяется со 2-й, а 3-я соединяется не с 1-й, а со 2-й Код: pascal 1. 2. 3. а сам запрос выглядит так Код: sql 1. 2. 3. в результате добавления строки в запрос - сообщение (приложено), но ведь мне не нужно добавлять записи никуда, кроме Options ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 13:32 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
patrick1968, Да какая разница как вы соеденяете таблицы. В Resync Command должна быть только изменяемая таблица только со СВОИМИ первичными ключами в секции WHERE: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 15:29 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
Уже по разному делал, сейчас сделал как вы описали, ошибка та же - прямо наваждение какое-то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 15:36 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
patrick1968, Возможно у вас есть таблицы с внешними ключами (FOREIGN KEY) и связанными таблицами, или тригерами на вставку, редакцию или удаление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 15:48 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
Добрый день. Возвращаюсь к выше обсуждаемому и заново столкнулся с подобным, перевернул кучу статей по теме и вроде всё по науке, но процедура работает с ошибками хотя и данные изменяет, огромная просьба прояснить ситуацию к теме есть у меня запрос связывающий несколько таблиц (во все первичные ключи) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. после его открытия Код: pascal 1. 2. в гриде несколько полей но основные pt.PeriodTypeName, dd.ServiceQTY, ct.CurrencyTypeName, dd.Price перед Postом меняю dd.PeriodType, dd.CurrencyType соответствующим pt.PeriodTypeName, ct.CurrencyTypeName, система эти значения прописывает правильно, но при этом она изменяет записи в подчиненных таблицах, что неверно, и затем естественно следует ошибка обновления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:18 |
|
||
|
Применение Unique Table в ADO
|
|||
|---|---|---|---|
|
#18+
procedure Tform1.adoquery1AfterOpen(DataSet: TDataSet); begin adoquery1.Properties['Update Resync'].Value := adResyncAll; adoquery1.Properties['Update Criteria'].Value := adCriteriaKey; adoquery1.Properties['Unique Table'].Value := 'Addresses'; adoquery1.Next; adoquery1.Prior; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2020, 19:34 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39695054&tid=2037840]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
11ms |
get forum data: |
4ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 232ms |
| total: | 411ms |

| 0 / 0 |
