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

Откуда:
Сообщений: 9647
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Browsing_Tables_(FireDAC)
24 июн 18, 11:25    [21516330]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Вопрос Дмитрию
Guest
Ясно, отбой. Ещё раз прошу прощения за вторжение с большими портянками текста и непонятными объёмными скринами - больше способов как доходчиво объяснить, увы, не знаю (неграмотный я), поэтому лучше просто удалиться - и вам легче, и мне проще
24 июн 18, 12:52    [21516463]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
RomkoLvov
Member

Откуда:
Сообщений: 16
Всем доброго времени суток,
Мне нужно мониторить изменение таблички в БД MSSQL, решил использовать Ваш замечательный компонент FDAlerter,
сделал как в демо

FDEventAlerter1.Names.Add('QUEUE=?');
FDEventAlerter1.Names.Add('SERVICE=?');
FDEventAlerter1.Names.Add('CHANGE1=ev1;select id, name from dbo.FDQA_TransTable');

все супер, но такой вопросик: возможно ли в
FDEventAlerter1Alert(ASender: TFDCustomEventAlerter; const AEventName: string; const AArgument: Variant);
получить как то измененные данные с этой таблици (Updated ID\Deleted ID \ ... итд)

спасибо
27 июн 18, 15:53    [21525565]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
asviridenkov
Member

Откуда:
Сообщений: 3827
Дмитрий, а были ли исправления с версии XE7 касательно ошибки
[FireDAC][DatS]-32. Variable length column[...] overflow ?

