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

Откуда: Kharkiv, Ukraine
Сообщений: 12240
Data Access with a Linux Console App in Delphi


29 окт 17, 12:18    [20910014]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Michael Longneck
Member

Откуда: Москва
Сообщений: 2269
Таки повторю вопрос - про TVP с MSSQL и клиентом старше 10 нет новостей?
2 ноя 17, 14:20    [20921990]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9583
Michael Longneck
Таки повторю вопрос - про TVP с MSSQL и клиентом старше 10 нет новостей?

Я не тестировал последние 2-4 месяца. Но предположу, что пока нет ...
2 ноя 17, 23:40    [20923415]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
VincMoon
Guest
Доброго дня.
Коллеги, проблема с асинхронными запросами.

Связка FDMemTable <- FDTableAdapter <- FDCommand

При выполнении запроса с параметром FDMemTable.ResourceOptions.CmdExecMode := amBlocking запрос корректно отрабатывает, и данные видны в гриде.
При CmdExecMode := amAsync и вызове FDMemTable.OpenOrExecute компонент почему-то не открывается. Событие AfterOpen у него не отрабатывает, но отрабатывает у FDCommand. И в гриде, естественно, данные не отображаются.
Что делать?
XE5
3 ноя 17, 10:23    [20923938]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
st90
Member

Откуда:
Сообщений: 292
Ребята, подскажите как обработать разрыв связи?
Приложение периодически смотрит в базу на предмет новых задач по таймеру.
Можно как-то глобально не на каждом запросе в программе контролировать отвалилось ли соединение?
FireDac иногда говорит по англицки что связи нет, а иногда валится на неизвестный параметр.
XE6, FMX, Windows
4 ноя 17, 20:47    [20927586]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
st90
Member

Откуда:
Сообщений: 292
Хотя бы просто выдать сообщение и просьбу перезапустить программу.
4 ноя 17, 20:47    [20927588]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1098
Правильно ли я понимаю:
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Databases_(FireDAC)
ODBC driver from MDAC 2.8
SQL Native Client 2005
SQL Native Client 2008
SQL Native Client 2012
ODBC Driver 11
ODBC Driver 13

Они описаны в порядке актуальности... т.е. сейчас самый последний драйвер это ODBC Driver 13...
Если да, то работает ли TVP в нем,в отличие от Sqlncli 2012 ?
5 ноя 17, 00:32    [20927987]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1098
Согласно примеру https://docs.microsoft.com/en-us/sql/relational-databases/native-client-odbc-how-to/use-table-valued-parameters-odbc
void testTVPOrderEntry()

Передает в TVP более 1 строки...

А FireDAC выдает все равно
[FireDAC][Phys][ODBC][Microsoft][ODBC Driver 13 for SQL Server]Invalid string or buffer length.
если больше 1 строки передается
5 ноя 17, 02:31    [20928087]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
vavan
Member

Откуда: Казань
Сообщений: 3106
st90
Можно как-то глобально не на каждом запросе в программе контролировать отвалилось ли соединение?
например у коннекшна навесить OnError обрабатывая особым образом ekServerGone
7 ноя 17, 10:43    [20931666]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
dimka07
Member

Откуда:
Сообщений: 64
Дмитрий, Добрый день.

Использую FireDAC = 15.0.1 (Build 86746) Delphi Berlin. База данных Oracle 11.

Проблема:
Есть сервис который по заданиям чистит некие таблицы в БД. Работа идет в потоках, в каждом потоке создается свой экземпляр DataModule, в котором находятся FDConnection, FDQuery, FDGUIxWaitCursor, FDPhysOracleDriverLink.
Сервис может успешно проработать в течении 3 - 5 дней, но потом он просто крашится, при очередной попытке установить связь с БД
FDConnection1.Connected := True. Связь с базой не устанавливается, а сам сервис просто вылетает.

