@@ -53,17 +53,15 @@ class MainForm extends VCLForm {
5353 this.left = setting.windowLeft;
5454 this.top = setting.windowTop;
5555 this.txtSource.text = setting.source;
56- this.chkHideDialog.chekced = setting.hideDialog;
57- this.cmbDefaultType.itemIndex = this.cmbDefaultType.items.indexOf(setting.defaultType);
56+ this.txtTables.text = setting.tables;
5857 }
5958
6059 // フォーム上の設定値をSettingにコンバート
6160 function toSetting() {
6261 var setting = new Setting();
6362 setting.windowLeft = this.left;
6463 setting.windowTop = this.top;
65- setting.hideDialog = this.chkHideDialog.checked;
66- setting.defaultType = this.cmbDefaultType.text;
64+ setting.tables = this.txtTables.text;
6765 setting.source = this.txtSource.text;
6866 return setting;
6967 }
@@ -83,27 +81,25 @@ class Setting {
8381 var windowTop;
8482 var hideDialog;
8583 var existSection;
86- var defaultType ;
84+ var tables ;
8785
8886 function loadSetting() {
8987 // iniファイル読み込み
9088 var ini = new Ini(new File(this.path + 'SetParameterGeneratorForCode.ini'));
9189 this.windowLeft = ini.read('Window','Left',100);
9290 this.windowTop = ini.read('Window','Top',100);
93- this.hideDialog = (ini.read('SetParameterGeneratorForCode','HideDialog', false) === 'true');
9491 this.existSection = ini.read('SetParameterGeneratorForCode','ExistSection', 0);
95- this.defaultType = ini.read('SetParameterGeneratorForCode','DefaultType ', 0 );
96- this.source = ini.read('SetParameterGeneratorForCode','Source', '');
92+ this.tables = ini.read('SetParameterGeneratorForCode','tables ', '' );
93+ this.source = ini.read('SetParameterGeneratorForCode','Source', 'command.Parameters.Add("@$Name", SqlDbType.$Type).Value = $Name ');
9794 return this;
9895 }
9996
10097 function saveSetting() {
10198 var ini = new Ini(new File(this.path + 'SetParameterGeneratorForCode.ini'));
10299 ini.write('Window','Left',this.windowLeft);
103100 ini.write('Window','Top',this.windowTop);
104- ini.write('SetParameterGeneratorForCode','HideDialog', this.hideDialog);
105101 ini.write('SetParameterGeneratorForCode','ExistSection', this.existSection);
106- ini.write('SetParameterGeneratorForCode','DefaultType ', this.defaultType );
102+ ini.write('SetParameterGeneratorForCode','tables ', this.tables );
107103 ini.write('SetParameterGeneratorForCode','Source', this.source);
108104 ini.update(); // iniファイル更新
109105 }
@@ -115,19 +111,19 @@ class Generator() {
115111 var setting = new Setting().loadSetting();
116112 if (setting.hideDialog) {
117113 // HideDialog設定がtrueならダイアログを出さずに出力する
118- generate(setting.existSection, setting.defaultType , setting.defaultValue, setting.defaultNull);
114+ generate(setting.existSection, setting.tables , setting.defaultValue, setting.defaultNull);
119115 } else {
120116 var frm = new MainForm(true,setting);
121117 if (frm.showModal() === 1) {
122118 // 出力ボタンが押されてfrmを閉じたなら、設定を保存し出力する
123119 setting = frm.toSetting();
124120 setting.saveSetting();
125- generate(setting.source, setting.defaultType );
121+ generate(setting.source, setting.tables );
126122 }
127123 }
128124 }
129125
130- function generate(source, defaultType ) {
126+ function generate(source, tables ) {
131127
132128 var w = application.getActiveWindow();
133129 var noParameterErrorMessage;
@@ -197,13 +193,36 @@ class Generator() {
197193 }
198194 }
199195 }
200-
201- // SQLパラメータ画面で値が設定されているパラメータ
202- var parameters = application.getParameters();
196+
197+ // DBに接続
198+ var conn = application.dbTree.getSelectedDatabaseConnection();
199+
200+ var pTypes = [];
201+
202+ var tableArr = tables.split(',');
203+ var rs = null;
204+
205+ for (t = 0; t < tableArr.length; t++) {
206+ try {
207+ rs = conn.getTableColumnList(tableArr[t].trim());
208+ } catch(e) {
209+ alert('テーブルが見つかりません。対象のDBに接続してください。');
210+ exit();
211+ }
212+ for (var i = 0; i < rs.length; i++) {
213+ for (var j = 0; j < pNames.length; j++) {
214+ if (rs[i].columnName == pNames[j]) {
215+ pTypes[j] = rs[i].dataType.replace(/\([0-9]+\)/, '').replace(/ .*/, '');
216+ }
217+ }
218+ }
219+ }
220+
221+
203222 var str = new StringBuffer();
204223 for(var i=0 ; i<pNames.length ; i++) {
205224 var pName = pNames[i];
206- var pType = defaultType ;
225+ var pType = pTypes[i] ;
207226
208227 str.append(source.replace(/\$Name/g, pName).replace(/\$Type/g, pType)).append("\n");
209228 }
0 commit comments