Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Вниз

ADODataSet.Properties   Найти похожие ветки [ Unique Table ]

 
Lamo   (2004-09-27 16:46) [0]

А вот не работает(!?):
в dset (TADODataSet) прописан запрос из 2- таблиц, что-то вроде:

SELECT a.id,
      a.desc,
      a.child_id,
      b.child_desc
FROM a
INNER JOIN b ON a.child_id=b.child_id
WHERE a.id = :param1


При этом указано, что:

dset.Properties["Unique Table"].Value := "a";


При исправлении на форме b.child_desc на сервер идет (гляжу из профайлера):

exec sp_executesql N"UPDATE "DBName".."b" SET "child_desc"=@P1 WHERE "child_desc"=@P2 AND "child_id"=@P3", ... ну и т.д.


Короче, пытается обновиться табл. b

А как же тогда Properties["Unique Table"] ???
Или еще чего надо ?


 
Nikolay M. ©   (2004-09-27 17:02) [1]

Курсор клиентский, серверный?


 
Lamo   (2004-09-27 17:09) [2]

Клиентский

И...   ?


 
Nikolay M. ©   (2004-09-27 17:29) [3]


> И...   ?

Ну а ты сам как думаешь? :)
Попробуй при серверном.


 
Lamo   (2004-09-27 17:35) [4]

Бли-и-н-н...
Да я никак не думаю (знал бы куда копать - сам бы написал)
А серверный ну никак не родходит...


 
Nikolay M. ©   (2004-09-27 17:38) [5]

Ты сначала попробуй, а потом говори подходит-не подходит.
Primary key на таблицах есть?


> При этом указано, что:
> dset.Properties["Unique Table"].Value := "a";

Указано до открытия запроса или после?


 
Lamo   (2004-09-27 17:42) [6]

Докладываю:
1. PK безусловно есть (везде есть!)
2. Properties["Unique Table"].Value указывал и до Open, и после - один фиг.
3. Серверный курсор ну никак не подходит.

М.б. еще какая МЫСЛ есть ?


 
Nikolay M. ©   (2004-09-27 17:47) [7]

МЫСЛ:
Properties["Update Resync"].Value:= adResyncAll;
Хотя это вряд ли :(


 
Lamo   (2004-09-27 17:51) [8]

Мда...   :(((

Что ж так печально-то все ?


 
Nikolay M. ©   (2004-09-27 17:54) [9]

Все. Мысли закончились.
Пора зреть в корень: чего пытаешься сделать?


 
Johnmen ©   (2004-09-27 17:58) [10]

1. А что за проперти "Unique Table" ? Откуда сведения про неё ?
2. Поменяй "a" на "b" :) Что получилось ?


 
Lamo   (2004-09-27 17:59) [11]

Johnmen
Смешно...


 
sniknik ©   (2004-09-27 18:04) [12]

http://delphi.olympus.ru/dk/helloword/ado03.htm


 
Johnmen ©   (2004-09-27 18:05) [13]

>Lamo  
>Смешно...

По п.№1 или №2 ?
И всё же...


 
sniknik ©   (2004-09-27 18:05) [14]

вот же гадость то ;о)), сперли статью с королевства (изначально там была). а я не посмотрел первую же ссылку с поиска положил.


 
sniknik ©   (2004-09-27 18:07) [15]

а вобщето нет, это оно и есть (королевство), похоже переехало в очередной раз.


 
Johnmen ©   (2004-09-27 18:07) [16]

Снято (сп.sniknik ©)
:)


 
Lamo   (2004-09-27 18:09) [17]

Nikolay M.
Дык стандартно вроде все:
данные из table a - реально редактируемые на форме.
table b - справочная табл.
dset извлекается из ХП на сервере.
Идея в том, что значение a.child_id (то бишь привязка к эл-ту справочника) идет через выбор b.child_desc
Ну и т.д.
Я в вопросе упростил все до минимума:
на самом деле в table b есть еще child_code, он тоже присутствует в выборке и на форме. Пользователь может выбирать новое child_id и через него тоже (это, если хотите, альтернативный ключ для table b, имеет смысловую мнемонику, удобен для быстрого выбора). Так вот, именно при изменении на форме child_code, это изменение пытается записаться в table b.

Так понятно ?


 
Johnmen ©   (2004-09-27 18:11) [18]

>dset извлекается из ХП на сервере.

Видимо здесь собака порылась...


 
Lamo   (2004-09-27 18:12) [19]

sniknik
Да читал я ето, читал...
Вопрос в том, почему обновляется совсем др. табл. Вот и спросил
"А как же тогда Properties["Unique Table"] ???"


 
Lamo   (2004-09-27 18:16) [20]

Johnmen
Хотелось бы понимать, как она тут порылась.
Аналогичная др. форма работает на ура (правда там в качестве справочниой table b выступает view из другой БД - так уж пришлось... Но ведь ОНО не рвется обновлять строки этого view, ОНО как-то понимает...)


 
KSergey ©   (2004-09-28 08:11) [21]

