Search found 47 matches

by ahijazi
Mon 30 Oct 2017 16:14
Forum: dotConnect for Oracle
Topic: DataLink.EndEdit() behavior, again
Replies: 4
Views: 1595

Re: DataLink.EndEdit() behavior, again

!!! I believe it's a major issue (may consider as a bug) in noncached mode, which could lead to a major data loss in the applications , any way as you said "time consuming task" !!.


best regards
by ahijazi
Thu 26 Oct 2017 09:12
Forum: dotConnect for Oracle
Topic: DataLink.EndEdit() behavior, again
Replies: 4
Views: 1595

DataLink.EndEdit() behavior, again

Dear Devart;
refer to the old post viewtopic.php?f=1&t=34860 , i have retest the case on the new version 9.4, but it still the same !!

any time could this issue be solved, or at least what the workaround not to lose the data

best regards,
by ahijazi
Mon 23 Jan 2017 09:14
Forum: dotConnect for Oracle
Topic: DataLink.EndEdit() behavior
Replies: 2
Views: 1245

DataLink.EndEdit() behavior

Dear Devart;
Using the Depts table as test case with the following structure:

Code: Select all

create table depts( oid number(8) not null, name varchar2(200), dept_desc varchar2(200),  notes varchar2(200) );

alter table depts  add constraint dept_pk primary key (oid);
alter table depts  add constraint dept_ck  check (oid < 100);

Building a simple WinForm with DataTable(CachedUpdates = false), DataLink, and four Textedits bonded to the Depts fields, and follow next steps:
1. Run the WinForm, open DataTable. Textedits will show the current record.
2. Edit Name, and Dept_Desc with new values.
3. Edit OID with value > 100, and execute DataLink.EndEdit() method, an exception is raised because of dept_ck constraint.
4. Re-edit OID with value < 100 and re-execute DataLink.EndEdit() method, no exception is raised, but the value of the Name, and Dept_Desc is reverted to the original values !!!!!!!!!, so I losses the edits done before the Exception is raised !!!!!!!!!!!!

How can I solve such an issue.

OraConnect: 9.1.131
Dev Lang: C#
Dev IDE: Visual Studio 2012
Database: Oracle 12c
by ahijazi
Wed 17 Feb 2016 06:20
Forum: Oracle Data Access Components
Topic: Readonly Issue
Replies: 1
Views: 1249

Readonly Issue

Dear Devart;

Any updates regarding the TOraTable Readonly issue that mentioned in http://forums.devart.com/viewtopic.php?f=5&t=33214


Best Regards
by ahijazi
Sat 13 Feb 2016 15:21
Forum: Oracle Data Access Components
Topic: Set Readonly := True close the Dataset ??
Replies: 1
Views: 1476

Set Readonly := True close the Dataset ??

Dear Devart,

in testing process of ODAC 9.6.22, we faced a new behavior !!, after set OraTable.Readonly to true, it closing the OraTable Object ????

[Update : in case OraTable have KeyFields set to value, no close action is taken, when KeyFields is empty the OraTable is closed after turn Readonly to true]


IDE : Delphi 2007.
by ahijazi
Mon 18 Jan 2016 15:35
Forum: Universal Data Access Components
Topic: Refer to "UniDAC Migration Issues"
Replies: 1
Views: 788

Refer to "UniDAC Migration Issues"

Refer to Issues listed in the following post,

http://forums.devart.com/viewtopic.php?f=28&t=29724

any Updates regards Points 1, and 4 ?? [ Points 2, 3 is done ]

Best Regards,
by ahijazi
Tue 17 Jun 2014 05:19
Forum: Oracle Data Access Components
Topic: UpdatesPending in NonCachedMode
Replies: 5
Views: 1072

Re: UpdatesPending in NonCachedMode

Dear Alex;

Hope to add such a feature in the near future, I know it's a standard behavior of DBAccess component but we are using Devart components to give as much as possible features, thanks in advance.


Best Regards,

Ahmed Hijazi P. Eng
by ahijazi
Mon 16 Jun 2014 10:18
Forum: Oracle Data Access Components
Topic: UpdatesPending in NonCachedMode
Replies: 5
Views: 1072

Re: UpdatesPending in NonCachedMode

