При использовании компонентов очень удобными были бы две нижеописанные функции.
Рассмотрите, пожалуйста их добавление или возможно уже это как-то реализовано.
1.
Для обычной работы достаточно написать запрос, поля в Field Editor добавлять не требуется, они будут созданы автоматически.
Но когда требуется одно lookup поле то приходится добавить его и все остальные используемые поля.
Если добавить только одно lookup поле то другие поля добавлены не будут.
Очень было бы удобно добавить только одно lookup поле а все другие создались бы автоматически.
С учетом таких параметров как Options.DefaultExpression, RequiredFileds и др. - поменял на БД и все работает, а в коде никаких изменений.
2.
Иногда бывает нужно некоторое поле, например для отметки checkbox, которое не требуется никак сохранять.
Очень просто добавить его в датасет так:
select
t.field1,
t.field2,
0 as checkbox
from
table t
Но при изменении строки датасет пытается добавить это поле в запросы insert, update и получается ошибка.
Очень удобно была бы какая-то возможность или вообще не отправлять такие поля в запросы
или как-то отметить поле что его не требуется отправлять.
или реализовать предложение из пункта 1, чтобы можно было добавить одно calculated поле, без добавления остальных полей в FieldEditor
Найдено 9 результатов
- Пн 27 мар 2017 10:54
- Форум: Oracle Data Access Components
- Тема: Предложения по новым функция датасета
- Ответы: 1
- Просмотры: 9553
- Вт 15 ноя 2016 08:48
- Форум: Oracle Data Access Components
- Тема: Память занимаемая данными в TOraQuery
- Ответы: 1
- Просмотры: 5995
Память занимаемая данными в TOraQuery
Подскажите, пожалуйста, можно ли как-то узнать сколько памяти занимают данные которые хранятся в конкретном датасете (TOraQuery)?
- Пт 20 май 2016 10:55
- Форум: Oracle Data Access Components
- Тема: Локальная сортировка полей объекта
- Ответы: 6
- Просмотры: 9725
Re: Локальная сортировка полей объекта
отправил на почту , на всякий случай прикладываю сюда пример
Delphi 2010, Oracle 11
При выполнении
OraQuery1.IndexFieldNames := 'e.num;';
возникает ошибка
Delphi 2010, Oracle 11
При выполнении
OraQuery1.IndexFieldNames := 'e.num;';
возникает ошибка
- Пт 20 май 2016 05:41
- Форум: Oracle Data Access Components
- Тема: Локальная сортировка полей объекта
- Ответы: 6
- Просмотры: 9725
Re: Локальная сортировка полей объекта
В примере когда датасет открыт в нем оказывается набор полей (в Fields), "e.num", "e.ser" и тд. Другие операции с этими полями не отличаются от того как бы это был обычный select, но вот сортировка не работает. Была бы удобна такая возможность, но если так сделать нельзя то, конечно, есть и другие способы отсортировать.
- Чт 19 май 2016 05:46
- Форум: Oracle Data Access Components
- Тема: Локальная сортировка полей объекта
- Ответы: 6
- Просмотры: 9725
Re: Локальная сортировка полей объекта
ODAC 9.6.22
Delphi 2010
Delphi 2010
- Ср 18 май 2016 11:21
- Форум: Oracle Data Access Components
- Тема: Локальная сортировка полей объекта
- Ответы: 6
- Просмотры: 9725
Локальная сортировка полей объекта
Подскажите, пожалуйста, можно ли выполнить такую сортировку локально?
Есть функция
возвращает тип данных
в датасете прописан запрос
(для примера результат одна строка)
При выполнении такого кода
ошибка
Есть функция
Код: Выделить всё
lpu.bl_info.F_GET_BEG_INFO(rs.pid, num, ser)
Код: Выделить всё
CREATE OR REPLACE TYPE "LPU"."BL_BEG_INFO" is object (
ID_P_BL NUMBER(8), SER VARCHAR2(7), NUM NUMBER, DATE_BEG DATE, DIA_S NUMBER(7,2), DIA_S_CIPHER VARCHAR2(10),DOCTOR_S NUMBER(5), DOCTOR_S_FIO VARCHAR2(100), DOCTOR_S_SPEC VARCHAR2(50)
)
Код: Выделить всё
select
lpu.bl_info.F_GET_BEG_INFO(2303849, 10546654, 'ВУ') e
from
dual
При выполнении такого кода
Код: Выделить всё
OraQuery1.Open;
OraQuery1.IndexFieldNames := 'e.num;';
ошибка
Invalid IndexFieldNames format!
- Вт 02 сен 2014 12:14
- Форум: Oracle Data Access Components
- Тема: Нехватает dpk в Demos\ThirdParty\FastReport\FR4
- Ответы: 3
- Просмотры: 5566
Re: Нехватает dpk в Demos\ThirdParty\FastReport\FR4
Спасибо.
Еще один вопрос по документации
http://www.devart.com/odac/docs/deployment.htm
В разделе
Deploying Windows applications built with run-time packages
dacXX.bpl always
dacXX.bpl always
odacXX.bpl always
dacXX написано два раза, это опечатка и требуется только две bpl dacXX и odacXX (OdacVcl и CRDBGrid не используется)?
Еще один вопрос по документации
http://www.devart.com/odac/docs/deployment.htm
В разделе
Deploying Windows applications built with run-time packages
dacXX.bpl always
dacXX.bpl always
odacXX.bpl always
dacXX написано два раза, это опечатка и требуется только две bpl dacXX и odacXX (OdacVcl и CRDBGrid не используется)?
- Чт 28 авг 2014 04:56
- Форум: Oracle Data Access Components
- Тема: Нехватает dpk в Demos\ThirdParty\FastReport\FR4
- Ответы: 3
- Просмотры: 5566
Нехватает dpk в Demos\ThirdParty\FastReport\FR4
В версии для Delphi 2010 есть каталог с dpk
Demos\ThirdParty\FastReport\FR4\Delphi14
в версии для Delphi XE6 такого каталога нет, есть только
Demos\ThirdParty\FastReport\FR4\Demo
Demos\ThirdParty\FastReport\FR4\Delphi14
в версии для Delphi XE6 такого каталога нет, есть только
Demos\ThirdParty\FastReport\FR4\Demo
- Ср 13 авг 2014 09:06
- Форум: Oracle Data Access Components
- Тема: Утечка памяти при использовании TOraNestTable
- Ответы: 5
- Просмотры: 10357
Утечка памяти при использовании TOraNestTable
Добрый день, помогите, пожалуйста, разобраться с проблемой.
В базе есть пакет с одной процедурой
Создаю модуль с помощью Package Wizard
В программе включено сообщение об утечках памяти
Если в следующем коде Table.Free; закоментированно, то при закрытии программы появляется сообщение
TOraType.Free RefCount = 0 (D:\Projects\Delphi\Dac\Common\Source\MemData.pas, line 8698)
Delphi 2010, Версия ODAC 9.3.9
В приложении исходный код примера.
В базе есть пакет с одной процедурой
Код: Выделить всё
create or replace type "INT_ARRAY" is table of integer;
create or replace package test_table is
procedure test(ARM_IDs in int_array);
end test_table;
/
create or replace package body test_table is
procedure test(ARM_IDs in int_array) is
begin
null;
null;
end;
end test_table;
/
Код: Выделить всё
unit TestTable;
interface
uses
{$IFDEF MSWINDOWS} Windows,{$ENDIF} SysUtils, Classes, DB, DBAccess, Ora, OraPackage,
FMTBcd, OraClasses, OraObjects, OraCall;
type
TSystem_Test_Table = class(TCustomOraPackage)
public
constructor Create(AOwner: TComponent); override;
procedure Test(const Arm_Ids: TOraNestTable);
end;
implementation
{ TSystem_Test_Table }
constructor TSystem_Test_Table.Create(AOwner: TComponent);
begin
inherited;
PackageName := 'SYSTEM.TEST_TABLE';
end;
procedure TSystem_Test_Table.Test(const Arm_Ids: TOraNestTable);
var
Arm_Ids_Param: TOraParam;
begin
BeginExecPLSQL;
try
Arm_Ids_Param := AddParam('ARM_IDS', ftDataSet, ptInput);
Arm_Ids_Param.AsTable := Arm_Ids;
ExecProc('TEST');
finally
EndExecPLSQL;
end;
end;
end.
Код: Выделить всё
program Project2;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
TestTable in 'TestTable.pas';
{$R *.res}
begin
ReportMemoryLeaksOnShutdown := True;
Если не закоментированно то появляется ошибка на System_Test_Table.Free;An unexpected memory leak has occurred. The unexpected small block leaks are:
1 - 12 bytes: Unknown x 4
53 - 60 bytes: TOraNestTable x 2
TOraType.Free RefCount = 0 (D:\Projects\Delphi\Dac\Common\Source\MemData.pas, line 8698)
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
var
Table: TOraNestTable;
i: Integer;
begin
Table := TOraNestTable.Create(TOraType.Create(OraSession1.OCISvcCtx, 'INT_ARRAY'));
i := Table.AppendItem;
Table.ItemAsInteger[i]:= 2;
i := Table.AppendItem;
Table.ItemAsInteger[i]:= 3;
i := Table.AppendItem;
Table.ItemAsInteger[i]:= 4;
System_Test_Table.Test(Table);
Table.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
OraSession1.Server := '';
OraSession1.Password := '';
OraSession1.Username := '';
OraSession1.Connect;
System_Test_Table := TSystem_Test_Table.Create(nil);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
OraSession1.Disconnect;
System_Test_Table.Free;
//тоже самое с System_Test_Table.Params.Clear;
end;
В приложении исходный код примера.