- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
CASE CMD[1] OF
//...
3005,3031,3032:
begin
if (varastype(cmd[2],varinteger)=1) THEN exit;
if (varastype(cmd[2],varinteger)=5) THEN result:=write_elem_spr_3031_3032(cmd);
end;
//...
end;
//...
function TRDM_admin.write_elem_spr_3031_3032(cmd: OleVariant): OleVariant;
begin
if (varastype(cmd[1],varinteger)=3031) then
begin
if write_CS.fieldbyname('OLD_ID').AsVariant<>null then
s:=inttostr(write_CS.fieldbyname('OLD_ID').AsInteger) else
s:='null';
end;
if (varastype(cmd[1],varinteger)=3032) then
begin
if write_CS.fieldbyname('TEMPLATE_ROLE_ID').AsVariant<>null then
s:=inttostr(write_CS.fieldbyname('TEMPLATE_ROLE_ID').AsInteger) else
s:='null';
if write_CS.fieldbyname('TYPE_DOLGN').AsVariant<>null then
s1:=inttostr(write_CS.fieldbyname('TYPE_DOLGN').AsInteger) else
s1:='null';
end;
if id_element>0 then // элемент существует - готовимся к записи
begin
if (varastype(cmd[1],varinteger)=3005) then
begin
write_Query.SQL.Add({запрос});
end;
if (varastype(cmd[1],varinteger)=3031) then
begin
write_Query.SQL.Add({запрос});
end;
if (varastype(cmd[1],varinteger)=3032) then
begin
write_Query.SQL.Add({запрос});
end;
//несколько строк малозначащего кода
end else
begin
if (varastype(cmd[1],varinteger)=3005) then
read_spr_Query.SelectSQL.Add('select gen_id(GEN_TAB_LPU_ID,1) from rdb$database');
if (varastype(cmd[1],varinteger)=3031) then
read_spr_Query.SelectSQL.Add('select gen_id(GEN_TAB_STRUCT_ID,1) from rdb$database');
if (varastype(cmd[1],varinteger)=3032) then
read_spr_Query.SelectSQL.Add('select gen_id(GEN_SPR_DOLGN_ID,1) from rdb$database');
//Ещё несколько малозначащих строк
if (varastype(cmd[1],varinteger)=3005) then
write_Query.SQL.Add({запрос});
if (varastype(cmd[1],varinteger)=3031) then
begin
write_Query.SQL.Add({запрос});
struct_lpu_id:=write_CS.fieldbyname('lpid').AsInteger;
end;
if (varastype(cmd[1],varinteger)=3032) then
begin
write_Query.SQL.Add({запрос});
end;
//Ещё несколько малозначащих строк
end;
if (varastype(cmd[1],varinteger)=3031) then
begin
//Ещё много строк
end;
write_IBT.Commit;
end;
Очевидно, объединяя сущности 3005, 3031 и 3032 в одном методе, автор хотел показать, что они взаимосвязаны.
fajes_rown 06.03.2016 21:47 # 0
s:=inttostr(write_CS.fieldbyname('OLD_ID ').AsInteger) else
пованивает... Где проверка совпадения типов? Где "else if" ?!
tucvbif 08.03.2016 18:52 # 0
tucvbif 13.03.2016 23:06 # 0
[code = sql]UPDATE TAB_LPU...[/code]
[code = sql]UPDATE TAB_STRUCT set OLD_ID='+s+', ...[/code]
[code = sql]UPDATE SPR_DOLGN set TEMPLATE_ROLE_ID='+s+', TYPE_DOLGN='+s2+' ...[/code]
Что находится в INSERTах трёх остальных запросов должно быть понятно.