C#でキーブレイク処理をすることになった。
COBOLの時は1件読込み後、キーブレイク変数をセットとして
perform untilで回していたけど、C#の場合は、LINQを使った方がきれいに書ける。
//最初は月度でブレイク
var yearMonths = items.GroupBy(x => x.月度);
foreach (var ym in yearMonths) {
//シート追加&ヘッダ処理
if (ym.Key == pic売上年月_開始.SelectedDate.Value.ToString("yyyyMM")) { //最初の月度ならシート名を編集
sheet.Name = ym.Key.Substring(0, 4) + "年" + ym.Key.Substring(4, 2) + "月";
}
else {
package.Workbook.Worksheets.Add(ym.Key.Substring(0, 4) + "年" + ym.Key.Substring(4, 2) + "月");
vSt++;
sheet = package.Workbook.Worksheets[vSt];
}
sheet.Cells["F1"].Value = ym.Key.Substring(0,4) + " 年 " + ym.Key.Substring(4,2) + " + 月現在";
sheet.Cells["P1"].Value = DateTime.Now.ToString(" yyyy/MM/dd HH:mm:ss");
//列Aから列Eまで非表示
sheet.Column(1).Hidden = true;
sheet.Column(2).Hidden = true;
sheet.Column(3).Hidden = true;
sheet.Column(4).Hidden = true;
sheet.Column(5).Hidden = true;
sheet.Column(7).Hidden = true;
sheet.Column(8).Hidden = true;
sheet.Column(9).Hidden = true;
//ヘッダー項目編集
sheet.Cells["F1"].Value = DateTime.Today.ToString("yyyy 年 MM月現在");
sheet.Cells["K1"].Value = " *** 担当者別売上統計表 ***";
sheet.Cells["P1"].Value = DateTime.Now.ToString(" yyyy/MM/dd HH:mm:ss");
sheet.Cells["A3"].Value = "年月";
sheet.Cells["B3"].Value = "部門";
sheet.Cells["C3"].Value = "部門名";
sheet.Cells["D3"].Value = "課";
sheet.Cells["E3"].Value = "課名";
sheet.Cells["F3"].Value = " コード担当者名";
sheet.Cells["G3"].Value = "担当者名";
sheet.Cells["H3"].Value = "得意先";
sheet.Cells["I3"].Value = "得意先名";
sheet.Cells["J3"].Value = "純売上";
sheet.Cells["K3"].Value = "粗利";
sheet.Cells["L3"].Value = "粗利率";
sheet.Cells["M3"].Value = "売上";
sheet.Cells["N3"].Value = "返品";
sheet.Cells["O3"].Value = "返品率";
sheet.Cells["P3"].Value = "値引";
sheet.Cells["Q3"].Value = "値引率";
sheet.Cells["R3"].Value = "売上目標";
sheet.Cells["S3"].Value = "達成率";
sheet.Cells["K1"].Style.Font.SetFromFont(new Font("MS Mincho", 16, FontStyle.Bold));
sheet.Cells["A3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["B3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["C3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["D3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["E3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["F3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["G3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["H3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["I3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["J3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["K3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["L3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["M3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["N3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["O3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["P3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["Q3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["R3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Cells["S3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
sheet.Column(06).Width = 30; //F
sheet.Column(11).Width = 16; //J
sheet.Column(12).Width = 16; //K
sheet.Column(13).Width = 7.5; //L
sheet.Column(14).Width = 16; //M
sheet.Column(15).Width = 16; //N
sheet.Column(16).Width = 7.5; //O
sheet.Column(17).Width = 16; //P
sheet.Column(18).Width = 7.5; //Q
sheet.Column(19).Width = 7.5; //R
//合計初期化
tl1純売上 = 0;
tl1粗利 = 0;
tl1売上 = 0;
tl1返品 = 0;
tl1値引 = 0;
tl1売上目標 = 0;
//自社他社区分のヘッダ編集
vY = 4;
//自社他社区分でブレイク
var v自社他社s = ym.GroupBy(x => x.自社他社区分);
foreach (var v自社他社 in v自社他社s) {
//ヘッダ編集
if (v自社他社.Key == "2") {
sheet.Cells[vY, 06].Value = "【区分 一般売上】";
}
else {
sheet.Cells[vY, 06].Value = "【区分 社内売上】";
}
sheet.Cells[vY, 06].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
vY++;
//初期化
tl2純売上 = 0;
tl2粗利 = 0;
tl2売上 = 0;
tl2返品 = 0;
tl2値引 = 0;
tl2売上目標 = 0;
//部門でブレイク
var v部門s = v自社他社.GroupBy(x => x.部門コード);
foreach (var v部門 in v部門s) {
var s1 = items.Where(x => x.月度 == ym.Key
&& x.自社他社区分 == v自社他社.Key
&& x.部門コード == v部門.Key).FirstOrDefault();
//ヘッダ編集
sheet.Cells[vY, 06].Value = s1.部門コード + " " + s1.部門名;
sheet.Cells[vY, 06].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
vY++;
//初期化
tl3純売上 = 0;
tl3粗利 = 0;
tl3売上 = 0;
tl3返品 = 0;
tl3値引 = 0;
tl3売上目標 = 0;
//課でブレイク
var v課s = v部門.GroupBy(x => x.課コード);
foreach (var v課 in v課s) {
var s2 = items.Where(x => x.月度 == ym.Key
&& x.自社他社区分 == v自社他社.Key
&& x.部門コード == v部門.Key
&& x.課コード == v課.Key).FirstOrDefault();
//初期化
tl4純売上 = 0;
tl4粗利 = 0;
tl4売上 = 0;
tl4返品 = 0;
tl4値引 = 0;
tl4売上目標 = 0;
//担当者でブレイク
var v担当者s = v課.GroupBy(x => x.担当者コード);
foreach (var v担当者 in v担当者s) {
var s3 = items.Where(x => x.月度 == ym.Key
&& x.自社他社区分 == v自社他社.Key
&& x.部門コード == v部門.Key
&& x.課コード == v課.Key).FirstOrDefault();
//初期化
tl5純売上 = 0;
tl5粗利 = 0;
tl5売上 = 0;
tl5返品 = 0;
tl5値引 = 0;
//明細出力
var recs = items.Where(x => x.月度 == ym.Key
&& x.自社他社区分 == v自社他社.Key
&& x.部門コード == v部門.Key
&& x.課コード == v課.Key
&& x.担当者コード == v担当者.Key);
foreach (var rec in recs) {
//明細編集
v純売上 = (rec.売上金額計 + rec.返品金額計);
v粗利率 = func率計算(rec.粗利金額計, v純売上);
v返品率 = func率計算(rec.返品金額計, rec.売上金額計);
v値引率 = func率計算(rec.値引金額計, v純売上);
sheet.Cells[vY, 01].Value = rec.月度;
sheet.Cells[vY, 02].Value = rec.部門コード;
sheet.Cells[vY, 03].Value = rec.部門名;
sheet.Cells[vY, 04].Value = rec.課コード;
sheet.Cells[vY, 05].Value = rec.課名;
sheet.Cells[vY, 06].Value = " " + rec.得意先コード + " " + rec.得意先名;
sheet.Cells[vY, 07].Value = rec.担当者名;
sheet.Cells[vY, 08].Value = rec.得意先コード;
sheet.Cells[vY, 09].Value = rec.得意先名;
sheet.Cells[vY, 10].Value = v純売上;
sheet.Cells[vY, 11].Value = rec.粗利金額計;
sheet.Cells[vY, 12].Value = v粗利率;
sheet.Cells[vY, 13].Value = rec.売上金額計;
sheet.Cells[vY, 14].Value = rec.返品金額計;
sheet.Cells[vY, 15].Value = v返品率;
sheet.Cells[vY, 16].Value = rec.値引金額計;
sheet.Cells[vY, 17].Value = v値引率;
sheet.Cells[vY, 18].Value = "";
sheet.Cells[vY, 19].Value = "";
//集計計算
tl5純売上 += v純売上;
tl5粗利 += rec.粗利金額計;
tl5売上 += rec.売上金額計;
tl5返品 += rec.返品金額計;
tl5値引 += rec.値引金額計;
//セーブ項目
sv売上目標 = rec.目標金額計;
sv担当者Cd = rec.担当者コード;
sv担当者名 = rec.担当者名;
vY++;
}
//集計計算
tl4純売上 += tl5純売上;
tl4粗利 += tl5粗利;
tl4売上 += tl5売上;
tl4返品 += tl5返品;
tl4値引 += tl5値引;
tl4売上目標 += sv売上目標;
//担当者合計出力
set合計Row(ref sheet, vY, " * " + sv担当者Cd + " " + sv担当者名,
tl5純売上,
tl5粗利,
tl5売上,
tl5返品,
tl5値引,
sv売上目標);
vY++;
}
//集計計算
tl3純売上 += tl4純売上;
tl3粗利 += tl4粗利;
tl3売上 += tl4売上;
tl3返品 += tl4返品;
tl3値引 += tl4値引;
tl3売上目標 += tl4売上目標;
//課合計出力
set合計Row(ref sheet, vY, " * " + s2.課コード + " " + s2.課名,
tl4純売上,
tl4粗利,
tl4売上,
tl4返品,
tl4値引,
tl4売上目標);
vY++;
}
//集計計算
tl2純売上 += tl3純売上;
tl2粗利 += tl3粗利;
tl2売上 += tl3売上;
tl2返品 += tl3返品;
tl2値引 += tl3値引;
tl2売上目標 += tl3売上目標;
//部門合計出力
set合計Row(ref sheet, vY, " ** " + s1.部門コード + " " + s1.部門名,
tl3純売上,
tl3粗利,
tl3売上,
tl3返品,
tl3値引,
tl3売上目標);
vY++;
}
//集計計算
tl1純売上 += tl2純売上;
tl1粗利 += tl2粗利;
tl1売上 += tl2売上;
tl1返品 += tl2返品;
tl1値引 += tl2値引;
tl1売上目標 += tl2売上目標;
//自社他社区分合計出力
set合計Row(ref sheet, vY, " *** 区分計",
tl2純売上,
tl2粗利,
tl2売上,
tl2返品,
tl2値引,
tl2売上目標);
vY++;
}
//月度合計出力
set合計Row(ref sheet, vY, " **** 総合計",
tl1純売上,
tl1粗利,
tl1売上,
tl1返品,
tl1値引,
tl1売上目標);
}
package.Save();
}
}
private void set合計Row(ref ExcelWorksheet isheet,
int iY,
string i計名,
decimal i純売上,
decimal i粗利,
decimal i売上,
decimal i返品,
decimal i値引,
decimal i売上目標) {
isheet.Cells[iY, 06].Value = i計名;
isheet.Cells[iY, 06].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
isheet.Cells[iY, 10].Value = i純売上;
isheet.Cells[iY, 11].Value = i粗利;
isheet.Cells[iY, 12].Value = func率計算(i粗利, i純売上);
isheet.Cells[iY, 13].Value = i売上;
isheet.Cells[iY, 14].Value = i返品;
isheet.Cells[iY, 15].Value = func率計算(i返品, i売上);
isheet.Cells[iY, 16].Value = i値引;
isheet.Cells[iY, 17].Value = func率計算(i値引, i純売上);
isheet.Cells[iY, 18].Value = i売上目標;
isheet.Cells[iY, 19].Value = func率計算(i純売上, i売上目標);
}
private decimal func率計算(decimal i1, decimal i2) {
decimal vCal = 0;
try {
vCal = (i1 / i2) * 100;
}
catch { vCal = 0; }
return vCal;
}
2018年10月23日火曜日
2018年10月22日月曜日
Excel列(お借りしました)
| 列番号 | 列名 |
|---|---|
| 1 | A |
| 2 | B |
| 3 | C |
| 4 | D |
| 5 | E |
| 6 | F |
| 7 | G |
| 8 | H |
| 9 | I |
| 10 | J |
| 11 | K |
| 12 | L |
| 13 | M |
| 14 | N |
| 15 | O |
| 16 | P |
| 17 | Q |
| 18 | R |
| 19 | S |
| 20 | T |
| 21 | U |
| 22 | V |
| 23 | W |
| 24 | X |
| 25 | Y |
| 26 | Z |
| 27 | AA |
| 28 | AB |
| 29 | AC |
| 30 | AD |
| 31 | AE |
| 32 | AF |
| 33 | AG |
| 34 | AH |
| 35 | AI |
| 36 | AJ |
| 37 | AK |
| 38 | AL |
| 39 | AM |
| 40 | AN |
| 41 | AO |
| 42 | AP |
| 43 | AQ |
| 44 | AR |
| 45 | AS |
| 46 | AT |
| 47 | AU |
| 48 | AV |
| 49 | AW |
| 50 | AX |
| 51 | AY |
| 52 | AZ |
| 53 | BA |
| 54 | BB |
| 55 | BC |
| 56 | BD |
| 57 | BE |
| 58 | BF |
| 59 | BG |
| 60 | BH |
| 61 | BI |
| 62 | BJ |
| 63 | BK |
| 64 | BL |
| 65 | BM |
| 66 | BN |
| 67 | BO |
| 68 | BP |
| 69 | BQ |
| 70 | BR |
| 71 | BS |
| 72 | BT |
| 73 | BU |
| 74 | BV |
| 75 | BW |
| 76 | BX |
| 77 | BY |
| 78 | BZ |
| 79 | CA |
| 80 | CB |
| 81 | CC |
| 82 | CD |
| 83 | CE |
| 84 | CF |
| 85 | CG |
| 86 | CH |
| 87 | CI |
| 88 | CJ |
| 89 | CK |
| 90 | CL |
| 91 | CM |
| 92 | CN |
| 93 | CO |
| 94 | CP |
| 95 | CQ |
| 96 | CR |
| 97 | CS |
| 98 | CT |
| 99 | CU |
| 100 | CV |
| 101 | CW |
| 102 | CX |
| 103 | CY |
| 104 | CZ |
| 105 | DA |
| 106 | DB |
| 107 | DC |
| 108 | DD |
| 109 | DE |
| 110 | DF |
| 111 | DG |
| 112 | DH |
| 113 | DI |
| 114 | DJ |
| 115 | DK |
| 116 | DL |
| 117 | DM |
| 118 | DN |
| 119 | DO |
| 120 | DP |
| 121 | DQ |
| 122 | DR |
| 123 | DS |
| 124 | DT |
| 125 | DU |
| 126 | DV |
| 127 | DW |
| 128 | DX |
| 129 | DY |
| 130 | DZ |
| 131 | EA |
| 132 | EB |
| 133 | EC |
| 134 | ED |
| 135 | EE |
| 136 | EF |
| 137 | EG |
| 138 | EH |
| 139 | EI |
| 140 | EJ |
| 141 | EK |
| 142 | EL |
| 143 | EM |
| 144 | EN |
| 145 | EO |
| 146 | EP |
| 147 | EQ |
| 148 | ER |
| 149 | ES |
| 150 | ET |
| 151 | EU |
| 152 | EV |
| 153 | EW |
| 154 | EX |
| 155 | EY |
| 156 | EZ |
| 157 | FA |
| 158 | FB |
| 159 | FC |
| 160 | FD |
| 161 | FE |
| 162 | FF |
| 163 | FG |
| 164 | FH |
| 165 | FI |
| 166 | FJ |
| 167 | FK |
| 168 | FL |
| 169 | FM |
| 170 | FN |
| 171 | FO |
| 172 | FP |
| 173 | FQ |
| 174 | FR |
| 175 | FS |
| 176 | FT |
| 177 | FU |
| 178 | FV |
| 179 | FW |
| 180 | FX |
| 181 | FY |
| 182 | FZ |
| 183 | GA |
| 184 | GB |
| 185 | GC |
| 186 | GD |
| 187 | GE |
| 188 | GF |
| 189 | GG |
| 190 | GH |
| 191 | GI |
| 192 | GJ |
| 193 | GK |
| 194 | GL |
| 195 | GM |
| 196 | GN |
| 197 | GO |
| 198 | GP |
| 199 | GQ |
| 200 | GR |
| 201 | GS |
| 202 | GT |
| 203 | GU |
| 204 | GV |
| 205 | GW |
| 206 | GX |
| 207 | GY |
| 208 | GZ |
| 209 | HA |
| 210 | HB |
| 211 | HC |
| 212 | HD |
| 213 | HE |
| 214 | HF |
| 215 | HG |
| 216 | HH |
| 217 | HI |
| 218 | HJ |
| 219 | HK |
| 220 | HL |
| 221 | HM |
| 222 | HN |
| 223 | HO |
| 224 | HP |
| 225 | HQ |
| 226 | HR |
| 227 | HS |
| 228 | HT |
| 229 | HU |
| 230 | HV |
| 231 | HW |
| 232 | HX |
| 233 | HY |
| 234 | HZ |
| 235 | IA |
| 236 | IB |
| 237 | IC |
| 238 | ID |
| 239 | IE |
| 240 | IF |
| 241 | IG |
| 242 | IH |
| 243 | II |
| 244 | IJ |
| 245 | IK |
| 246 | IL |
| 247 | IM |
| 248 | IN |
| 249 | IO |
| 250 | IP |
| 251 | IQ |
| 252 | IR |
| 253 | IS |
| 254 | IT |
| 255 | IU |
| 256 | IV |
| 257 | IW |
| 258 | IX |
| 259 | IY |
| 260 | IZ |
| 261 | JA |
| 262 | JB |
| 263 | JC |
| 264 | JD |
| 265 | JE |
| 266 | JF |
| 267 | JG |
| 268 | JH |
| 269 | JI |
| 270 | JJ |
| 271 | JK |
| 272 | JL |
| 273 | JM |
| 274 | JN |
| 275 | JO |
| 276 | JP |
| 277 | JQ |
| 278 | JR |
| 279 | JS |
| 280 | JT |
| 281 | JU |
| 282 | JV |
| 283 | JW |
| 284 | JX |
| 285 | JY |
| 286 | JZ |
| 287 | KA |
| 288 | KB |
| 289 | KC |
| 290 | KD |
| 291 | KE |
| 292 | KF |
| 293 | KG |
| 294 | KH |
| 295 | KI |
| 296 | KJ |
| 297 | KK |
| 298 | KL |
| 299 | KM |
| 300 | KN |
| 301 | KO |
| 302 | KP |
| 303 | KQ |
| 304 | KR |
| 305 | KS |
| 306 | KT |
| 307 | KU |
| 308 | KV |
| 309 | KW |
| 310 | KX |
| 311 | KY |
| 312 | KZ |
| 313 | LA |
| 314 | LB |
| 315 | LC |
| 316 | LD |
| 317 | LE |
| 318 | LF |
| 319 | LG |
| 320 | LH |
| 321 | LI |
| 322 | LJ |
| 323 | LK |
| 324 | LL |
| 325 | LM |
| 326 | LN |
| 327 | LO |
| 328 | LP |
| 329 | LQ |
| 330 | LR |
| 331 | LS |
| 332 | LT |
| 333 | LU |
| 334 | LV |
| 335 | LW |
| 336 | LX |
| 337 | LY |
| 338 | LZ |
| 339 | MA |
| 340 | MB |
| 341 | MC |
| 342 | MD |
| 343 | ME |
| 344 | MF |
| 345 | MG |
| 346 | MH |
| 347 | MI |
| 348 | MJ |
| 349 | MK |
| 350 | MM |
| 351 | MM |
| 352 | MN |
| 353 | MO |
| 354 | MP |
| 355 | MQ |
| 356 | MR |
| 357 | MS |
| 358 | MT |
| 359 | MU |
| 360 | MV |
| 361 | MW |
| 362 | MX |
| 363 | MY |
| 364 | MZ |
http://d.hatena.ne.jp/dentrok/20100810/1281472075
VBSCript Oracle接続
VBScript Oracle接続の例
' *********************************************************** ' Oracle 2 CSV ' ADO : 文字列更新 ' FileSystemObject : CSV出力 ' *********************************************************** strTarget = "Oracle11gMS" strUser = "lightbox" strPass = "LIGHTBOX" ' *********************************************************** ' ADO + FileSystemObject ' *********************************************************** Set Cn = CreateObject( "ADODB.Connection" ) Set Rs = CreateObject( "ADODB.Recordset" ) Set Fso = CreateObject( "Scripting.FileSystemObject" ) ' ********************************************************** ' 接続文字列 ' ********************************************************** ConnectionString = _ "Provider=MSDASQL" & _ ";DSN=" & strTarget & _ ";UID=" & strUser & _ ";PWD=" & strPass & _ ";" ' ********************************************************** ' 接続 ' クライアントカーソル(3)を使う事が推奨されます ' ********************************************************** Cn.CursorLocation = 3 on error resume next Cn.Open ConnectionString if Err.Number <> 0 then WScript.Echo Err.Description Wscript.Quit end if on error goto 0 Query = "select * from 社員マスタ" ' ********************************************************** ' レコードセット ' オブジェクト更新時はレコード単位の共有的ロック(3)を ' 使用します( デフォルトでは更新できません ) ' ※ デフォルトでも SQLによる更新は可能です ' ********************************************************** 'Rs.LockType = 3 on error resume next Rs.Open Query, Cn if Err.Number <> 0 then Cn.Close Wscript.Echo Err.Description Wscript.Quit end if on error goto 0 ' ********************************************************** ' 出力ファイルオープン ' ********************************************************** Set Csv = Fso.CreateTextFile( "社員マスタ.csv", True ) ' ********************************************************** ' タイトル出力 ' ********************************************************** Buffer = "" ' 社員コードと氏名のみ For i = 0 to 1 if Buffer <> "" then Buffer = Buffer & "," end if Buffer = Buffer & Rs.Fields(i).Name Next Csv.WriteLine Buffer ' ********************************************************** ' データ出力 ' ********************************************************** UpdateCnt = 0 Do While not Rs.EOF Buffer = "" Buffer = Buffer & Rs.Fields("社員コード").Value Buffer = Buffer & "," & Rs.Fields("氏名").Value ' 更新 strDay = (UpdateCnt mod 10) + 1 Query = "update 社員マスタ set 生年月日 = TO_DATE('2005/01/" & strDay & "')" Query = Query & " where 社員コード = '" Query = Query & Rs.Fields("社員コード").Value Query = Query & "'" Cn.Execute( Query ) Csv.WriteLine Buffer Rs.MoveNext UpdateCnt = UpdateCnt + 1 Loop ' ********************************************************** ' ファイルクローズ ' ********************************************************** Csv.Close ' ********************************************************** ' レコードセットクローズ ' ********************************************************** Rs.Close ' ********************************************************** ' 接続解除 ' ********************************************************** Cn.Close
' *********************************************************** ' Oracle 2 CSV ' ADO : 文字列更新 ' FileSystemObject : CSV出力 ' *********************************************************** strTarget = "Oracle11gMS" strUser = "lightbox" strPass = "LIGHTBOX" ' *********************************************************** ' ADO + FileSystemObject ' *********************************************************** Set Cn = CreateObject( "ADODB.Connection" ) Set Rs = CreateObject( "ADODB.Recordset" ) Set Fso = CreateObject( "Scripting.FileSystemObject" ) ' ********************************************************** ' 接続文字列 ' ********************************************************** ConnectionString = _ "Provider=MSDASQL" & _ ";DSN=" & strTarget & _ ";UID=" & strUser & _ ";PWD=" & strPass & _ ";" ' ********************************************************** ' 接続 ' クライアントカーソル(3)を使う事が推奨されます ' ********************************************************** Cn.CursorLocation = 3 on error resume next Cn.Open ConnectionString if Err.Number <> 0 then WScript.Echo Err.Description Wscript.Quit end if on error goto 0 Query = "select * from 社員マスタ" ' ********************************************************** ' レコードセット ' オブジェクト更新時はレコード単位の共有的ロック(3)を ' 使用します( デフォルトでは更新できません ) ' ※ デフォルトでも SQLによる更新は可能です ' ********************************************************** 'Rs.LockType = 3 on error resume next Rs.Open Query, Cn if Err.Number <> 0 then Cn.Close Wscript.Echo Err.Description Wscript.Quit end if on error goto 0 ' ********************************************************** ' 出力ファイルオープン ' ********************************************************** Set Csv = Fso.CreateTextFile( "社員マスタ.csv", True ) ' ********************************************************** ' タイトル出力 ' ********************************************************** Buffer = "" ' 社員コードと氏名のみ For i = 0 to 1 if Buffer <> "" then Buffer = Buffer & "," end if Buffer = Buffer & Rs.Fields(i).Name Next Csv.WriteLine Buffer ' ********************************************************** ' データ出力 ' ********************************************************** UpdateCnt = 0 Do While not Rs.EOF Buffer = "" Buffer = Buffer & Rs.Fields("社員コード").Value Buffer = Buffer & "," & Rs.Fields("氏名").Value ' 更新 strDay = (UpdateCnt mod 10) + 1 Query = "update 社員マスタ set 生年月日 = TO_DATE('2005/01/" & strDay & "')" Query = Query & " where 社員コード = '" Query = Query & Rs.Fields("社員コード").Value Query = Query & "'" Cn.Execute( Query ) Csv.WriteLine Buffer Rs.MoveNext UpdateCnt = UpdateCnt + 1 Loop ' ********************************************************** ' ファイルクローズ ' ********************************************************** Csv.Close ' ********************************************************** ' レコードセットクローズ ' ********************************************************** Rs.Close ' ********************************************************** ' 接続解除 ' ********************************************************** Cn.Close
2018年10月18日木曜日
C# 簡単にTextをファイル出力する
C# 簡単にTextをファイル出力する
File.WriteAllText(@"C:\temp\sql.txt", "文字列");
デバッグしたい時に使う
File.WriteAllText(@"C:\temp\sql.txt", "文字列");
デバッグしたい時に使う
ラベル:
C#,
FileStream,
Stream,
Text
2018年10月15日月曜日
windows2016の windows backupでバックアップ先をNASにすると失敗する
windows2016の windows backupでバックアップ先をNASにすると失敗する
現象
windows2016の標準 backup ソフト windows backupを使用してバックアップを
実行するとエラー終了してバックアップ出来ない。
原因
backup target先のNASがSMBに対応していないかららしいです。
対処方法
windows serverの共有を指定する
現象
windows2016の標準 backup ソフト windows backupを使用してバックアップを
実行するとエラー終了してバックアップ出来ない。
原因
backup target先のNASがSMBに対応していないかららしいです。
対処方法
windows serverの共有を指定する
2018年10月9日火曜日
2018年10月2日火曜日
登録:
投稿 (Atom)