Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Delphi |
![]() ![]() |
Топик располагается на нескольких страницах: ←Ctrl назад 1 .. 3 4 5 6 7 [8] 9 10 11 12 .. 50 вперед Ctrl→ |
Dmitry Arefiev Member Откуда: Сообщений: 9912 |
И чем же различается LocalUpdate и CachedUpdates ?? |
20 май 14, 15:43 [16043314] Ответить | Цитировать Сообщить модератору |
fillrate Member Откуда: Сообщений: 11 |
CachedUpdates запоминает обновления и накапливает их. Можно стартануть транзакцию и закамитать кэшированные изменения из нескольких наборов данных за один раз. LocalUpdate позволяет изменять данные в DataSet без накапливания, кэширования и возможности отправки на сервер. Т.е. изменения применяются локально так, как будто были получены от сервера. Например, имеется DataSet с таким вот запросом: Select c.Id, c.Name, c.GroupId, g.GroupName FROM Customers c JOIN CustomerGroups g ON c.GroupID= g.ID WHERE c.id=@id Для этого набора данных включен CachedUpdates, т.к. комит на сервер должен быть осуществлен одной транзакцией вместе с данными из других датасетов. Пользователь в отдельной форме редактирует запись, причем для клюента (таблица Customers) устанавливает другую группу (GroupId). Группа выбирается пользователем из списка, который формируется отдельным запросом g.Id, g.GroupName FROM CustomerGroups g В SDAC все просто. Сначала делаем DataSet.Edit..Post и меняем поле GroupId. Потом включаем LocalUpdate и редактируем GroupName. Выключаем LocalUpdate. В итоге, когда юзер заполнит остальные наборы данных и начнет сохранять данные, на сервер отправиться запрос с обновлением только GroupId. Хотя мы редактировали GroupName тоже. К тому же после отправки данных на сервер нет необходимости делать Refresh record, т.к. GroupName и так уже установлен. Это простой пример. В реальном приложении пользователь может редактировать с десяток датасетов до того, как отправит изменения одной транзакцией на сервер. И удобно, когда в редактируемом датасете вместо ключевых столбцов (GroupId) юзер видит осмысленную информацию (GroupName). ВИдит СРАЗУ, а не после отправки на сервер и получении обновления. |
||
20 май 14, 16:47 [16043741] Ответить | Цитировать Сообщить модератору |
fillrate Member Откуда: Сообщений: 11 |
И ещё небольшое уточнение. LocalUpdate можно применять к любому полю. Часто эта фишка используется для ручного обновления записи в наборе данных без запроса к серверу. |
20 май 14, 16:53 [16043787] Ответить | Цитировать Сообщить модератору |
vavan Member Откуда: Казань Сообщений: 3581 |
действительно, любопытно имеет ли FireDAC аналог LogChanges, судя по докам мне показалось что нет |
20 май 14, 18:27 [16044447] Ответить | Цитировать Сообщить модератору |
Dmitry Arefiev Member Откуда: Сообщений: 9912 |
В данном конкретном случае решается исключением pfInUpdate из TField.ProviderFlags для поля GroupName. |
20 май 14, 18:40 [16044485] Ответить | Цитировать Сообщить модератору |
Dmitry Arefiev Member Откуда: Сообщений: 9912 |
LogChanges = CachedUpdates ? |
||
20 май 14, 18:41 [16044487] Ответить | Цитировать Сообщить модератору |
vavan Member Откуда: Казань Сообщений: 3581 |
нет, первое можно свободно переключать походу работы |
||
20 май 14, 18:55 [16044543] Ответить | Цитировать Сообщить модератору |
Dmitry Arefiev Member Откуда: Сообщений: 9912 |
Кроме этого есть еще различия ? |
||
20 май 14, 19:54 [16044764] Ответить | Цитировать Сообщить модератору |
vavan Member Откуда: Казань Сообщений: 3581 |
не знай, я ж твои CachedUpdates знаю только по вчерашнему беглому просмотру доки. но уже одно это - принципиальное |
||
21 май 14, 08:49 [16045944] Ответить | Цитировать Сообщить модератору |
vavan Member Откуда: Казань Сообщений: 3581 |
а ну вот кажется еще:
не помню как там было в фирменном мидасе но у меня старые версии записей есть, без этого невозможен "честный" откат по одной операции взад. хотя возможно я не вполне понимаю смысл фразы у kbm тоже развитые ср-ва по версионности |
||||
21 май 14, 08:55 [16045959] Ответить | Цитировать Сообщить модератору |
fillrate Member Откуда: Сообщений: 11 |
Спасибо, попробую. |
||
21 май 14, 16:37 [16050164] Ответить | Цитировать Сообщить модератору |
asfp Member Откуда: Сообщений: 20 |
Добрый день! Есть скрипт вида: select * from ... select * from ... .... количество select заранее не известно. При открытии через ADQuery.Open возвращается несколько датасетов, которые можно перебирать через NextRecordSet(). При асинхронном режиме исполнения сначала мы попадаем в событие ADQuery.AfterOpen(), обрабатываем рекордсет, делаем NextRecordSet()... и снова попадаем в AfterOpen(). Как правильно обработать несколько рекордсетов при асинхронном режиме исполнения? |
4 июн 14, 15:26 [16119947] Ответить | Цитировать Сообщить модератору |
makhaon Member Откуда: A galaxy far far away Сообщений: 3770 |
Добрый день. Переходим на Delphi XE 6 в связи с этим есть мысль перейти с IBX на FireDAC. Интересует замена IBSQL. Нужен компонент без датасета, но имеющий возможность просматривать записи по одной. То есть нужно фетчить в память и держать не весь датасет, а только одну 'текущую' запись - так, как это делает IBSQL.
Сообщение было отредактировано: 9 июн 14, 00:52 |
8 июн 14, 22:33 [16139579] Ответить | Цитировать Сообщить модератору |
defecator Member Откуда: Сообщений: 39573 |
DevArt UniDAC/IBDAC рулит, а FireDAC, как вошёл в состав RAD, перестал быть интересным |
||
8 июн 14, 22:42 [16139615] Ответить | Цитировать Сообщить модератору |
ODBC_ORACLE
Guest |
Кто-нибудь работал с ORACLE при помощи связки FireDAC + ODBC? Ситуация следующая: 1) FDConnection + драйвер Ora => нормальная работа. 2) ADOConnection + источник данных ODBC => нормальная работа. 3) FDConnection + драйвер ODBC и источником данных из (2) => "ORA-01756: нет завершающей кавычки" для любых запросов (эта же ошибка и при использовании FDTable). FireDAC = 10.0.1 (Build 69712) |
10 июн 14, 15:47 [16149768] Ответить | Цитировать Сообщить модератору |
Dmitry Arefiev Member Откуда: Сообщений: 9912 |
Какой ODBC драйвер используется ? Можно привести тестовый пример ? |
10 июн 14, 16:16 [16149958] Ответить | Цитировать Сообщить модератору |
kdv Member Откуда: iBase.ru Сообщений: 29446 |
а зачем такой изврат? или FireDAC не умеет работать с клиентом Oracle (OCI, или как его там)? |
||
10 июн 14, 16:32 [16150062] Ответить | Цитировать Сообщить модератору |
ODBC_ORACLE
Guest |
1) Oracle in instant_client_11_2 (SQORA32.dll) 2) Кладу на форму FDConnection. Устанавливаю параметры DataSource, Database, User_Name, Password. В результате Test "Connection established successfully." Кладу на форму FDTable. Устанавливаю Connection на FDConnection и имя таблицы. Прямо на форме меняю Active на True. [FireDAC][Phys][ODBC][Oracle][ODBC][Ora]ORA-01756: нет завершающей кавычки. Аналогичные результаты при использовании FDQuery с запросом вида select * from AAA.BBB и при вводе запроса в FDConnection SQL Script. Аналогичные результаты даже для запроса SELECT * FROM V$VERSION |
10 июн 14, 16:35 [16150087] Ответить | Цитировать Сообщить модератору |
Gator Member Откуда: Москва Сообщений: 14980 |
OFF?
В гетерогенной сети, допустим. Внедряемый софт (клиент) написан с каким-то DAC'ом. И надо вязяться с "чужой" бд. ODBC есть всегда. Зачем ставить какие-то доп.БД-клиенты?
|
|||
10 июн 14, 21:26 [16151514] Ответить | Цитировать Сообщить модератору |
kdv Member Откуда: iBase.ru Сообщений: 29446 |
всегда есть только менеджер драйверов ODBC, т.е. внешний интерфейс. Чтобы подсоединиться к конкретному серверу через ODBC нужно поставить драйвер ODBC этого сервера. А что ставить клиента, что ODBC - с точки зрения трудозатрат идентично. |
||
10 июн 14, 21:29 [16151517] Ответить | Цитировать Сообщить модератору |
Dmitry Arefiev Member Откуда: Сообщений: 9912 |
Oracle ODBC работает через OCI. Получается изврат - гетеро x гетеро. Все что нужно для гетеро есть в FireDAC. Более того: * FireDAC родной драйвер знает про Oracle много больше, чем обобщенный FireDAC ODBC драйвер. * FireDAC родной драйвер оптимизирован под Oracle. * FireDAC родной драйвер прошел полный цикл тестирования, чего нет для пары обобщенного FireDAC ODBC драйвера + СУБД. PS: Не ... я конечно посмотрю в чем дело. Но дело может быть и в ODBC драйвере :) И что тогда ? |
||
10 июн 14, 22:35 [16151678] Ответить | Цитировать Сообщить модератору |
asviridenkov Member Откуда: Сообщений: 4020 |
Dmitry Arefiev, А вот я заодно спрошу: можно как-то сделать чтобы логин-диалог сохранял пароль в параметры БД? А то диалог его видит, FDConnection подключается, а дальше ниоткуда пароль достать не получается. Или может есть еще способ сделать клон FDConnection, без пароля? |
10 июн 14, 23:01 [16151752] Ответить | Цитировать Сообщить модератору |
Dmitry Arefiev Member Откуда: Сообщений: 9912 |
См. в TFDCustomConnection.DoConnect значение lErasePassword |
10 июн 14, 23:13 [16151790] Ответить | Цитировать Сообщить модератору |
asviridenkov Member Откуда: Сообщений: 4020 |
Ага, то есть получается надо включить AutoReconnect Т.к. как управлять pooled я так и не понял. ЗЫ Как же отвратительно читать исходники где все через интерфесы. Куда ни ткнешь, попадаешь в декларацию интерфейса, и ищи где оно там реализовано. |
||
10 июн 14, 23:30 [16151840] Ответить | Цитировать Сообщить модератору |
Gator Member Откуда: Москва Сообщений: 14980 |
Не забывайте, что речь о начале века. И на раб.местах - винды 98-2000. И в них поддерживаются ODBC (пр определению) и даже работает ADO Спрашивается: Нафига в диспетчеру ставить все MSSQL (и т.п.) клиентские средства, если он тупо сцепляет панельки друг с другом, получая и отсылая данные с местного сервака. _______________________________ Спасали MSSQL linked servers и циркулярки Министра. (их трое сменилось). Ну и Support. Пнули, и покатили по дорогам с чемоданом в зубах ![]() Короче, извините за оффтоп. |
||||
10 июн 14, 23:38 [16151861] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: ←Ctrl назад 1 .. 3 4 5 6 7 [8] 9 10 11 12 .. 50 вперед Ctrl→ |
Все форумы / Delphi | ![]() |