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 >>