Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 33 34 35 36 37 38 39 [40] 41 42   вперед  Ctrl
 Re: FireDAC  [new]
cptngrb
Member

Откуда:
Сообщений: 227
В общем, нормально работает при любых параметрах в Windows, а в Linux чтобы получить хоть какой-нибудь ответ после восстановления соединения я у коннекции выставляю
AutoConnect:= False;
AutoReconnect:= False;


Ответ приходит хоть и не так быстро, но приходит.
6 сен 18, 16:23    [21667200]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9647
AV в SQL Anywere драйвере пофикшен
9 сен 18, 17:05    [21669300]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Stalker4
Member

Откуда:
Сообщений: 242
Dmitry Arefiev
AV в SQL Anywere драйвере пофикшен

Прекрасно.
А где лицензионный пользователь может скачать обновление FireDAC с этим исправлением ?

И хотелось бы более полный вариант ответа на 21614274, что бы понять такая работа с датой в фильтре это моя ошибка или FD или это его особенность.

Очень хотелось бы получить Ваши ответы на сообщения
21543276
21548055
21584268
10 сен 18, 13:40    [21669812]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
vvvaa
Member

Откуда:
Сообщений: 1
Подскажите, что нужно сделать, чтобы появилась возможность соединиться через FireDac с MS SQL Server?
В списке драйверов в FDConnection отсутствует MS SQL Server.

Версия Embarcadero® Delphi 10.2 Community Edition

К сообщению приложен файл. Размер - 16Kb
25 сен 18, 20:09    [21685925]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1163
В Community Edition доступны только локальные базы данных. MSSQL не доступен. Например надо купить delphi соответствующей редакции или пакет firedac
25 сен 18, 21:48    [21686001]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3855
X-Cite,

при этом в списке есть посгресс и mysql, которые далеко не локальные... тут в чем-то другом должна быть проблема.
25 сен 18, 22:46    [21686027]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Gallemar
Member

Откуда: г.Иркутск
Сообщений: 4999
JaDi
X-Cite,

при этом в списке есть посгресс и mysql, которые далеко не локальные... тут в чем-то другом должна быть проблема.

Вчера читал блог Кэнту,он пишет про доступный firedac только для non-enterprise db. Не про локальные.
26 сен 18, 02:25    [21686117]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3855
Gallemar
JaDi
X-Cite,

при этом в списке есть посгресс и mysql, которые далеко не локальные... тут в чем-то другом должна быть проблема.

Вчера читал блог Кэнту,он пишет про доступный firedac только для non-enterprise db. Не про локальные.

Надеюсь, эти клоуны в курсе, что у мс есть бесплатный sql server express, который МС не только раздает нахаляву, но и вообще продвигает как бесплатную альтернативу, т.ч. для опенсорса и "домашних" проектов.
26 сен 18, 03:33    [21686138]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Gallemar
Member

Откуда: г.Иркутск
Сообщений: 4999
JaDi
Gallemar
пропущено...

Вчера читал блог Кэнту,он пишет про доступный firedac только для non-enterprise db. Не про локальные.

Надеюсь, эти клоуны в курсе, что у мс есть бесплатный sql server express, который МС не только раздает нахаляву, но и вообще продвигает как бесплатную альтернативу, т.ч. для опенсорса и "домашних" проектов.

Не знаю. Мне уже не раз пытались рассказать, что firebird и postgres это файловые бд.
26 сен 18, 04:08    [21686139]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Stalker4
Member

Откуда:
Сообщений: 242
Delphi 10.2.3
Sybase SQL Anywhere 12.0.1

Есть программа. Для работы с БД она использует библиотеку SQL Direct.
При запуске программа загружает на клиента из БД справочники.
Загрузка происходит простым образом.
Query.Close;
Query.SQL('select ...'); или Query.SQL('call MySP');
Query.Open;
Query.FetchAll;
То есть делается или простой select (иногда с задачей параметра через ParamByName) или вызов SP которая возвращает Result Set.
После запуска программы, в ней открывается грид с перечнем документов. Пользователь может открыть документ полностью в виде карточки. В этом случае тоже делаются простые запросы, как указано выше и данными заполняются контролы карточки.

Запуск программы длится примерно 6-8 сек, открытие карточки 1 сек.

Перевел программу на использование FireDAC. То есть все Query заменил на FDQuery, а все Database на FDConnection. Все параметры пока оставил по умолчанию.

После этого перевода запуск программы стал примерно 13-15 сек, открытие карточки 2 сек.
То есть время загрузки данных почти удвоилось.

Меня это, понятное дело, не очень устраивает.

Вопрос:Как это можно улучшить (исправить) ? Может стоит покрутить какие то настройки FD ?
17 окт 18, 10:39    [21706184]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
EAlexander
Member

Откуда: Москва
Сообщений: 366
Stalker4
Delphi 10.2.3
Sybase SQL Anywhere 12.0.1

Есть программа. Для работы с БД она использует библиотеку SQL Direct.
При запуске программа загружает на клиента из БД справочники.
Загрузка происходит простым образом.
Query.Close;
Query.SQL('select ...'); или Query.SQL('call MySP');
Query.Open;
Query.FetchAll;

