if file('mbtemptable.dbf') drop table mbtemptable endif if not file('mbtemptable.dbf') create table mbtemptable (name character(20),field_type character(13),field_spec character(10)) endif ** END HEADER -- do not remove this line // // Generated on 2024-02-19 // parameter bModal local f f = new create_n_tableForm() if (bModal) f.mdi = false // ensure not MDI f.readModal() else f.open() endif class create_n_tableForm of FORM with (this) canClose = class::FORM_CANCLOSE height = 25.2727 left = 13.8571 top = -0.1818 width = 78.7143 text = "Create New Table" endwith this.MBTEMPTABLE1 = new QUERY(this) with (this.MBTEMPTABLE1) width = 10.0 height = 1.0 sql = 'select * from "mbtemptable.DBF"' active = true endwith this.ENTRYFIELD1 = new ENTRYFIELD(this) with (this.ENTRYFIELD1) onLostFocus = class::ENTRYFIELD1_ONLOSTFOCUS onKey = class::ENTRYFIELD1_ONKEY height = 1.0 left = 22.0 top = 1.3636 width = 18.4286 value = " " endwith this.TEXTLABEL1 = new TEXTLABEL(this) with (this.TEXTLABEL1) height = 1.0 left = 8.7143 top = 1.3636 width = 12.0 text = "Name of table" endwith this.GRID1 = new GRID(this) with (this.GRID1) dataLink = form.mbtemptable1.rowset columns["COLUMN1"] = new GRIDCOLUMN(form.GRID1) with (columns["COLUMN1"]) dataLink = form.mbtemptable1.rowset.fields["name"] editorType = 1 // EntryField width = 28.5714 endwith columns["COLUMN2"] = new GRIDCOLUMN(form.GRID1) with (columns["COLUMN2"]) dataLink = form.mbtemptable1.rowset.fields["field_type"] editorType = 4 // ComboBox width = 16.5714 endwith columns["COLUMN3"] = new GRIDCOLUMN(form.GRID1) with (columns["COLUMN3"]) dataLink = form.mbtemptable1.rowset.fields["field_spec"] editorType = 1 // EntryField width = 14.2857 endwith with (columns["COLUMN1"].headingControl) value = "name" endwith with (columns["COLUMN2"].editorControl) style = 1 // DropDownList dataSource = 'array {"Autoincrement","Binary","Character","Date","Float","Integer","Logical","Memo","Numeric","OLE","Timestamp"}' endwith with (columns["COLUMN2"].headingControl) value = "field_type" endwith with (columns["COLUMN3"].headingControl) value = "field_spec" endwith height = 15.5909 left = 6.5714 top = 7.9091 width = 64.1429 endwith this.PUSHBUTTON2 = new PUSHBUTTON(this) with (this.PUSHBUTTON2) onClick = class::PUSHBUTTON2_ONCLICK height = 1.0909 left = 6.2857 top = 23.9545 width = 15.2857 text = "Create table" endwith this.TEXTLABEL4 = new TEXTLABEL(this) with (this.TEXTLABEL4) height = 1.0 left = 9.0 top = 3.6818 width = 12.0 text = "Default char" endwith this.TEXTLABEL5 = new TEXTLABEL(this) with (this.TEXTLABEL5) height = 1.0 left = 35.4286 top = 3.6818 width = 12.0 text = "Default num" endwith this.ENTRYFIELD4 = new ENTRYFIELD(this) with (this.ENTRYFIELD4) height = 1.0 left = 22.0 top = 3.6818 width = 8.0 value = "15" endwith this.ENTRYFIELD5 = new ENTRYFIELD(this) with (this.ENTRYFIELD5) height = 1.0 left = 48.2857 top = 3.6818 width = 8.0 value = "10,2" endwith this.TEXTLABEL2 = new TEXTLABEL(this) with (this.TEXTLABEL2) height = 1.0 left = 39.5714 top = 5.6364 width = 25.8571 text = "Default field type is Character" endwith this.PUSHBUTTON1 = new PUSHBUTTON(this) with (this.PUSHBUTTON1) onClick = class::PUSHBUTTON1_ONCLICK height = 1.0909 left = 21.5714 top = 5.6364 width = 15.2857 text = "Continue" endwith this.TEXT1 = new TEXT(this) with (this.TEXT1) height = 3.0 left = 44.5714 top = 0.4545 width = 29.8571 text = 'Press Tab to move focus to entryfields to change defaults or press Enter or left-click on "Continue" button to procede.' endwith this.rowset = this.mbtemptable1.rowset function ENTRYFIELD1_onKey(nChar, nPosition,bShift,bControl) if nChar = 13 form.pushbutton1_onclick() elseif nChar = 9 form.entryfield4.setfocus() endif return function ENTRYFIELD1_onLostFocus() if empty(this.value) msgbox('Table name required.','Error') inkey(0.01) this.setfocus() endif return function PUSHBUTTON1_onClick cTable = form.entryfield1.value.toLowerCase() if not '.dbf'$cTable cTable = trim(cTable)+'.dbf' endif f = new file() if f.exists(cTable) if msgbox( cTable+' exists. Delete it?','Warning',4+16) = 6 cmd = 'drop table '+substr(cTable,1,at('.',cTable)-1) &cmd class::ready_for_fields() else form.entryfield1.setfocus() endif else class::ready_for_fields() endif function form_canClose() form.entryfield1.onLostFocus = null //Allow to close with entryfield1 blank return true function ready_for_fields use mbtemptable append blank use if type("form.mbtemptable1") # "U" form.mbtemptable1.active = false form.mbtemptable1.active = true endif form.grid1.setfocus() return function PUSHBUTTON2_onClick if "."$form.entryfield1.value form.entryfield1.value = left(form.entryfield1.value,at(".",form.entryfield1.value)-1) endif if empty(form.entryfield1.value) form.entryfield1.value = "mbtesttable" endif cStr= " create table "+form.entryfield1.value+" (" form.rowset.first() cStr += trim(form.rowset.fields["name"].value) cStr += " "+class::convert_type() form.rowset.next() do while not form.rowset.endofset cStr += "," cStr += trim(form.rowset.fields["name"].value) cStr += " "+class::convert_type() form.rowset.next() enddo cStr+= ')' // ?cStr &cStr form.mbtemptable1.active = false drop table mbtemptable create table mbtemptable (name character(20),field_type character(13),field_spec character(10)) form.mbtemptable1.active = true form.grid1.dataLink = form.mbtemptable1.rowset form.entryfield1.value = '' form.entryfield1.setfocus() return function convert_type local cNewtype do case case left(form.rowset.fields["field_type"].value.toUpperCase(),1) = " " cNewType = "character(" if not empty(form.rowset.fields["field_spec"].value) cNewType += trim(form.rowset.fields["field_spec"].value)+")" else cNewType += form.entryfield4.value + ")" endif case left(form.rowset.fields["field_type"].value.toUpperCase(),1) = "C" cNewType = "character(" if not empty(form.rowset.fields["field_spec"].value) cNewType += trim(form.rowset.fields["field_spec"].value)+")" else cNewType += form.entryfield4.value + ")" endif case left(form.rowset.fields["field_type"].value.toUpperCase(),1) = "N" cNewType = "numeric(" if not empty(form.rowset.fields["field_spec"].value) cNewType += trim(form.rowset.fields["field_spec"].value)+")" else cNewType += form.entryfield5.value + ")" endif case left(form.rowset.fields["field_type"].value.toUpperCase(),1) = "F" cNewType = "float(" if not empty(form.rowset.fields["field_spec"].value) cNewType += trim(form.rowset.fields["field_spec"].value)+")" else cNewType += form.entryfield4.value + ")" endif case left(form.rowset.fields["field_type"].value.toUpperCase(),1) = "I" cNewType ="integer" case left(form.rowset.fields["field_type"].value.toUpperCase(),1) = "A" cNewType = "autoinc" case left(form.rowset.fields["field_type"].value.toUpperCase(),1) = "D" cNewType = "date" case left(form.rowset.fields["field_type"].value.toUpperCase(),1) = "T" cNewType = "timestamp" case left(form.rowset.fields["field_type"].value.toUpperCase(),1) = "L" cNewtype = "boolean" case left(form.rowset.fields["field_type"].value.toUpperCase(),1) = "M" cNewtype = "blob(0,1)" case left(form.rowset.fields["field_type"].value.toUpperCase(),1) = "B" cNewtype = "blob(0,2)" case left(form.rowset.fields["field_type"].value.toUpperCase(),1) = "O" cNewtype = "blob(0,4)" endcase return cNewType endclass