Выдает на простой select в Oracle, поле определено как varchar2(5) , проверка select(max(length(...)) тоже дает 5, при этом ругается что там 6 символов.

Установка StrsTrim2Len молча обрезает до 1 символа.
28 июн 18, 01:04    [21526898]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9647
RomkoLvov
получить как то измененные данные с этой таблици (Updated ID\Deleted ID \ ... итд)

Нет, SQL Server это не поддерживает.
28 июн 18, 11:28    [21527767]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9647
asviridenkov
Дмитрий, а были ли исправления с версии XE7 касательно ошибки
[FireDAC][DatS]-32. Variable length column[...] overflow ?

Какая версия RAD Studio ?
28 июн 18, 11:29    [21527770]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
asviridenkov
Member

Откуда:
Сообщений: 3827
Dmitry Arefiev
asviridenkov
Дмитрий, а были ли исправления с версии XE7 касательно ошибки
[FireDAC][DatS]-32. Variable length column[...] overflow ?

Какая версия RAD Studio ?


Я же написал, XE7.
В принципе вопрос решился сменой кодировки подключения, хотя странно что это влияет, там везде данные ANSI.

Еще вопрос, с Oracle постоянно возникают проблемы с типами данных параметров. Ругается на prepare Insert запросов - Specify parameter type... С FB аналогичный код работает нормально. Это как-то можно исправить, или Oracle не возвращает типы параметров при prepare?
28 июн 18, 13:15    [21528227]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9647
asviridenkov
Я же написал, XE7.

Скорее уже исправлено ... Точнее сказать - нужен тест.
asviridenkov
или Oracle не возвращает типы параметров при prepare?

Не возвращает.
28 июн 18, 13:28    [21528285]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
vavan
Member

Откуда: Казань
Сообщений: 3163
asviridenkov
Oracle, поле определено как varchar2(5)
varchar2(5 byte) или varchar2(5 char)?
28 июн 18, 14:40    [21528627]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
asviridenkov
Member

Откуда:
Сообщений: 3827
vavan
asviridenkov
Oracle, поле определено как varchar2(5)
varchar2(5 byte) или varchar2(5 char)?


Отображается как просто (5), насколько помню это значит char. Но в данном случае роли не дорожно играть, так как там строго ANSI символы.
28 июн 18, 14:43    [21528648]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
vavan
Member

Откуда: Казань
Сообщений: 3163
asviridenkov
там строго ANSI символы
хорошо что есть такая уверенность. а кодировка у базы какая?
28 июн 18, 14:49    [21528674]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Stalker4
Member

Откуда:
Сообщений: 242
Dmitry Arefiev
Stalker4
{ver 1.0 b10}.

Это давно исправлено.
А где именно оно исправлено ? У меня Delphi 10.2.3 Enterprice, лицензия.
Где я могу взять эти исправления или надо ждать Delphi 10.3 ?

Dmitry Arefiev
Stalker4
ODBCAdvanced=start=dbeng12.exe

Все правильно. Надо указывать полный путь или он должен быть в PATH. VendorHome тут не при чем.
Как это не причем, разве не в этом свойстве указывается путь к библиотекам сервера ?
А dbeng12.exe это можно скачать часть библиотеки сервера. Так что ИМНО FD должен в первую очередь учитывать пусть из VendorHome при поиске файлов библиотеки сервера.

Dmitry Arefiev
Stalker4
Может стоит такой добавить ?

Можно улучшить CopyDataSet ...
Тогда сделайте это пожалуйста.
4 июл 18, 16:23    [21543276]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Stalker4
Member

Откуда:
Сообщений: 242
Как можно создать вручную сообщение об ошибке с заданным кодом ошибки для класса EASANativeException ?

Типа такого:
raise EASANativeException.Create(10, 'Это моя ручная ошибка')
6 июл 18, 08:50    [21548055]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Stalker4
Member

Откуда:
Сообщений: 242
Есть некий FDQuery у которого CachedUpdates = False.

Нужно в нем локально изменить запись, что бы эти изменения не попали в БД.

Делаю так:
var
  oRow :TFDDatSRow;
...
  oRow := oFDQuery.GetRow();
  oRow.BeginEdit();
  try
     oRow.ValueS['MYFIELD'] := 'Новое значение';
  finally
     oRow.EndEdit();
  end; 

Этот код работает нормально.

А когда через некоторое время я делаю
oFDQuery.Refresh()

то получаю сообщение об ошибке
[FireDAC][Comp][DS]-205. Cannot refresh dataset [oFDQuery]. Cached updates must be commited or canceled and batch mode terminated before refreshing.

НО я ведь обновлял oFDQuery не через механизм CachedUpdates, тем более что он отключен.

Вопрос: Это я что то делаю не так или это ошибка FireDAC ?
19 июл 18, 11:04    [21584193]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 24489
Stalker4
Это я что то делаю не так

Да. При том там написано, что именно не так.
19 июл 18, 11:06    [21584208]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9647
EndEdit(True)
19 июл 18, 11:10    [21584237]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Stalker4
Member

Откуда:
Сообщений: 242
Ранее для работы я использовал библиотеку SQLDirect.

В ней у SDQuery (аналог FDQuery) есть метод OpenEmpty.

Работает он так:
Если в SDQuery есть созданные в "Field Editors" поля, то после вызова OpenEmpty на основе этих полей формируется и открывается DataSet.
Если же полей нет, но есть запрос, то этот запрос посылается на сервер, но вытягивается только структура данных (сами данные не тянутся) на основе которой формируется и открывается DataSet.

Это очень удобный метод для Query в "полу-offline режиме", когда в одном случае туда данные закидываются через методы Append,Edit,Post (без их записи в БД), а в другом случае они сначала вытягиваются с БД, а потом уже в меняются через методы Append,Edit,Post (без их записи в БД).

У FDQuery я такой возможности не нашел.
Есть предложение добавить в него этот метод.
19 июл 18, 11:15    [21584268]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Stalker4
Member

Откуда:
Сообщений: 242
wadman
Stalker4
Это я что то делаю не так

Да. При том там написано, что именно не так.

Я бы с Вами согласился, если бы я работал с FDQuery с помощью, скажем так "прямых кеширующих методов и свойств", т.е. что то типа такого

   
   procedure CacheQueryUpdateRecord(ASender: TDataSet; ARequest: TFDUpdateRequest; var AAction: TFDErrorAction; AOptions: TFDUpdateRowOptions);
   begin
    { Empty Method }
   end; 

   oFDQuery.OnUpdateRecord := CacheQueryUpdateRecord;
   oFDQuery.CachedUpdates := True;
   oFDQuery.UpdateOptions.ReadOnly := False;
   try

     Edit;
     oFDQuery.FieldByName('OBJECTNAME').AsString := 'Новое значение';
     Post;

   finally
     oFDQuery.CommitUpdates();
     oFDQuery.OnUpdateRecord := nil;
     oFDQuery.CachedUpdates := False;
     oFDQuery.UpdateOptions.ReadOnly := True;
   end;

Но я то работал с прямыми методами работы с данными и не думал, что и они могут быть завязаны на кеширование.

Dmitry Arefiev
EndEdit(True)
Большое спасибо, помогло.

2Dmitry Arefiev Дайте пожалуйста ответ и на другие мои сообщения:
21543276
21548055
21584268
19 июл 18, 11:30    [21584385]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Василий 2
Member

Откуда:
Сообщений: 239
Stalker4
Это очень удобный метод для Query в "полу-offline режиме", когда в одном случае туда данные закидываются через методы Append,Edit,Post (без их записи в БД), а в другом случае они сначала вытягиваются с БД, а потом уже в меняются через методы Append,Edit,Post (без их записи в БД).

У FDQuery я такой возможности не нашел.
Есть предложение добавить в него этот метод.

SELECT FIRST 1 или WHERE ... AND 1=2 ?
19 июл 18, 11:53    [21584531]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Stalker4
Member

Откуда:
Сообщений: 242
Василий 2
Stalker4
Это очень удобный метод для Query в "полу-offline режиме", когда в одном случае туда данные закидываются через методы Append,Edit,Post (без их записи в БД), а в другом случае они сначала вытягиваются с БД, а потом уже в меняются через методы Append,Edit,Post (без их записи в БД).

У FDQuery я такой возможности не нашел.
Есть предложение добавить в него этот метод.

SELECT FIRST 1 или WHERE ... AND 1=2 ?

Это не годится.
Во первых в Query может вообще не быть текста запроса, а только сформированный вручную спискок полей.
Во вторых если в Query есть запрос, то он уже полноценный, в том числе и с условиями и динамически его менять в зависимости от режима использования Query будет весьма не удобно.
19 июл 18, 15:49    [21585532]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1167
Знаю, что такой вопрос уже задавался, и даже я его видел, но задачу решить не получилось, мутно все как-то.
Надо FireDac поставить на D7.
Собственно как это сделать? Где купить, где скачать, возможно ли вообще без танцев с бубнами
26 июл 18, 10:15    [21603372]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Toxic Phantom
Member [заблокирован]

Откуда:
Сообщений: 56
Здравствуйте. Очень сильно запинаюсь на выгрузке множественных записей (fetch all из запроса). Не хватает опыта с бд в Дельфях. Подскажите что почитать чтобы быстрее делать и не через известное место? Я вот не понял как например выгрузить в массив результаты запроса. Мне нужно наверно какую то книгу по БД + Дельфи почитать?


GetSQL:='SELECT * FROM table';
FDQuery2.SQL.Text:=GetSQL;
FDQuery2.Open;

try
while not FDQuery2.Eof do
begin
   
tmp:=FDQuery2.FieldByName('some_filed_name').AsInteger;
// tmp это примари кей и он добавляется в динамический массив
FDQuery2.Next;
 
end;
finally
FDQuery2.Close;
end;



то есть программа основана далее на цикле по массиву в котором есть примари кеи, запросы делает и тд.
Подскажите как разобраться со всеми основными возможностями FireDAC
26 июл 18, 15:17    [21604829]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
bk0010
Member

Откуда:
Сообщений: 4660
minva
Надо FireDac поставить на D7.
Собственно как это сделать? Где купить, где скачать, возможно ли вообще без танцев с бубнами
1) Добыть AnyDac (как не скажу: запрещено правилами форума). Последняя версия - AnyDAC 6.0.3 (AnyDAC_for_Delphi_6.0.3.2713.exe), но там просто предпродажная подготовка, AnyDAC 6.0.1 (AnyDAC_for_Delphi_6.0.1.2603.exe), ИМХО, лучше.
2) Добыть FireDAC 7 (FireDAC_7.0.1.3119.exe), чтобы поставить на Delphi 7 надо запускать с ключом /showide.
3) При установке FireDAC 8 на Delphi 7 возник какой-то геморрой (давно было, разбираться не стал - устраивал купленный 6 AnyDAC), а дальше префиксы переделали с TAD на TFD, я на новые версии даже смотреть перестал.
Где взять - попробуйте спросить Арефьева, купить уже нельзя.
26 июл 18, 22:06    [21606367]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1392
Toxic Phantom
Здравствуйте. Очень сильно запинаюсь на выгрузке множественных записей (fetch all из запроса). Не хватает опыта с бд в Дельфях. Подскажите что почитать чтобы быстрее делать и не через известное место? Я вот не понял как например выгрузить в массив результаты запроса. Мне нужно наверно какую то книгу по БД + Дельфи почитать?


