TableDDL.ibeblock
execute ibeblock (
Frm variant,
Op variant)
as
begin
FldType = ibec_LoadFromFile('E:\IBEBlocks\FldTypeHTML.ibeblock');
TableID = ibec_uf_GetElementAttribute(Frm, 'TableSelect', 'value', 0);
sDDL = ´´;
if (TableID is not null) then
begin
select rdb$relation_name from rdb$relations where rdb$relation_id = :TableID into :sTableName;
sTableName = ibec_trim(sTableName);
sDDL = '<B>CREATE TABLE</B> ' || sTableName || '(' || ibec_Chr(13) || ibec_chr(10);
for select rf.rdb$field_name, rf.rdb$field_source, rf.rdb$field_position,
f.rdb$field_type, f.rdb$field_length, f.rdb$field_scale,
f.rdb$field_sub_type, f.rdb$field_precision, f.rdb$character_length,
f.rdb$segment_length, rf.rdb$null_flag, chr.rdb$character_set_name
from rdb$relation_fields rf, rdb$relations r, rdb$fields f
left join rdb$character_sets chr on (f.rdb$character_set_id = chr.rdb$character_set_id)
where (rf.rdb$relation_name = r.rdb$relation_name) and
(rf.rdb$field_source = f.rdb$field_name) and
(r.rdb$relation_id = :TableID)
order by 2
into :FieldName, :fDomain, :FieldPos, :fType, :fLen, :fScale, :fSubType, :fPrec, fCharLen,
:fSegLen, :fNullFlag, :fCharset
do
begin
sType = ibec_trim(fDomain);
IsDomainBased = FALSE;
if (ibec_Copy(sType, 1, 4) <> 'RDB$') then
IsDomainBased = TRUE;
execute ibeblock FldType(:fType, :fSubType, :fLen, :fScale, :fSegLen, :fCharLen, :fPrec, 3)
returning_values :FieldType;
sType = ibec_IIF(IsDomainBased, sType, FieldType);
if (fNullFlag = 1) then
sType = sType || ' <B>NOT NULL</B>';
if (((fType = 37) or (fType = 14) or (fType = 261)) and (IsDomainBased = FALSE) and (fCharset is not NULL)) then
begin
sType = sType || ' <B>CHARACTER SET</B> ' || ibec_trim(fCharset);
end
sType = ibec_IIF(IsDomainBased, sType || ' <I>/* ' || FieldType || ' */</I> ', sType);
sDDL = sDDL || ' ' || ibec_trim(FieldName) || ' ' || sType || ',' || ibec_Chr(13) || ibec_chr(10);
suspend;
end
iLen = ibec_Length(sDDL) - 3;
sDDL = ibec_Copy(sDDL, 1, iLen);
sDDL = sDDL || ');';
end
OldData = ibec_uf_GetFormData(Frm);
iPos = ibec_Pos('<P ID="FAKE">', OldData);
if (iPos > 0) then
OldData = ibec_Copy(OldData, 1, iPos + 12);
sDDL = OldData || '<P>The DDL of the selected table is:</P><P></P><PRE>' || sDDL || '</DDL>';
ibec_uf_SetFormData(Frm, sDDL);
ibec_uf_SetElementAttribute(Frm, 'TableSelect', 'value', TableID, 0);
end
See also:
User Form functions
back to top of page
<< InputForm.ibeblock | IBEBlock | RunMe.ibeblock >>