То есть делается или простой select (иногда с задачей параметра через ParamByName) или вызов SP которая возвращает Result Set.
После запуска программы, в ней открывается грид с перечнем документов. Пользователь может открыть документ полностью в виде карточки. В этом случае тоже делаются простые запросы, как указано выше и данными заполняются контролы карточки.

Запуск программы длится примерно 6-8 сек, открытие карточки 1 сек.

Перевел программу на использование FireDAC. То есть все Query заменил на FDQuery, а все Database на FDConnection. Все параметры пока оставил по умолчанию.

После этого перевода запуск программы стал примерно 13-15 сек, открытие карточки 2 сек.
То есть время загрузки данных почти удвоилось.

Меня это, понятное дело, не очень устраивает.

Вопрос:Как это можно улучшить (исправить) ? Может стоит покрутить какие то настройки FD ?

Надо параметр Fast поставить в True. Если и после этого будет медленно, то сделать
VeryFast=True
Если и это не поможет, то придется все-таки начать отладку и по шагам выяснить, что именно тормозит, если вообще тормозит:)
17 окт 18, 10:54    [21706198]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
bk0010
Member

Откуда:
Сообщений: 4660
Вместо Fast надо писать ReadOnly (ReadOnly:=true), а вместо VeryFast - отключать fiMeta в FetchOptions, иначе AnyDac (при настройках по-умолчанию) перед выполнением вашего запроса будет выполнять еще огромный запрос о структуре таблицы в поисках ключа и вообще...
17 окт 18, 21:41    [21707191]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Stalker4
Member

Откуда:
Сообщений: 242
bk0010
Вместо Fast надо писать ReadOnly (ReadOnly:=true), а вместо VeryFast - отключать fiMeta в FetchOptions, иначе AnyDac (при настройках по-умолчанию) перед выполнением вашего запроса будет выполнять еще огромный запрос о структуре таблицы в поисках ключа и вообще...
ReadOnly и так по умолчанию во всех FDDataSet равно True (кроме MemTable). Хотя как оно может влиять на скорость загрузки не совсем понятно.

По поводу fiMeta - где именно его отключать: в FetchOptions.Cache или FetchOptions.Items ?

Пока же я изменил FetchOptions.CursorKind с ckAutomatic на ckDefault - немного полегчало, но не до конца.
18 окт 18, 13:04    [21707734]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1163
Stalker4
bk0010
Вместо Fast надо писать ReadOnly (ReadOnly:=true), а вместо VeryFast - отключать fiMeta в FetchOptions, иначе AnyDac (при настройках по-умолчанию) перед выполнением вашего запроса будет выполнять еще огромный запрос о структуре таблицы в поисках ключа и вообще...
ReadOnly и так по умолчанию во всех FDDataSet равно True (кроме MemTable). Хотя как оно может влиять на скорость загрузки не совсем понятно.

По поводу fiMeta - где именно его отключать: в FetchOptions.Cache или FetchOptions.Items ?

Пока же я изменил FetchOptions.CursorKind с ckAutomatic на ckDefault - немного полегчало, но не до конца.

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Fetching_Rows_(FireDAC)#General_Usage_Cases

http://docwiki.embarcadero.com/Libraries/Tokyo/en/FireDAC.Stan.Option.TFDFetchOptions.Cache

http://docwiki.embarcadero.com/Libraries/Tokyo/en/FireDAC.Stan.Option.TFDFetchOptions.Items
18 окт 18, 14:31    [21707851]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
bk0010
Member

Откуда:
Сообщений: 4660
Stalker4
По поводу fiMeta - где именно его отключать: в FetchOptions.Cache или FetchOptions.Items
FetchOptions.Items
18 окт 18, 22:11    [21708279]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Stalker4
Member

Откуда:
Сообщений: 242
bk0010
Stalker4
По поводу fiMeta - где именно его отключать: в FetchOptions.Cache или FetchOptions.Items
FetchOptions.Items
Убирание fiMeta не очень помогло.
Как я понял из хелпа, убирание fiMeta ускоряет кучу мелких запросов, а у меня запросов при старте программы немного, но данных в справочниках до 1000-5000 записей.
Тут больше помогли рекомендации из
X-Cite
General_Usage_Cases
(изменение курсора на ckDefault и RowsetSize = 1000), хотя fiMeta я все равно удалил из Items.

Теперь скорость загрузки данных, стала почти как была ранее. Так что большое спасибо за подсказки.

P.S.
Пробовал еще удалить и fiBlobs (это тоже ускоряет загрузку данных), но перестали читаться блобы (Field.DataType = ftMemo) - происходит AV при попытки прочесть данные блоба через FieldByName().AsString.

В хелпе сказано
If included, then the BLOB field values are fetched together with other record fields. Otherwise, the fetching is deferred until a BLOB value is really read.
Но я не понял, как именно я должен сделать "really read" ?.
19 окт 18, 10:47    [21708636]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
EAlexander
Member

Откуда: Москва
Сообщений: 366
Специалисты по FireDac, подскажите.
1. есть oracle anonimus procedure вида
DECLARE
...

BEGIN

