Найдено 8 результатов

seregaaltmer
Пн 28 апр 2014 13:29
Форум: Oracle Data Access Components
Тема: Problem occured due to violation of module finalization order
Ответы: 9
Просмотры: 11023

Re: Problem occured due to violation of module finalization order

Well, I returned DBMon declaration to the class, but it still doesn't work correctly.

Код: Выделить всё

type
  TForm3 = class(TForm)
    orsqlmntr1: TOraSQLMonitor;
    procedure FormCreate(Sender: TObject);
seregaaltmer
Пт 25 апр 2014 10:34
Форум: Oracle Data Access Components
Тема: Problem occured due to violation of module finalization order
Ответы: 9
Просмотры: 11023

Re: Problem occured due to violation of module finalization order

...the problem is due to DBMonitor was freed when DBMonitor module finalized, but TCustomDASQLMonitor, wich contains link to it, know nothing about it! Don't you thik it is not right?
seregaaltmer
Пт 25 апр 2014 07:41
Форум: Oracle Data Access Components
Тема: Problem occured due to violation of module finalization order
Ответы: 9
Просмотры: 11023

Re: Problem occured due to violation of module finalization order

...or you mean, it will be better to create mon in runtime?
seregaaltmer
Пт 25 апр 2014 07:36
Форум: Oracle Data Access Components
Тема: Problem occured due to violation of module finalization order
Ответы: 9
Просмотры: 11023

Re: Problem occured due to violation of module finalization order

If you delete the component from the form, your sample will work correctly.
But how can I use DBMonitor in case I delete it? Most of it's methods are class functions or procedures, but they want DBMonitor inside of itself!
seregaaltmer
Ср 23 апр 2014 10:48
Форум: Oracle Data Access Components
Тема: Problem occured due to violation of module finalization order
Ответы: 9
Просмотры: 11023

Re: Problem occured due to violation of module finalization order

Hello again. I have sent you a simple example, where problem occurs.
seregaaltmer
Пт 18 апр 2014 13:34
Форум: Oracle Data Access Components
Тема: Problem occured due to violation of module finalization order
Ответы: 9
Просмотры: 11023

Problem occured due to violation of module finalization order

I'm sorry, my english is not very good.
I changed ODAC 6.25 to 8.6 and faced a problem. In 8.6 TDBMonitor implemented as a singletone. Moreover, it creates and destroys in a different places. This causes an access violation.

Код: Выделить всё

unit DBMonitorClient;
//...
initialization
//nothing here
finalization
  DBMonitor.Free;
If I use Halt procedure to terminate my application, at first DBMonitor.Free is executed. Then app goes through the components, and Destroys them. TOraSQLMonitor.Destroy ocuurs. It trying to call TDBMonitor.Finish, wich is already .Freed.

What's the reason to create and destroy TBDMonitor in a different places? Can you do something with this?
seregaaltmer
Вт 11 мар 2014 08:41
Форум: Oracle Data Access Components
Тема: FieldType-ы поддерживаемые в Odac
Ответы: 1
Просмотры: 3935

FieldType-ы поддерживаемые в Odac

Добрый день.

При использовании ftGuid в качестве InputOutput параметра в Sql запросах получаем EAssertionFailed: "Unknown data type (E:\tmp\ODAC\Source\OraClasses.pas, line 4607)". После изучения метода "TOraParamDesc.AllocBuffer", в котором генерируется Assert, встал вопрос возможности использования некоторых FieldType-ов. В документации (http://www.devart.com/odac/docs/) искомую информацию найти не удалось.
Где можно получить информацию о типах параметров которые можно использовать в Sql запросах, и возможно существующих особенностях работы с некоторыми отдельно взятыми типами (если такие особенности есть)? И если есть различия в работе с параметрами для разных версий Ide (а судя по коду они есть), то и про это тоже нужна информация.
seregaaltmer
Ср 05 мар 2014 14:17
Форум: Oracle Data Access Components
Тема: Output параметр типа Date возвращается с не корректным значением
Ответы: 1
Просмотры: 4008

Output параметр типа Date возвращается с не корректным значением

При обработке запросов с output параметрами типов ftDate и ftDateTime, возвращаются разные значения. С ftDateTime возвращается вполне корректное значение а с ftDate - пустое, при чём если передавать параметр типа ftDate со значением '0', результат тоже вернётся корректный. Проблема проявляется на Delphi7 с версиями Odac 8.6 и 9.2.7, в версии 6.25 проблемы не было.

Тестовое приложение:

Код: Выделить всё

program ftDateTest;

{$APPTYPE CONSOLE}

uses
  SysUtils, DB, Ora, OdacVcl;

var
  oraSQL: TOraSQL;
const
  sDateTime  = 'ftDateTime';
  sDate      = 'ftDate';
  sDateWith0 = 'ftDateWith0';

begin
  oraSQL := TOraSQL.Create(nil);
  try
    oraSQL.Session := TOraSession.Create(oraSQL);
    oraSQL.Session.ConnectDialog := TConnectDialog.Create(oraSQL);
    if not oraSQL.Session.ConnectDialog.Execute then
      Exit;
    oraSQL.SQL.Text :=
      Format('begin :%s := sysdate; :%s := sysdate; :%s := sysdate; end;',
        [sDateTime, sDate, sDateWith0]);
    oraSQL.ParamByName(sDateTime).ParamType := ptInputOutput;
    oraSQL.ParamByName(sDateTime).DataType := ftDateTime;

    oraSQL.ParamByName(sDate).ParamType := ptInputOutput;
    oraSQL.ParamByName(sDate).DataType := ftDate;

    oraSQL.ParamByName(sDateWith0).ParamType := ptInputOutput;
    oraSQL.ParamByName(sDateWith0).DataType := ftDate;
    oraSQL.ParamByName(sDateWith0).Value := 0;

    oraSQL.Execute;
    Writeln(Format('%s: "%s"', [sDateTime, oraSQL.ParamByName(sDateTime).AsString]));
    Writeln(Format('%s: "%s"', [sDate, oraSQL.ParamByName(sDate).AsString]));
    Writeln(Format('%s: "%s"', [sDateWith0, oraSQL.ParamByName(sDateWith0).AsString]));
    Readln;
  finally
    oraSQL.Session.Disconnect;
    oraSQL.Free;
  end;
end.
возвращаемый результат:
ftDateTime: "05.03.2014"
ftDate: ""
ftDateWith0: "05.03.2014"

Как с этим бороться и будет ли исправление в ближайшее время?