В Windows EventLog есть следующая информация:
Faulting application name: TrashedDB.exe, version: 1.0.0.0, time stamp: 0x5a422e6d
Faulting module name: OraOCIEI11.dll, version: 11.2.0.1, time stamp: 0x4ead4afb
Exception code: 0xc0000005
Fault offset: 0x0007c594
Faulting process id: 0x354c
Faulting application start time: 0x01d37e3a826d3605
Faulting application path: C:\TrashedDB\TrashedDB.exe
Faulting module path: C:\oracle32\OraHome_1\OraOCIEI11.dll
Report Id: f1aa13c9-eb55-11e7-b226-ac162d6e1984

Краткий код установки соединения:

TRY
  DataModule.FDConnection.Connected := True;
EXCEPT
  On E: Exception Do
    //запись в лог
END;


Такое чувство, что соединение просто зависает и в исключительную ситуацию код не попадает, а сервис просто выкидывается из системы.

В чем может быть проблема?
28 дек 17, 19:01    [21070626]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
vavan
Member

Откуда: Казань
Сообщений: 3106
dimka07
В чем может быть проблема?
в чем угодно, например в оракловом клиенте
был у меня случай
29 дек 17, 10:16    [21071847]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
RomkoLvov
Member

Откуда:
Сообщений: 16
ребята такой вопрос:
мигрирую на FireDAC - FDTable-MSSql
обрабатываю TableDataChange и ставлю некоторым DB завязанным контролам Enabled либо ReadOnly
иногда после FDTable.Post (State меняется с dsInsert на dsBrowse) проскакивают access violations такого типа:

00ac76ef +017 Admin.exe FireDAC.DatS TFDDatSRow.GetData
00b15ef7 +0cf Admin.exe FireDAC.Comp.DataSet TFDDataSet.GetFieldData
00b161cb +02b Admin.exe FireDAC.Comp.DataSet TFDDataSet.GetFieldData
0098b98b +027 Admin.exe Data.DB TDataSet.GetFieldData
00979122 +062 Admin.exe Data.DB TField.GetData
(последние строчки)