Your answer is about the current record in a Dataset, I asked about the Dataset, In case I Edit a record and then Post, Insert a new record and then Post and move to the third record (posts done by GUI when moving between records), at that case Dataset have updates i can not check unless i used custom code, is their any method or property could told me about update like UpdatesPending in NonCachedMode, and if not is their any intention to add in the near future??


Best Regards,
by ahijazi
Sat 14 Jun 2014 10:34
Forum: SQL Server Data Access Components
Topic: Similar to sys.dbms_transaction.step_id in Oralce
Replies: 1
Views: 1271

Similar to sys.dbms_transaction.step_id in Oralce

Dear Devart;

Is their a function in SQL Server similar to Oracle "sys.dbms_transaction.step_id", which could tell us that thier bending changes in current transaction.


Best Regards,
by ahijazi
Sat 14 Jun 2014 10:22
Forum: Oracle Data Access Components
Topic: UpdatesPending in NonCachedMode
Replies: 5
Views: 1072

UpdatesPending in NonCachedMode

Dear Devart,

Is there a similar to UpdatesPending property in CachedMode := False???, that could told us if their ant updates in the Dataset (delete, update, insert)


Best Regards,
by ahijazi
Tue 03 Jun 2014 07:34
Forum: Universal Data Access Components
Topic: UniDAC Migration Issues
Replies: 1
Views: 1024

UniDAC Migration Issues

Dear UniDAC Support;

Can I have a confirmation if the issues I have mentioned in the following posts will be fixed in the next build of UniDAC

1- http://forums.devart.com/viewtopic.php?f=28&t=29650
Note:
I hope you fix the issue in transaction management part, main transaction have to become active (InTransaction = true) when execute DML statments in ExecuteSQL method or call insert mothed of TUniTable without the call of explicit StartTransaction. (Update and delete statments activate the transaction but insert didnot !!!!!!! in TUniTable).

2- http://forums.devart.com/viewtopic.php?f=28&t=29649

3- http://forums.devart.com/viewtopic.php?f=28&t=29661

4- AutoCommit is hidden in UniTable and UniQuery, it must be published !!.



finally, what is the expected date of the next build??


Best Regards,
by ahijazi
Wed 28 May 2014 16:28
Forum: Universal Data Access Components
Topic: From ODAC to UniDAC (2)
Replies: 2
Views: 1009

From ODAC to UniDAC (2)

Dear Devart;

The following code is executed in ODAC, but when using UniDAC it did not, it seems that UniDAC did not understand result parameter as a default ????, how can using the same code with UniDAC

Code: Select all

  vCount  := conn.ExecSQL('begin select count(*) into :result from A; end;', [0]);


in ODAC

Code: Select all

function TOraSQL.FindResultParam: TDAParam;
begin
  Result := Params.FindParam('Result');
end;
in UniDAC

Code: Select all

function TUniSQL.FindResultParam: TDAParam;
var
  i: integer;
begin
  Result := nil;

  for i := 0 to Params.Count - 1 do
    if Params[i].ParamType = ptResult then
      Result := Params[i];

  if Result <> nil then
    if Result.DataType = ftUnknown then
      Result.DataType := ftInteger;    
end;
by ahijazi
Tue 27 May 2014 17:55
Forum: Universal Data Access Components
Topic: From ODAC to UniDAC
Replies: 1
Views: 1214

From ODAC to UniDAC

Dear Devart;

1- The following code run perfect in ODAC, but when using the UniDAC (5.3.8 ) after calling the commit method, exception is raised "can not perform operation inactive transaction" ???

Code: Select all

  snMain := TUniConnection.Create(self);
  with snMain do begin
    SpecificOptions.Add('Oracle.Direct=True');
    SpecificOptions.Add('Oracle.ClientIdentifier=Admin');
    Username       := 'dblock';
    Password       := 'dblock';
    Server         := 'serv::db';
    AutoCommit     := False;
    ProviderName   := 'Oracle';
    Connect;

    ExecSQL('create table A (ID INTEGER not null, NAME VARCHAR2(250) not null, CONSTRAINT A_PK PRIMARY KEY (ID))', []);
    ExecSQL('create table B (ID INTEGER not null, NAME VARCHAR2(250) not null, CONSTRAINT B_PK PRIMARY KEY (ID))', []);
    ExecSQL('insert into A values(1, ''Atest 1'')', []);
    ExecSQL('insert into B values(1, ''Btest 1'')', []);

    Commit;
  end;