Только шаманский бубен, увы...
Вообще все эти хитрые св-ства - работают как хотят, по моему наблюдению. И никогда не ругаются. Что жутко плохо.

Возможно, проблема действительно в

> [18] Johnmen ©   (27.09.04 18:11)

Можно еще попробовать
Properties["Update Resync"].Value:= что-либо не adResyncAll;

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


 
sniknik ©   (2004-09-28 08:29) [22]

KSergey ©   (28.09.04 08:11) [21]
знаеш, может это и странно, но у меня работает, и при таких же начальных условиях (единственное пользуюсь для access базы), надежно, устойчиво, и именно так как ожидаю. почему у других при тех же условиях(как описывают) не работает, вот это загадка (для меня).
даже пробы делаю иногда, воссоздать глюк, повторяю все что написано (то что опущено, естественно на свое усмотрение), не получается, работает!

кстати что считать "незначительным изменением"? вот например смена курсора в компоненте, это незначительно? всего один параметр заменить, наверное незначительно. но работает все совершенно по другому. также как установка асинхронного режима, или режим "директтейбл". тоже единственный параметр но меняет логику работы компанент (считай что другие взял)... а после ожидать что будет работать чтото передназначеное только для конкретного режима. смешно.

это тоже эмоции.


 
KSergey ©   (2004-09-28 09:32) [23]

> или режим "директтейбл".

Отсюда подробнее можно? Это  я не понял...


 
Lamo   (2004-09-28 10:08) [24]

Sniknik
Возникло у меня вчера подозрение, что указание Unique Table ни на что не влияет при изменении рекордсета.

Сегодня вот отыскал в MS ADO 2.8 Help:

While 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.

Так что, похоже, иначе и быть не может. (Но ведь не пишут же об этом популяризаторы!!!)
В этом свете несколько сбивает высказывание счастливчиков:

"...может это и странно, но у меня работает, и при таких же начальных условиях...надежно, устойчиво, и именно так как ожидаю"

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


 
sniknik ©   (2004-09-28 10:55) [25]

>> или режим "директтейбл".
> Отсюда подробнее можно? Это  я не понял...
имеет смысл только для jet-а (пока(?)), изза его локалности и добавленной в нем возможности, прямой доступ к таблицам, индексам (без этого не можеш использовать индексы сам, устанавливать их, полагаешся только на SQL), в общем в этом режиме данные не перекачиваются через ядро jet (сервер), не нужно пересоздавать индексы для скаченного на клиента рекордсета. работает seek для быстрого поиска по индексу (в остальных режимах нет).
устанавливается ADODataSet1.CommandType:= cmdTableDirect
(в общем поведение меняется сильно)
подробнее в справке.
p.s. VFP драйвер, тоже локальный (из опробованого), но... ничего похожего... ;о))

> М.б. мы разного ожидаем при таких же начальных условиях?
наверняка


 
Lamo   (2004-09-28 11:09) [26]

shiknik
Боюсь показаться занудой, но все же, нельзя ли уточнить: у Вас действительно обновляются ТОЛЬКО поля указанной табл. из рекордсета при указании Unique Table или Ваш post был как бы вообще (типа, а я вот такой...)


 
sniknik ©   (2004-09-28 11:30) [27]

> у Вас действительно обновляются ТОЛЬКО поля указанной табл. из рекордсета при указании Unique Table
именно, только указанная таблица, запрос какой идет на обновление посмотреть не могу (писал, с этим юзал только acces), но по последствиям (записи в связанной не появляются) именно так.

> типа, а я вот такой...
не я, ADO, пост возник после эмоционального "наезда" на всю систему [21].
(восприятие у меня во всяком случае было именно такое)
думаю в мире очень много людей у которых все в порядке с ним, не я один.


 
Lamo   (2004-09-28 11:50) [28]

sniknik
Ну тогда я просто не знаю, что и сказать...Действительно чудеса: тут так, а там эдак... а Help-у, значит, верить, но не всегда.
(Кстати, в ликбезе по ADO на Королевстве утверждается, что подобные dynamic properties МОЖНО назначать у открытого TADODataSet, в MS справке по ADO пишут, что делать это следует перед открытием RS - на Visul Basic так и делают - я видел, а у меня в DELPHI при попытке назначить Unique Table ДО открытия TADODataSet возникает AV. Только после!) Разобраться не просто...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.038 c
1-1097085805
oleg_
2004-10-06 22:03
2004.10.24
Как можно image вставить в word?


14-1097047755
RDen
2004-10-06 11:29
2004.10.24
Иероглифы при копировании через буфер


8-1091007330
xdev
2004-07-28 13:35
2004.10.24
Перерисовка формы


14-1097134413
Gero
2004-10-07 11:33
2004.10.24
Копирование папки


1-1096952667
Schummi
2004-10-05 09:04
2004.10.24
Многомерный массив





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский