Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 3 4 5 6 7 [8] 9 10 11 12 .. 45   вперед  Ctrl
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9746
И чем же различается LocalUpdate и CachedUpdates ??
20 май 14, 15:43    [16043314]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
fillrate
Member

Откуда:
Сообщений: 11
Dmitry Arefiev
И чем же различается LocalUpdate и CachedUpdates ??

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]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
fillrate
Member

Откуда:
Сообщений: 11
И ещё небольшое уточнение. LocalUpdate можно применять к любому полю. Часто эта фишка используется для ручного обновления записи в наборе данных без запроса к серверу.
20 май 14, 16:53    [16043787]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
vavan
Member

Откуда: Казань
Сообщений: 3375
действительно, любопытно имеет ли FireDAC аналог LogChanges, судя по докам мне показалось что нет
20 май 14, 18:27    [16044447]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9746
В данном конкретном случае решается исключением pfInUpdate из TField.ProviderFlags для поля GroupName.
20 май 14, 18:40    [16044485]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9746
vavan
действительно, любопытно имеет ли FireDAC аналог LogChanges, судя по докам мне показалось что нет

LogChanges = CachedUpdates ?
20 май 14, 18:41    [16044487]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
vavan
Member

Откуда: Казань
Сообщений: 3375
Dmitry Arefiev
LogChanges = CachedUpdates ?

нет, первое можно свободно переключать походу работы
20 май 14, 18:55    [16044543]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9746
vavan
нет, первое можно свободно переключать походу работы

Кроме этого есть еще различия ?
20 май 14, 19:54    [16044764]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
vavan
Member

Откуда: Казань
Сообщений: 3375
Dmitry Arefiev
Кроме этого есть еще различия ?

не знай, я ж твои CachedUpdates знаю только по вчерашнему беглому просмотру доки. но уже одно это - принципиальное
21 май 14, 08:49    [16045944]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
vavan
Member

Откуда: Казань
Сообщений: 3375
Dmitry Arefiev
есть еще различия ?

а ну вот кажется еще:
http://docwiki.embarcadero.com/RADStudio/XE5/en/Caching_Updates_(FireDAC)
FireDAC does not track multiple versions of the same record

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

у kbm тоже развитые ср-ва по версионности
21 май 14, 08:55    [16045959]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
fillrate
Member

Откуда:
Сообщений: 11
Dmitry Arefiev
В данном конкретном случае решается исключением pfInUpdate из TField.ProviderFlags для поля GroupName.

Спасибо, попробую.
21 май 14, 16:37    [16050164]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
asfp
Member

Откуда:
Сообщений: 20
Добрый день!

Есть скрипт вида:
select * from ...
select * from ...
....

количество select заранее не известно.

При открытии через ADQuery.Open возвращается несколько датасетов, которые можно перебирать через NextRecordSet().
При асинхронном режиме исполнения сначала мы попадаем в событие ADQuery.AfterOpen(), обрабатываем рекордсет, делаем NextRecordSet()... и снова попадаем в AfterOpen().

Как правильно обработать несколько рекордсетов при асинхронном режиме исполнения?
4 июн 14, 15:26    [16119947]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3327
Добрый день. Переходим на Delphi XE 6 в связи с этим есть мысль перейти с IBX на FireDAC. Интересует замена IBSQL. Нужен компонент без датасета, но имеющий возможность просматривать записи по одной. То есть нужно фетчить в память и держать не весь датасет, а только одну 'текущую' запись - так, как это делает IBSQL.
8 июн 14, 22:33    [16139579]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
defecator
Member

Откуда:
Сообщений: 39310
makhaon
Добрый день. Переходим на Delphi XE 6 в связи с этим есть мысль перейти с IBC на FireDAC. Интересует замена IBSQL. Нужен компонент без датасета, но имеющий возможность просматривать записи по одной. То есть нужно фетчить в память и держать не весь датасет, а только одну 'текущую' запись - так, как это делает IBSQL.


DevArt UniDAC/IBDAC рулит, а FireDAC, как вошёл в состав RAD, перестал быть интересным
8 июн 14, 22:42    [16139615]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9746
Какой ODBC драйвер используется ?
Можно привести тестовый пример ?
10 июн 14, 16:16    [16149958]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28117
ODBC_ORACLE
с ORACLE при помощи связки FireDAC + ODBC?

а зачем такой изврат? или FireDAC не умеет работать с клиентом Oracle (OCI, или как его там)?
10 июн 14, 16:32    [16150062]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Gator
Member

Откуда: Москва
Сообщений: 14934
OFF?
kdv
а зачем такой изврат? или FireDAC не умеет работать с клиентом Oracle (OCI, или как его там)?
И не изврат вовсе.
В гетерогенной сети, допустим. Внедряемый софт (клиент) написан с каким-то DAC'ом.
И надо вязяться с "чужой" бд. ODBC есть всегда. Зачем ставить какие-то доп.БД-клиенты?
+ пример начала века
Топология - снежинка. Наш софт на D5-D6-7 ADO.
Внизу в тысячах локальных депо зоопарк FoxPro 2.6, Аксессов, Екселей... местных кулибинов.

Над этим официально и реально работающие DB2 в центре и ещё с десяток где-то.
Порядка 20-30 промежуточных Oracle служб. И туда мы втыкали до 500 MSSQL'ей "своей" служюы.
От Кёнигсберга до Сахалина
____________
Теперь это называется РЖД :) А "проезды на красный" продолжаются :(
На втором уровне
10 июн 14, 21:26    [16151514]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28117
Gator
ODBC есть всегда.

всегда есть только менеджер драйверов ODBC, т.е. внешний интерфейс. Чтобы подсоединиться к конкретному серверу через ODBC нужно поставить драйвер ODBC этого сервера. А что ставить клиента, что ODBC - с точки зрения трудозатрат идентично.
10 июн 14, 21:29    [16151517]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9746
Gator
Зачем ставить какие-то доп.БД-клиенты?

Oracle ODBC работает через OCI. Получается изврат - гетеро x гетеро.
Все что нужно для гетеро есть в FireDAC. Более того:
* FireDAC родной драйвер знает про Oracle много больше, чем обобщенный
FireDAC ODBC драйвер.
* FireDAC родной драйвер оптимизирован под Oracle.
* FireDAC родной драйвер прошел полный цикл тестирования, чего нет
для пары обобщенного FireDAC ODBC драйвера + СУБД.

PS: Не ... я конечно посмотрю в чем дело. Но дело может быть и в ODBC
драйвере :) И что тогда ?
10 июн 14, 22:35    [16151678]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
asviridenkov
Member

Откуда:
Сообщений: 3945
Dmitry Arefiev,

А вот я заодно спрошу:
можно как-то сделать чтобы логин-диалог сохранял пароль в параметры БД?
А то диалог его видит, FDConnection подключается, а дальше ниоткуда пароль достать не получается.
Или может есть еще способ сделать клон FDConnection, без пароля?
10 июн 14, 23:01    [16151752]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9746
См. в TFDCustomConnection.DoConnect значение lErasePassword
10 июн 14, 23:13    [16151790]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
asviridenkov
Member

Откуда:
Сообщений: 3945
Dmitry Arefiev
См. в TFDCustomConnection.DoConnect значение lErasePassword


Ага, то есть получается надо включить AutoReconnect
Т.к. как управлять pooled я так и не понял.

ЗЫ Как же отвратительно читать исходники где все через интерфесы. Куда ни ткнешь, попадаешь в декларацию интерфейса, и ищи где оно там реализовано.
10 июн 14, 23:30    [16151840]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Gator
Member

Откуда: Москва
Сообщений: 14934
kdv
Чтобы подсоединиться к конкретному серверу через ODBC нужно поставить драйвер ODBC этого сервера.
И я об этом. Трудозатраты не на установку "драйвера" как такового, а на совместимость зоопарков железок, ОС, etc. + ADO (внутри МДАС...EXE не помню, как он назывался)
Dmitry Arefiev
Oracle ODBC работает через OCI.
Наверное. Я про то, что незачем ставить что-то сверх необходимого.

Не забывайте, что речь о начале века.
И на раб.местах - винды 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 .. 45   вперед  Ctrl
Все форумы / Delphi Ответить