в дебаге видно что TField битый - то есть он не nil но память покоцаная..
что это за фигня такая? - на ADO работало безотказно :(

может какие опции дополнительные нужно активировать
22 янв 18, 22:40    [21128454]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Volk65
Member

Откуда:
Сообщений: 24
Во время обработки ошибок FireDac E.Message содежит примерно такую строку:
[FireDAC][Phys][ODBC][Microsoft][ODBC Driver 13 for SQL Server]Invalid string or buffer length.

Вопрос: Как получить чистое сообщение об ошибке? "Invalid string or buffer length."
без служебной информации: [FireDAC][Phys][ODBC][Microsoft][ODBC Driver 13 for SQL Server]

Подскажите пожалуйста.
25 янв 18, 11:53    [21137558]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Arioch
Member

Откуда:
Сообщений: 10006
Вопрос всплыл, умеет ли anyDAC на interbase/firebird делать двухфазный коммит

https://stackoverflow.com/questions/48437776
25 янв 18, 16:00    [21138901]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
vavan
Member

Откуда: Казань
Сообщений: 3106
Volk65
Вопрос: Как получить чистое сообщение об ошибке? "Invalid string or buffer length."
без служебной информации
хрен на воротник
Volk65
Подскажите пожалуйста
как вариант ставить обработчик ошибок и там вырезать каленым железом всю эту муть. ну или хачить где там оно формируется все по типу такого:
function VADExceptionLayers(const ALayers: array of String): String; { TODO -ovavan -csic : AnyDAC corrupts native error messages with cryptic "[abra][cadabra]" nonsense. I don't need that BS }
begin
  Result:='';
end;
...
  CodeRedirect(@uADStanError.ADExceptionLayers,@VADExceptionLayers);
29 янв 18, 11:36    [21146615]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Volk65
Member

Откуда:
Сообщений: 24
vavan
Volk65
Вопрос: Как получить чистое сообщение об ошибке? "Invalid string or buffer length."
без служебной информации
хрен на воротник


Ясно. Хотя казалось бы... Сделай свойство типа "уровень детализации ошибок" или что-то подобное, и пусть разработчик (я) решает.
Ну да, можно вырезать всё что в [] в квадратных скобках, но это кривизна и потенциальные ошибки.
29 янв 18, 11:56    [21146686]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
vavan
Member

Откуда: Казань
Сообщений: 3106
Volk65
Сделай свойство типа "уровень детализации ошибок" или что-то подобное, и пусть разработчик (я) решает
кто бы нас еще спрашивал. хотя надо признать что арефьев в сравнении с многими еще ничего в этом плане был товарищ (как жаль что сдал продукт конторе), иногда прислушивался и даже предложенные приписки задействовал местами
Volk65
можно вырезать всё что в [] в квадратных скобках
или изначально эти "слои" погасить
29 янв 18, 12:07    [21146722]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9583
Все просто:
* что по умолчанию отключено, врядли будет включено
* когда народ лезет в Firebird через ODBC (например), то сложно понять природу ошибки, не зная всего пути доступа

Я вряд ли пойму, чем как кому мешает [abra][cadabra] ...
29 янв 18, 17:59    [21148301]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Volk65
Member

Откуда:
Сообщений: 24
Dmitry Arefiev
Все просто:
* что по умолчанию отключено, врядли будет включено
* когда народ лезет в Firebird через ODBC (например), то сложно понять природу ошибки, не зная всего пути доступа

Я вряд ли пойму, чем как кому мешает [abra][cadabra] ...


В T-SQL есть команда RAISERROR которая генерит ошибку, которая отображается пользователю, который ни черта не может понять и прочитать, сообщение теряется.
Ну и потом, это было пожелание, или скорее мечты, что было бы здорово чтобы можно было отключить.
Вас Дмитрий мы ценим и любим!
29 янв 18, 18:56    [21148476]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
vavan
Member

Откуда: Казань
Сообщений: 3106
Dmitry Arefiev
Все просто:
* что по умолчанию отключено, врядли будет включено
и это было бы хорошо. пусть кому надо включает. хотя для сохранения текущего поведения по дифолту можно было бы и включать а такие как я не вспотели бы и выключить. впрочем к чему это все теперь
Dmitry Arefiev
Я вряд ли пойму, чем как кому мешает [abra][cadabra]
а моему уму (и судя по кол-ву голосов за фичу не единственному) непостижимо как это можно не понять когда хочется чтобы сообщения об ошибках приходили в первоначальном неизуродованном виде
Volk65
Вас Дмитрий мы ценим и любим
и ценили и любили бы еще больше не случись все как случилось
30 янв 18, 08:59    [21149572]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
igor_UUS
Guest
Добрый день, Делаю переход с XE6 на DX 10.2, столкнулся с единственной проблемой, которую не могу побороть.

Проблема с компонентой TFDEventAlerter, которая перестала получать уведомления из MSSQL.

Я решил написать простейший тест,
в базе MSSQL (2008R2 Express) создал очередь и сервис, включил "сервис брокер"
в DX10.2 на форме расположил мемо и кнопку:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, FireDAC.Phys.Intf, FireDAC.Stan.Option,
  FireDAC.Stan.Intf, FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Stan.Def,
  FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Phys.MSSQL,
  FireDAC.VCLUI.Wait, Data.DB, FireDAC.Comp.Client,
  Vcl.StdCtrls, FireDAC.Phys.MSSQLDef;

type
  TForm1 = class(TForm)
    FDEventAlerter: TFDEventAlerter;
    FDConnection1: TFDConnection;
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FDEventAlerterAlert(ASender: TFDCustomEventAlerter;
      const AEventName: string; const AArgument: Variant);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  FDConnection1.Connected := True;

  FDEventAlerter.Options.Synchronize := True;

  FDEventAlerter.Names.Clear;
  FDEventAlerter.Names.Add('QUEUE=EM_DESKTOP_DDF50RC_Igor');
  FDEventAlerter.Names.Add('SERVICE=EM_DESKTOP_DDF50RC_Igor');

  //FDEventAlerter.Names.Add('CHANGE1=evtest1;SELECT message_body FROM EM_DESKTOP_DDF50RC_Igor');
  //FEventAlerter.Options.Kind        := 'QueryNotifies';
  //FDEventAlerter.SubscriptionName    := 'EM_DESKTOP_DDF50RC_Igor;EM_DESKTOP_DDF50RC_Igor';

  FDEventAlerter.Register;

  Button1.Enabled := False;
  Button1.Caption := 'Ведётся запись';
end;

procedure TForm1.FDEventAlerterAlert(ASender: TFDCustomEventAlerter;
  const AEventName: string; const AArgument: Variant);
begin
  Memo1.Lines.Add(AEventName);
end;

end.


Далее скриптом SQL через MenegmentStudio "закидываю" в очередь сообщение, которое тут-же забирает компонента, но событие "OnAlert" не срабатывает.

Компилирую этот же проект на XE6, запускаю, "закидываю" в очередь сообщение, и событие "OnAlert" уже работает.


Т.к. сообщение забирает компонента в обеих случаях, то я подозреваю, что в DX10.2 добавили какой-то фильтр, которые пропускает в OnAlert только те сообщение, которые удовлетворяют какому-то "ворожению". В справке по компоненте ничего нового не написано (если сравнивать XE6 и DX10.2)


Буду очень признателен, помогите разобраться...
18 фев 18, 17:50    [21200039]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Igor_UUS
Guest
Разобрался, вопрос снят
18 фев 18, 20:39    [21200215]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Stalker4
Member

Откуда:
Сообщений: 236
Hi All,

Delphi 10.2.3

Есть у меня некий TFDQuery с данными, с заданными DisplayLabel-названиями колонок, некоторые колонки невидимые (Visible = False), у некоторых задан формат отображения.
Мне надо это все скопировать в TFDMemTable.
В описании я нашел только один вариант:
FDMemTable.Data := FDQuery.Data.
Но он копирует только данные, все остальное (т.е. свойства TField) он не копирует.
Вопрос: Мне это надо делать руками или у FDMemTable все же есть для этого готовые методы ?

Например у TMemTableEh (EhLib) есть метод LoadFromDataSet для загрузки данных из любых DataSet, в режиме копирования или добавления заданного числа записей, так вот он в режиме копирования не только копирует данные, но свойства полей TField.
11 май 18, 12:40    [21402765]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
SergSni
Member

Откуда:
Сообщений: 1
Всем привет.
Решил я "пощупать" fireDAC. До этого опыт с DOA имел только.
Delphi 10.2 Tokyo
Oracle 11 Express Edition

Методом эксперимента кое с чем уже поразбирался. Хелп слабый, конечно...

Но вот наткнулся на одну вещь и сдается мне что это баг.
Кроме Дмитрия вряд ли кто прояснит конечно.

Итак - есть такой компонент FDScript. В событии OnConsolePut можно отловить результаты выполнения команд из скрипта.
И вот замечаю я, что если команда select попадается, то можно получить ответ типа "n rows selected".
А вот если insert, update, delete - то просто ничего не говорящий "ok"

Обидно... Тем более, что в коде есть вроде ветка, возвращающая "n rows processed".
Но туда алгоритм не идет. Полагаю, что оттого, что команда исполняется методом open, а не execute.
На execute идет если только ScriptOptions.ParamArraySize <> 1, а оно как раз 1 по-умолчанию
Речь о модуле FireDAC.Comp.ScriptCommands

Вот такой проблем :(
Хочется понять, как лечить или что делаю не так...
11 май 18, 20:16    [21404070]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9583
Stalker4
Мне это надо делать руками или у FDMemTable все же есть для этого готовые методы ?

http://docwiki.embarcadero.com/Libraries/Tokyo/en/FireDAC.Comp.DataSet.TFDDataSet.CopyDataSet
12 май 18, 10:03    [21404644]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 30 31 32 33 34 [35] 36 37 38 39 40   вперед  Ctrl
Все форумы / Delphi Ответить