2- A full description of the issue was discussed in previous post in the ODAC form http://forums.devart.com/viewtopic.php?f=5&t=18542 , when try the same code in UniDAC it did not work as expected ????

Code: Select all

    var
      snMain  : TUniConnection;
      qryTest : TUniQuery;
      tblTest : TUniTable;

    begin
      snMain := TUniConnection.Create(self);

      with snMain do begin
        SpecificOptions.Add('Oracle.Direct=True');
        Username    := 'dblock';
        Password    := 'dblock';
        Server      := 'ORA11g64bit::dbx';
        AutoCommit  := False;
        Connect;
        try
          ExecSQL('drop table A', []);
          ExecSQL('drop table B', []);
        except
        end;
       
        ExecSQL('create table A (ID INTEGER not null, NAME VARCHAR2(250) not null, CONSTRAINT A_PK PRIMARY KEY (ID))', []);
        ExecSQL('create table B (ID INTEGER not null, NAME VARCHAR2(250) not null, CONSTRAINT B_PK PRIMARY KEY (ID))', []);

        ExecSQL('insert into A values(1, ''test 1'')', []);
        ExecSQL('insert into A values(2, ''test 2'')', []);
        ExecSQL('insert into A values(3, ''test 3'')', []);

        ExecSQL('insert into B values(1, ''test 1'')', []);
        ExecSQL('insert into B values(2, ''test 2'')', []);
        ExecSQL('insert into B values(3, ''test 3'')', []);

        snMain.ExecSQL('commit', []); // used instead of commit because it raise an exception of inactive transaction
      end;


      tblTest := TUniTable.Create(self);
      with tblTest do begin
        Connection:= snMain;       
        TableName   := 'A';
        KeyFields   := 'ID';
        Open;

        Insert; FieldByName('ID').AsInteger := 4;   FieldByName('Name').AsString := 'test 4';  Post;

        Locate('ID', 1, []);
        Edit;  FieldByName('Name').AsString := 'new value 1';  Post;

        Locate('ID', 2, []); Delete;
        Next;
      end;

      snMain.ExecSQL('Rollback', []); // used instead of snMain.Rollback because it raise an exception of inactive transaction


      qryTest := TUniQuery.Create(self);
      with qryTest do begin
        Connection:= snMain;        
        SQL.Text := 'select * from B';
        KeyFields   := 'ID';
        Open;

        Insert; FieldByName('ID').AsInteger := 4;   FieldByName('Name').AsString := 'test 4'; Post;

        Locate('ID', 1, []);
        Edit;  FieldByName('Name').AsString := 'new value 1';    Post;

        Locate('ID', 2, []);
        Delete;
        Next;
      end;

       snMain.ExecSQL('Rollback', []); // used instead of snMain.Rollback because it raise an exception of inactive transaction
    end;

What you will find after execute the code, that the behavior of UniTable different than the UniQuery,
table "A" will have the record with ID=4 even if we Rollback the transaction (BUG).
table "B" will NOT have the record with ID=4 and that is a correct behavior.

I believe the must have the same behavior, they have to create a one Transaction for all DML operations, does it ???

Note that I have not use StartTransction methods.


Best Regards,

Ahmed Hijazi P. Eng
by ahijazi
Tue 27 May 2014 16:44
Forum: Universal Data Access Components
Topic: RowsAffected from TuniConnection.ExecSQL
Replies: 1
Views: 1074

RowsAffected from TuniConnection.ExecSQL

Dear Devart;

How I can get RowsAffected value after calling Connection.ExecSQL('some update statement', []);

in TOraSession their was Session.sql.RowsAffected, what is the equivalent??

Best Regards,

Ahmed Hijazi P. Eng.
by ahijazi
Tue 30 Apr 2013 12:30
Forum: Oracle Data Access Components
Topic: ConnectionTimeout Did not work.
Replies: 1
Views: 927

ConnectionTimeout Did not work.

Dear Devart,
How I can implement a connection timeout in Direct mode,
when i try to connect to a remote server (through the internet) i want the timeout to be 5 seconds, when i'm testing the connection, all the time it take 21.00 seconds to replay with the timeout.

Component versions,
- Delphi IDE 2007
- ODAC 6.90.0.57
- Oracle 11g

Best Regards,

Ahmed Hijazi