+
GetSQL:='SELECT * FROM table';
FDQuery2.SQL.Text:=GetSQL;
FDQuery2.Open;

try
while not FDQuery2.Eof do
begin
   
tmp:=FDQuery2.FieldByName('some_filed_name').AsInteger;
// tmp это примари кей и он добавляется в динамический массив
FDQuery2.Next;
 
end;
finally
FDQuery2.Close;
end;


то есть программа основана далее на цикле по массиву в котором есть примари кеи, запросы делает и тд.
Подскажите как разобраться со всеми основными возможностями FireDAC


Если массив в который выгружаются данные - не является частью *DAC и не нужны датасеты - то IMHO для работы с Firebird будет достаточно бесплатного UIB. И это еще более актуально если версии Delphi - старые. Типа D7 например.

Книги по БД и Delphi конечно читать не вредно, однако такой подход (вытянуть данные запроса в массив и дальше работать с ним) я в книгах не встречал. Хотя сам только так и работаю.
27 июл 18, 06:01    [21606678]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Arioch
Member

Откуда:
Сообщений: 10147
TFDTable edit fails with Firebird 2.5.7 not 2.5.3

https://stackoverflow.com/questions/51169547

Какая-то странная фигня. Там что, какие-то косяки были в FB 2.5.3 ? но другие библиотеки их не замечали...
27 июл 18, 13:22    [21608100]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 33 34 35 36 37 [38] 39 40 41 42   вперед  Ctrl
Все форумы / Delphi Ответить