ARRAY_LENGTH := :ArrayLength;

FOR i IN 1..ARRAY_LENGTH
LOOP
       p_in := :int_in(i);
...
end loop

смысл в том, что в процедуру передается размер массива ArrayLength и сам массив Integer.

Переменная Int_in в firedac объявлена как ftInteger,
   ADQuery1.ParamByName('int_in').ArrayType := atArray;
   ADQuery1.ParamByName('int_in').ArraySize := 100;

но при попытке выполнить
  ADQuery1.Prepare;
  ADQuery1.ExecSQL;

получаю ошибку от Oracle - pls00224, что работа с int_in подразумевает, что она должна быть array.
вопрос как заставить Firedac сообщить серверу, что это переменная будет массивом.
19 окт 18, 10:49    [21708643]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Stalker4
Member

Откуда:
Сообщений: 242
У TMemTableEh из библиотеки EhLib есть такая полезная фича, как динамическое изменение структуры Fields (добавление, удаление полей) в уже открытом MemTableEh без потери данных.

Вопрос: Есть ли что то подобное в TFDMemTable ?
19 окт 18, 10:51    [21708658]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
hottabych31
Member

Откуда:
Сообщений: 105
EAlexander,

В TFDParam.DataTypeName попробуйте задать имя типа массива как объявлено в Oracle процедуре.
19 окт 18, 11:16    [21708731]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1163
Stalker4,

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Support_for_Blob_Streaming_in_FireDAC
19 окт 18, 11:23    [21708743]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
EAlexander
Member

Откуда: Москва
Сообщений: 366
hottabych31
EAlexander,

В TFDParam.DataTypeName попробуйте задать имя типа массива как объявлено в Oracle процедуре.

А оно никак в процедуре не объявлено - это надо снаружи объявить, что переменные такие-то в этом блоке это массив.
Да и нет у меня в TADParam такого свойства DateTypeName:(
У меня еще TAD, а не TFD.
19 окт 18, 11:28    [21708756]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
hottabych31
Member

Откуда:
Сообщений: 105
Stalker4,

Нет, возможности в открытом датасете быстро изменить структуру полей в FDMemtable нет, но есть костыль
https://stackoverflow.com/questions/44874674/adding-a-new-field-to-fdmemtable-when-loading-an-existing-data

Суть в том, чтобы сохранить данные перестроить структуру и загрузить их снова.
19 окт 18, 11:28    [21708757]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
hottabych31
Member

Откуда:
Сообщений: 105
EAlexander
hottabych31
EAlexander,

В TFDParam.DataTypeName попробуйте задать имя типа массива как объявлено в Oracle процедуре.

А оно никак в процедуре не объявлено - это надо снаружи объявить, что переменные такие-то в этом блоке это массив.
Да и нет у меня в TADParam такого свойства DateTypeName:(
У меня еще TAD, а не TFD.


ADQuery1.ParamByName('int_in').ArrayType := atArray;

По идее, это и должно сказать anyDACу, что это массив. Видимо, баг древней версии.
Можно попробовать .ArrayType := atTable...
19 окт 18, 11:33    [21708769]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
EAlexander
Member

Откуда: Москва
Сообщений: 366
hottabych31
EAlexander
пропущено...

А оно никак в процедуре не объявлено - это надо снаружи объявить, что переменные такие-то в этом блоке это массив.
Да и нет у меня в TADParam такого свойства DateTypeName:(
У меня еще TAD, а не TFD.


ADQuery1.ParamByName('int_in').ArrayType := atArray;

По идее, это и должно сказать anyDACу, что это массив. Видимо, баг древней версии.
Можно попробовать .ArrayType := atTable...

Если написать atPLSQLTable, то да - это заставляет DAC что -то сказать серверу, но там уже проблема процедуры, что там именно array, а не PLSQLTable.
19 окт 18, 11:41    [21708797]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
cptngrb
Member

Откуда:
Сообщений: 227
между FireDac.Comp.Client.FDManager и FDManager1:TFDManager есть разница?
я хочу создавать Private Connection definition, и если я буду обращаться напрямую к FireDac.Comp.Client.FDManager с какими граблями я могу столкнуться?

FDPhysOracleDriverLink1.NLSLang:= 'AMERICAN_AMERICA.CL8MSWIN1251';
FDPhysOracleDriverLink1.VendorLib:= '/opt/oracle/instantclient_12_2/libclntsh.so';

FDManager.Close;
while FDManager.State <> dmsInactive do
Sleep(0);
FDManager.Open;
  
for i:= 0 to 9 do begin
  ConnectionDef:=FDManager.ConnectionDefs.AddConnectionDef;
  ConnectionDef.Params.Clear;
  ConnectionDef.Name:= AName + i.ToString;
  ConnectionDef.Params.UserName:= AUser;
  ConnectionDef.Params.Password:= APassword;
  ConnectionDef.Params.Database:= AConnectStr;
  ConnectionDef.Params.DriverID:= 'Ora';
end;  
1 ноя 18, 17:09    [21721778]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 33 34 35 36 37 38 39 [40] 41 42   вперед  Ctrl
Все форумы / Delphi Ответить