Re:SALOON & VBA

HTA + Javascript レストラン予約システム④ 合体版再その3

HTA + Javascript レストラン予約システム④ 合体版再その2 から続く

MDB作成処理画面


**< RESTRANT.hta ③ >**********************************************
 db.Close();  db  = null;
 dbws.Close(); dbws = null;
 dbe = null;
 alert("RESTRANT.mdb に、コースマスタ、ご予約テーブルを作成しました");
 document.getElementById("tbl").innerHTML = "RESTRANT.mdb に、コースマスタ、ご予約テーブルを作成しました";
}
/* ==================================================
 新レコードを追加してみる
===================================================== */
function addnewrecord(){
 var DBOPENTABLE = 1;
 var shell = new ActiveXObject("WScript.Shell");
 var dbpath = "RESTRANT.mdb";
 shell   = null;

 var dbe  = new ActiveXObject("DAO.DBEngine.36");
 var dbws=dbe.Workspaces(0);
 var db=dbws.OpenDatabase(dbpath);
 var rs   = db.OpenRecordset("コースマスタ",DBOPENTABLE);

 rs.AddNew();
 rs.Fields("コース名") = "なし";
 rs.Fields("可否"  ) = -1;
 rs.Fields("概要"  ) = "選択なし";
 rs.Fields("単価"  ) = 0;
 rs.Fields("標準数" ) = 0;
 rs.Fields("画像"  ) = "DUMMY.jpg";
 rs.Fields("登録日" ) = null;
 rs.Fields("廃止日" ) = null;
 rs.Fields("備考"  ) = "ダミー画像(初期画像)";

 rs.Update();

 rs.Close();  rs  = null;
 db.Close();  db  = null;
 dbws.Close(); dbws = null;
 dbe = null;
 alert("コースマスタ に、「なし」レコードを追加しました");
 document.getElementById("rec").innerHTML = "コースマスタ に、「なし」レコードを追加しました";
 alert("再起動します!");
 location.href = "RESTRANT.hta";
 window.Close;
}
/* ==================================================
 任意ページ表示(サブウインドウ)
===================================================== */
function kakunin(){
 ret = prompt("任意ページのURLを入力", "http://blog.goo.ne.jp/frontflug");
 if (ret != null){
  window.open(ret, "new");
 }
}
/* ==================================================
 jQuery UI 調整
===================================================== */
 jQuery( document ).ready( function( $ )
 {
  $( "body" ).addClass( "my_mail_notice" );
  $( "#selectmenu" ).selectmenu();
 });
$(function() {
 // タブ切替
 $( "#tab_area" ).tabs();
 $ (".content:not('li.active + .content')").hide();
 $("li").hover(function(){
  $ (this).addClass("hover")
 },
 function(){
  $(this).removeClass("hover")
 });
 $ ("li").click(function(){
  $("li").removeClass("active");
  $ (this).addClass("active");
  $(".content:not('li.active + .content')").fadeOut();
 $ ("li.active + .content").fadeIn();
 });

 // カレンダー(datepicker)
 $.datepicker.setDefaults( $.datepicker.regional[ "ja" ] );
 $('.calendar').datepicker({ dateFormat: 'yy/mm/dd' });

});
</script>
<style>
input,textarea { border-style:none; }
select     { border: thin #ffffff none; }
.ui-datepicker { font-size: 80%; }
.imgDs     { box-shadow:     0px opx 5px #000000;
         -moz-box-shadow:  0px 0px 5px #000000;
         -webkit-box-shadow: 0px 0px 5px #000000; }
button     { background-color:#E0FFFF; }
</style>
</head>
<body bgcolor="#4169E1" style="filter: progid:DXImageTransform.Microsoft.Gradient
 (GradientType=0, StartColorStr='#B0C4DE', EndColorStr='#4169E1')"><basefont face="HGゴシックM" COLOR="#191970">
<div id="tab_area">
<ul>
 <li><a href="#t-1" id="li-1">RESERVATION</a></li>
 <li><a href="#t-2" id="li-2">COURCE MAST</a></li>
 <li><a href="#t-3" id="li-3">MDB SETTING</a></li>
</ul>
<div id="t-1">
<br><br>
<form name="myForm1">
<div id="frm1">
 <table id="tbl1" border="1" bordercolor="#0000BD" style="margin:0px 3px 0px 3px; border-collapse: collapse">
  <tr bgcolor="#E0FFFF"><td colspan="3">&nbsp;予約日&nbsp;
  <select name="selYYB" onchange="go_ReLoad1()" style="font-family:HGゴシックM">
  </select></td><td colspan="2" align="center"><a href="#" onClick="go_NewRec1()">新規追加</a></td>
  </tr>
  <tr align="center">
  <td bgcolor="#E0FFFF" id="X0">&nbsp;予 約 番 号&nbsp;</td>
  <td bgcolor="#E0FFFF" id="X1">&nbsp;来店時刻&nbsp;</td>
  <td bgcolor="#E0FFFF" id="X2">&nbsp;お 客 様 名&nbsp;</td>
  <td bgcolor="#E0FFFF" id="X3">&nbsp;人_数&nbsp;</td>
  <td bgcolor="#E0FFFF" id="X4">&nbsp;状_況&nbsp;</td>
  </tr>
  <tbody id="tbdy1" align="center">
  </tbody>
  <tr bgcolor="#E0FFFF"><td colspan="5" id="kei"></td></tr>
 </table>
</div>
<div id="frm2" hidden>
 <table id="tbl2" border=0>
  <tr>
  <td align=left nowrap> <button id="一覧1" onClick="go_ListPage1()" style="WIDTH:75px;HEIGHT:35px">一覧</button></td>
  <td align=left nowrap>_<button id="登録1" onClick="func_insRec1()" style="WIDTH:75px;HEIGHT:35px">登録</button></td>
  <td align=left nowrap>_<button id="更新1" onClick="func_updRec1()" style="WIDTH:75px;HEIGHT:35px">更新</button></td></tr>
  <tr>
  <table id="tbl3" border="1" bordercolor="#0000BD" style="margin:0px 3px 0px 3px; border-collapse: collapse">
   <tr align="center">
   <td bgcolor="#B1F9D0">予約番号<font size="1" color="#FF3366"><b>※</b></font></td><td bgcolor="#FFFF55">
    <input type="text"  name="yyk" style="font-family:HGゴシックM;text-align:center;font-weight:bold;background-color:#FFFF99"></td>
   <td bgcolor="#B1F9D0">予 約 日<font size="1" color="#FF3366"><b>※</b></font></td><td>
    <input type="date"  name="yyb" style="font-family:HGゴシックM;text-align:center" class="calendar"></div></td>
   <td bgcolor="#B1F9D0">来店時刻<font size="1" color="#FF3366"><b>※</b></font></td><td>
    <input type="date"  name="rai" style="font-family:HGゴシックM;text-align:center"></td></tr>
   <tr align="center">
   <td bgcolor="#B1F9D0">状__況</td><td>
    <select name="selJyo" style="font-family:HGゴシックM">
    <option value="予約" selected>予約</option>
    <option value="保留">保留</option>
    <option value="来店">来店</option>
    <option value="済み">済み</option>
    <option value="キャンセル">キャンセル</option>
    </select></td>
   <td bgcolor="#B1F9D0">お客様名<font size="1" color="#FF3366"><b>※</b></font></td><td colspan="3" align="left">
    <input type="text"  name="sam" style="font-family:HGゴシックM;text-align:left" size="52"></td></tr>
   <tr align="center">
   <td bgcolor="#B1F9D0">人__数</td><td>
    <input type="number" name="nin" style="font-family:HGゴシックM;text-align:center" size="14">名様</td>
   <td bgcolor="#B1F9D0">代表者名</td><td>
    <input type="text"  name="dai" style="font-family:HGゴシックM;text-align:center"></td>
   <td bgcolor="#B1F9D0">連絡(TEL)</td><td>
    <input type="text"  name="tel" style="font-family:HGゴシックM;text-align:center"></td></tr>
   <tr align="center">
   <td bgcolor="#B1F9D0">住__所</td><td colspan="5" align="left">
    <input type="text"  name="pno" style="font-family:HGゴシックM;text-align:center" size="9"
    onKeyUp="AjaxZip3.zip2addr(this,'','adr','adr');">
    <input type="text"  name="adr" style="font-family:HGゴシックM;text-align:left"  size="73"></td></tr>
   <tr align="center">
   <td bgcolor="#C2EEFF">オーダ1</td><td colspan="3">
    <select id="selOd1" style="font-family:HGゴシックM"></select>
   </td><td bgcolor="#C2EEFF">食数</td><td>
    <input type="number" name="os1" style="font-family:HGゴシックM;text-align:center"></td></tr>
   <tr align="center">
   <td bgcolor="#C2EEFF">オーダ2</td><td colspan="3">
    <select name="selOd2" style="font-family:HGゴシックM"></select>
   </td><td bgcolor="#C2EEFF">食数</td><td>
    <input type="number" name="os2" style="font-family:HGゴシックM;text-align:center"></td></tr>
   <tr align="center">
   <td bgcolor="#C2EEFF">オーダ3</td><td colspan="3">
    <select name="selOd3" style="font-family:HGゴシックM"></select>
   </td><td bgcolor="#C2EEFF">食数</td><td>
    <input type="number" name="os3" style="font-family:HGゴシックM;text-align:center"></td></tr>
   <tr align="center">
   <td bgcolor="#C2EEFF">オーダ4</td><td colspan="3">
    <select name="selOd4" style="font-family:HGゴシックM"></select>
   </td><td bgcolor="#C2EEFF">食数</td><td>
    <input type="number" name="os4" style="font-family:HGゴシックM;text-align:center"></td></tr>
   <tr align="center">
   <td bgcolor="#C2EEFF">オーダ5</td><td colspan="3">
    <select name="selOd5" style="font-family:HGゴシックM"></select>
   </td><td bgcolor="#C2EEFF">食数</td><td>
    <input type="number" name="os5" style="font-family:HGゴシックM;text-align:center"></td></tr>
   <tr align="center"> 
   <td bgcolor="#D9E5FF">対応状況</td><td>
    <select name="selTai" style="font-family:HGゴシックM">
    <option value="未処理" selected>未処理</option>
    <option value="処理済み">処理済み</option>
    <option value="断り">断り</option>
    <option value="その他">その他</option>
    </select></td>
   <td bgcolor="#D9E5FF">備__考 </td><td colspan=3 align="left">
    <input type="text"  name="bko1" style="font-family:HGゴシックM" size="52"></td></tr>
   <tr align="center">
   <td bgcolor="#D9E5FF">ご 評 価</td><td>
    <select name="selHyo" style="font-family:HGゴシックM">
    <option value="良好">良好</option>
    <option value="普通" selected>普通</option>
    <option value="不満">不満</option>
    <option value="クレーム">クレーム</option>
    <option value="不明">不明</option>
    <option value="その他">その他</option>
    </select></td>
   <td bgcolor="#D9E5FF">受 付 者</td><td>
    <input type="text"  name="tan" style="font-family:HGゴシックM;text-align:center"></td>
   <td bgcolor="#D9E5FF">受付日時</td><td>
    <input type="date"  name="ukj" style="font-family:HGゴシックM;text-align:center"></td></tr>
  </table></tr>
  <tr><td><font size="1" color="#FF3366"><b>※</b></font><font size="2" color="#000000">は必須項目</font></tr>
 </table>
</div>
</form>
</div>

<div id="t-2" align="left">
<br><br>
<form name="myForm2">
<div id="frm3">
 <table id="tbl4" border="1" bordercolor="#00AA00" style="margin:0px 3px 0px 3px; border-collapse: collapse">
  <tr bgcolor="#AEFFBD"><td colspan="3"></td><td colspan="2" align="center"><a href="#" onClick="go_NewRec2()">新規追加</a></td>
  </tr>
  <tr align="center">
  <td bgcolor="#AEFFBD" id="X0">&nbsp;コースID&nbsp;</td>
  <td bgcolor="#AEFFBD" id="X1">&nbsp;コ ー ス 名&nbsp;</td>
  <td bgcolor="#AEFFBD" id="X2">&nbsp;単_価&nbsp;</td>
  <td bgcolor="#AEFFBD" id="X3">&nbsp;登 録 日&nbsp;</td>
  <td bgcolor="#AEFFBD" id="X4">&nbsp;可否&nbsp;</td>
  </tr>
  <tbody id="tbdy2" align="center">
  </tbody>
 </table>
</div>
<div id="frm4" hidden>
 <table id="tbl5" border=0>
  <tr>
  <td align=left nowrap> <button id="一覧2" onClick="go_ListPage2()" style="WIDTH:75px;HEIGHT:35px">一覧</button></td>
  <td align=left nowrap>_<button id="登録2" onClick="func_insRec2()" style="WIDTH:75px;HEIGHT:35px">登録</button></td>
  <td align=left nowrap>_<button id="更新2" onClick="func_updRec2()" style="WIDTH:75px;HEIGHT:35px">更新</button></td></tr>
  <tr>
  <table id="tbl6" border="1" bordercolor="#000000" style="margin:0px 1px 0px 1px; border-collapse: collapse">
   <tr align="center">
   <td bgcolor="#E4FF8D">&nbsp;コースID&nbsp;</td><td>
    <input type="text"  name="cid" style="font-family:HGゴシックM;text-align:center;width=100" size="10"></td>
   <td bgcolor="#E4FF8D">&nbsp;登 録 日&nbsp;</td><td>
    <input type="date"  name="trk" style="font-family:HGゴシックM;text-align:center" class="calendar" size="10"></td>
   <td bgcolor="#E4FF8D">&nbsp;廃 止 日&nbsp;</td><td>
    <input type="date"  name="hai" style="font-family:HGゴシックM;text-align:center" class="calendar" size="10"></td>
   <tr align="center">
   <td bgcolor="#E4FF8D">&nbsp;コース名<font size="1" color="#FF3366"><b>※</b></font>&nbsp;</td><td colspan="3" align="left">
    <input type="text"  name="cnm" style="font-family:HGゴシックM;font-weight:bold" size="45"></td>
   <td bgcolor="#E4FF8D">受付可否</td><td>
    <input type="radio" name="kah" value="可" checked>可&nbsp;
    <input type="radio" name="kah" value="否">否
    </td></tr>
   <tr align="center">
   <td bgcolor="#E4FF8D">&nbsp;概_要<font size="1" color="#FF3366"><b>※</b></font>&nbsp;</td><td colspan="5" align="right">
    <textarea      name="gai" rows="10" cols="75"></textarea></td></tr>
   <tr align="center">
   <td bgcolor="#E4FF8D">単__価</td><td>
   ¥<input type="number" name="tnk" style="font-family:HGゴシックM;text-align:center" size="6"></td>
   <td bgcolor="#E4FF8D">標 準 数</td><td>
    <input type="number" name="suu" style="font-family:HGゴシックM;text-align:right" size="6"> 食/日</td>
   <td bgcolor="#E4FF8D">画__像</td><td>
    <input type="text"  name="gzo" style="font-family:HGゴシックM"></td></tr>
   <tr align="center">
   <td bgcolor="#E4FF8D">イメージ</td><td colspan=5 align="center">
    <img id="gzoimg" src="DUMMY.jpg" width="615"></td></tr>
   <tr align="center"> 
   <td bgcolor="#E4FF8D">備__考 </td><td colspan=5 align="left">
    <input type="text"  name="bko2" style="font-family:HGゴシックM" size="76"></td></tr>
  </table></tr>
  <tr><td><font size="1" color="#FF3366"><b>※</b></font><font size="2" color="#000000">は必須項目</font></tr>
 </table>
</div>
</form>
</div>

<div id="t-3" align="left">
<br><br>
 <div id="mdb"><button onClick="makemdb()"   style="WIDTH:180px">D B 生 成 </button></div><br>
 <div id="tbl"><button onclick="maketable()"  style="WIDTH:180px">テーブル作成</button></div><br>
 <div id="rec"><button onclick="addnewrecord()" style="WIDTH:180px">レコード追加</button></div><br>
 <div id="nni"><button onClick="kakunin()"   style="WIDTH:180px">任意ページへ</button></div><br>

// コメント①に続く

コメント一覧

ブログオーナー
修正③ の改良再
やってみるものですね
(探してみるものです、ネット検索)

SendKeysという方法で、
プレビュー画面をいきなり出すことが出来ました。
当初のイメージ通りです。

***< RESTRANT_LIST.hta >**********************
<html>
<head>
<hta:application id="rList" navigable="no" scroll="auto">
</hta:application>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>レストラン予約リスト</title>
<script language="JavaScript" type="text/javascript">
var mdb = "RESTRANT.mdb";
var yyb = ""; // 予約日
/* ==================================================
 予約リスト印刷
===================================================== */
function print_yoyakuList(){
 yyb = rList.commandLine;
 if (yyb.slice(-5,-2) == 'hta') {
  yyb = "";
 } else {
  yyb = yyb.slice(-10);
 }
 var cn = new ActiveXObject("ADODB.Connection");
 cn.Open("Driver={Microsoft Access Driver (*.mdb)};DBQ=" + mdb);
 var mySql = "SELECT 予約ID,format(来店時刻,'HH:MM'),お客様名,人数,状況,";
 maSql  += "代表者名,TEL,郵便番号,住所,format(予約日,'MM/DD') FROM ご予約";
 if (yyb != "") { mySql += " WHERE 予約日 = #" + yyb + "#"; }
 mySql  += " ORDER BY 予約日 DESC,来店時刻";
 var tb = document.getElementById("tbdy");
 var rs = cn.Execute(mySql);
 var i = 0;
 while (!rs.EOF){
  tb.insertRow(i);
  for( var j = 0 ; j < 9 ; j++ ) {
   tb.rows[i].insertCell(j);
   tb.rows[i].cells[j].innerHTML    = rs(j).value + '&nbsp;';
   tb.rows[i].cells[j].style.whiteSpace = "nowrap";
  }
  tb.rows[i].cells[3].style.textAlign = "right";
  tb.rows[i].cells[7].style.textAlign = "right";
  if (yyb == "") {
   tb.rows[i].cells[1].innerHTML = rs(9).value + '&nbsp;' + rs(1).value + '&nbsp;'
  }
  rs.MoveNext();
  i++;
 }
 rs.Close();rs = null;
 cn.Close();cn = null;
 document.getElementById("listhd").innerHTML = "予約日:" + yyb;
 var shell = new ActiveXObject("WScript.Shell");
 shell.SendKeys("+{F10}N");
}
function PrintPreview(){
 alert("右クリックメニューより\n印刷プレビュー(N_)を選択して下さい!");
}
</script>
<style>
table { margin: 0px 0px; }
.tblth { border-bottom: 1px #000000 solid; }
@media print {
.print-off { display: none; }
}
</style>
</head>
<body bgcolor="#FFFFFF"><basefont face="HGゴシックM" COLOR="#000000">
<p id="listhd"></p>
 <table bgcolor="#FFFFFF"><tr align="left">
  <th class="tblth">予約ID&nbsp;</th>
  <th class="tblth">来店&nbsp;</th>
  <th class="tblth">お客様名&nbsp;</th>
  <th class="tblth" nowrap align="right">人数&nbsp;</th>
  <th class="tblth">状況&nbsp;</th>
  <th class="tblth">代表者&nbsp;</th>
  <th class="tblth">TEL&nbsp;</th>
  <th class="tblth" nowrap>郵便番号&nbsp;</th>
  <th class="tblth">住所&nbsp;</th></tr>

  <tbody id="tbdy" align="left">
  </tbody>

 </table>
 <a href="#" onClick="PrintPreview()" class="print-off">印刷</a>
 <a href="#" onClick="window.close()" class="print-off">閉じる</a>

<script>
 print_yoyakuList();
</script>
</body>
</html>
ブログオーナー
修正③ の改良
テーブル要素の編集を、配列型に変更しました。
若干、見やすくなったですかね?

<html>
<head>
<hta:application id="rList" navigable="no" scroll="auto">
</hta:application>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>レストラン予約リスト</title>
<script language="JavaScript" type="text/javascript">
var mdb = "RESTRANT.mdb";
var yyb = ""; // 予約日
/* ==================================================
 予約リスト印刷
===================================================== */
function print_yoyakuList(){
 yyb = rList.commandLine;
 if (yyb.slice(-5,-2) == 'hta') {
  yyb = "";
 } else {
  yyb = yyb.slice(-10);
 }
 var cn = new ActiveXObject("ADODB.Connection");
 cn.Open("Driver={Microsoft Access Driver (*.mdb)};DBQ=" + mdb);
 var mySql = "SELECT 予約ID,format(来店時刻,'HH:MM'),お客様名,人数,状況,代表者名,TEL,郵便番号,住所 FROM ご予約";
 if (yyb != "") { mySql += " WHERE 予約日 = #" + yyb + "#"; }
 mySql  += " ORDER BY 予約日 DESC,来店時刻";
 var tb = document.getElementById("tbdy");
 var rs = cn.Execute(mySql);
 var i = 0;
 while (!rs.EOF){
  tb.insertRow(i);
  for( var j = 0 ; j < 9 ; j++ ) {
   tb.rows[i].insertCell(j);
   tb.rows[i].cells[j].innerHTML    = rs(j).value + '&nbsp;';
   tb.rows[i].cells[j].style.whiteSpace = "nowrap";
  }
  tb.rows[i].cells[3].style.textAlign = "right";
  tb.rows[i].cells[7].style.textAlign = "right";
  rs.MoveNext();
  i++;
 }
 rs.Close();rs = null;
 cn.Close();cn = null;
 document.getElementById("listhd").innerHTML = "予約日:" + yyb;
 if (confirm("印刷しますか?")) {
  window.print();
 }
 window.close();
}
</script>
<style>
.tblth { border-bottom: 1px #000000 solid; }
</style>
</head>
<body bgcolor="#FFFFFF"><basefont face="HGゴシックM" COLOR="#000000">
<p id="listhd"></p>
 <table bgcolor="#FFFFFF"><tr align="left">
  <th class="tblth">予約ID&nbsp;</th>
  <th class="tblth">来店&nbsp;</th>
  <th class="tblth">お客様名&nbsp;</th>
  <th class="tblth" nowrap align="right">人数&nbsp;</th>
  <th class="tblth">状況&nbsp;</th>
  <th class="tblth">代表者&nbsp;</th>
  <th class="tblth">TEL&nbsp;</th>
  <th class="tblth" nowrap>郵便番号&nbsp;</th>
  <th class="tblth">住所&nbsp;</th></tr>

  <tbody id="tbdy" align="left">
  </tbody>

 </table>

<script>
 print_yoyakuList();
</script>
</body>
</html>
ブログオーナー
修正③ 予約リストHTAの追加
いろいろやって見たのですが、
サブウインドウの制御が難しいので(よく分からない)、
リスト用のHTAを別に起動してそっちで編集、Print()を行うという方法も考えてみました。
htaとしては、本来こうあるべきなのかも知れません。

// 以下のfunction を追加
**< RESTRANT.hta >***********************************
/* ==================================================
  サブウインドウより予約リストを印刷
===================================================== */
function print_yoyakuList(){
 var shell = new ActiveXObject("WScript.Shell");
 shell.run("RESTRANT_LIST.hta" + " " + yyb);
}

// 以下のHTA を追加
**< RESTRANT_LIST.hta >******************************
<html>
<head>
<hta:application id="rList" navigable="no" scroll="auto">
</hta:application>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>レストラン予約リスト</title>
<script language="JavaScript" type="text/javascript">
var mdb = "RESTRANT.mdb";
var yyb = ""; // 予約日
/* ==================================================
 予約リスト印刷
===================================================== */
function print_yoyakuList(){
 yyb = rList.commandLine;
 if (yyb != "") { yyb = yyb.slice(-10); }
 var cn = new ActiveXObject("ADODB.Connection");
 cn.Open("Driver={Microsoft Access Driver (*.mdb)};DBQ=" + mdb);
 var mySql = "SELECT 予約ID,format(来店時刻,'HH:MM'),お客様名,人数,状況,代表者名,TEL,郵便番号,住所 FROM ご予約";
 if (yyb != "") { mySql += " WHERE 予約日 = #" + yyb + "#"; }
 mySql  += " ORDER BY 予約日 DESC,来店時刻";
 var table = document.getElementById("tbdy");
 var rs  = cn.Execute(mySql);
 while (!rs.EOF){
  var row  = table.insertRow(-1);
  var cell0 = row.insertCell(-1); cell0.style.whiteSpace = "nowrap";
  var cell1 = row.insertCell(-1); cell1.style.whiteSpace = "nowrap";
  var cell2 = row.insertCell(-1); cell2.style.whiteSpace = "nowrap";
  var cell3 = row.insertCell(-1); cell3.style.whiteSpace = "nowrap";
  var cell4 = row.insertCell(-1); cell4.style.whiteSpace = "nowrap";
  var cell5 = row.insertCell(-1); cell5.style.whiteSpace = "nowrap";
  var cell6 = row.insertCell(-1); cell6.style.whiteSpace = "nowrap";
  var cell7 = row.insertCell(-1); cell7.style.whiteSpace = "nowrap";
  var cell8 = row.insertCell(-1);
  cell0.innerHTML = rs(0).value;     // 予約ID
  cell1.innerHTML = ' ' + rs(1).value; // 来店時刻
  cell2.innerHTML = ' ' + rs(2).value; // お客様名
  cell3.innerHTML = '<div align="right">'
              + rs(3).value + '</div>'; // 人数
  cell4.innerHTML = ' ' + rs(4).value; // 状況
  cell5.innerHTML = ' ' + rs(5).value; // 代表者名
  cell6.innerHTML = ' ' + rs(6).value; // TEL
  cell7.innerHTML = ' ' + rs(7).value; // 郵便番号
  cell8.innerHTML = rs(8).value;     // 住所
  rs.MoveNext();
 }
 rs.Close();rs = null;
 cn.Close();cn = null;
 document.getElementById("listhd").innerHTML = "予約リスト:" + yyb;
 if (confirm("印刷しますか?")) {
  window.print();
 }
 window.close();
}
</script>
<style>
.tblth { border-bottom: 1px #000000 solid; }
</style>
</head>
<body bgcolor="#FFFFFF"><basefont face="HGゴシックM" COLOR="#000000">
<p id="listhd"></p>
 <table bgcolor="#FFFFFF"><tr align="left">
  <th class="tblth">予約ID</th>
  <th class="tblth"> 来店</th>
  <th class="tblth"> お客様名</th>
  <th class="tblth" nowrap align="right">人数</th>
  <th class="tblth"> 状況</th>
  <th class="tblth"> 代表者</th>
  <th class="tblth"> TEL</th>
  <th class="tblth" nowrap> 郵便番号&nbsp;</th>
  <th class="tblth">住所</th></tr>

  <tbody id="tbdy" align="left">
  </tbody>

 </table>

<script>
 print_yoyakuList();
</script>
</body>
</html>
⇒画像
修正② リスト印刷機能の追加再
http://blogimg.goo.ne.jp/user_image/02/17/aaf4cc63a3be8596c1d9a951f4791b03.jpg
サブウインドウではなく、自ウインドウ下部に、リストを展開し
印刷しない部分を隠して、印刷させるやり方でやってみました。

印刷ダイアログは出るようにはなりましたが、
サブウインドウより、少々遅い気がします・・・(うーむ)

http://blogimg.goo.ne.jp/user_image/02/17/aaf4cc63a3be8596c1d9a951f4791b03.jpg

/* ==================================================
  予約リスト印刷
===================================================== */
function print_yoyakuList(){
 var cn = new ActiveXObject("ADODB.Connection");
 cn.Open("Driver={Microsoft Access Driver (*.mdb)};DBQ=" + mdb);
 var mySql = "SELECT 予約ID,format(来店時刻,'HH:MM'),お客様名,人数,状況,代表者名,TEL,郵便番号,住所 FROM ご予約";
 if (yyb != "") { mySql += " WHERE 予約日 = #" + yyb + "# ORDER BY 来店時刻"; }
 var rs  = cn.Execute(mySql);
 var tmp = '<p>' + yyb + ' 予約者リスト</p><table bgcolor="#FFFFFF">';
 tmp += '<tr class="th-bottom" align="left"><th class="th-bottom">予約ID</th><th class="th-bottom"> 時刻</th>';
 tmp += '<th class="th-bottom"> お客様名</th><th class="th-bottom" nowrap align="right">人数</th>';
 tmp += '<th class="th-bottom"> 状況</th><th class="th-bottom"> 代表者</th><th class="th-bottom"> TEL</th>';
 tmp += '<th class="th-bottom" nowrap> 郵便番号</th><th class="th-bottom">&nbsp;住所</th></tr>';
 while (!rs.EOF){
  tmp += '<tr><td nowrap>' + rs(0).value + '</td>';      // 予約ID
  tmp += '<td nowrap> ' + rs(1).value + '</td>';       // 来店時刻
  tmp += '<td nowrap> ' + rs(2).value + '</td>';       // お客様名
  tmp += '<td nowrap align="right">' + rs(3).value + '</td>'; // 人数
  tmp += '<td nowrap> ' + rs(4).value + '</td>';       // 状況
  tmp += '<td nowrap> ' + rs(5).value + '</td>';       // 代表者名
  tmp += '<td nowrap> ' + rs(6).value + '</td>';       // TEL
  tmp += '<td nowrap> ' + rs(7).value + '</td>';       // 郵便番号
  tmp += '<td nowrap>&nbsp;' + rs(8).value + '</td></tr>';  // 住所
  rs.MoveNext();
 }
 rs.Close();rs = null;
 cn.Close();cn = null;
 tmp += '\</table\>';
 document.getElementById("t-4").innerHTML = tmp;
 document.getElementById("tab_area").style.display="none";
 document.getElementById("t-4").style.display="block";
 window.print();
 alert("予約リストを印刷します!");
 document.getElementById("t-4").style.display="none";
 document.getElementById("tab_area").style.display="block";
}

// (中略)↓は、Body部先頭付近部分 ★の行を修正

<div id="frm1">
 <table id="tbl1" border="1" bordercolor="#0000BD" style="margin:0px 3px 0px 3px; border-collapse: collapse">
  <tr bgcolor="#E0FFFF"><td colspan="3">&nbsp;予約日&nbsp;
  <select name="selYYB" onchange="go_ReLoad1()" style="font-family:HGゴシックM"></select></td>
  <td colspan="2" align="center">
★ <a href="#" onClick="print_yoyakuList()">印刷</a> <a href="#" onClick="go_NewRec1()">新規追加</a></td>
  </tr>

// (中略)↓は、Body部末端の部分 ★の行を追加

<div id="t-3" align="left">
<br><br>
 <div id="mdb"><button onClick="makemdb()"   style="WIDTH:180px">D B 生 成 </button></div><br>
 <div id="tbl"><button onclick="maketable()"  style="WIDTH:180px">テーブル作成</button></div><br>
 <div id="rec"><button onclick="addnewrecord()" style="WIDTH:180px">レコード追加</button></div><br>
 <div id="nni"><button onClick="kakunin()"   style="WIDTH:180px">任意ページへ</button></div><br>
 <div id="cls"><button onClick="window.close()" style="WIDTH:180px">閉 じ る </button></div>
</div>
</div>
★<div id="t-4"></div>
<script>
 func_init();
</script>
</body>
</html>
ブログオーナー
追加① 印刷機能の解決は・・・
その後、いろいろ試した結果で言うと
HTA とwindow.print() の相性みたいです。

HTA の拡張子を HTMLにすれば
印刷ダイアログが出るようになります。
但し、そうすると、MDBの処理が出来ない。

一応、サブウインドウを開くところは出来ているので
メニューから、手動で印刷するということで
運用回避です。

プレビューを出す等
解決方法がありましたら、
是非、コメントを下さい。
(あるいは、HTAが原因ではないよというのではあればそのご指摘でも・・・こう書けば解決という方法も)
ブログオーナー
追加① 印刷機能
サブウインドウをPRINT()することで
予約者リストを印刷するロジックを考えてみましたが・・・
↓うまく行きません。IE9とドライバの不整合か何か? 2度実行すると、出来たりします(何故?)
何がよくないのでしょう???


/* ==================================================
  サブウインドウを開いて印刷する
===================================================== */
function print_yoyakuList(){
 var options = "menubar=0,toolbar=0,location=0,titlebar=0,status=0";
 subWin = window.open("","temp",options);
 subWin.document.open();
 var cn = new ActiveXObject("ADODB.Connection");
 cn.Open("Driver={Microsoft Access Driver (*.mdb)};DBQ=" + mdb);
 var mySql = "SELECT 予約ID,format(来店時刻,'HH:MM'),お客様名,人数,状況,TEL,郵便番号,住所 FROM ご予約";
 if (yyb != "") { mySql += " WHERE 予約日 = #" + yyb + "# ORDER BY 来店時刻 DESC"; }
 var rs = cn.Execute(mySql);
 var tmp = '<p>' + yyb + ' 予約者リスト</p><table>';
 tmp += '<tr align="left"><th>予約ID</th><th> 時刻</th><th> お客様名</th><th nowrap align="right">人数</th>';
 tmp += '<th> 状況</th><th> TEL</th><th nowrap> 郵便番号</th><th>&nbsp;住所</th></tr>';
 while (!rs.EOF){
  tmp += '<tr><td nowrap>' + rs(0).value + '</td>';      // 予約ID
  tmp += '<td nowrap> ' + rs(1).value + '</td>';       // 来店時刻
  tmp += '<td nowrap> ' + rs(2).value + '</td>';       // お客様名
  tmp += '<td nowrap align="right">' + rs(3).value + '</td>'; // 人数
  tmp += '<td nowrap> ' + rs(4).value + '</td>';       // 状況
  tmp += '<td nowrap> ' + rs(5).value + '</td>';       // TEL
  tmp += '<td nowrap> ' + rs(6).value + '</td>';       // 郵便番号
  tmp += '<td nowrap>&nbsp;' + rs(7).value + '</td></tr>';  // 住所
  rs.MoveNext();
 }
 tmp += '</table>';
 subWin.document.write(tmp);
 rs.Close();rs = null;
 cn.Close();cn = null;
 window.focus();
 if (confirm("印刷しますか?")) {
  subWin.print();
  subWin.focus();
 } else {
  alert("印刷処理はキャンセルされました!");
  subWin.close();
 }
}

//(中略)

<body bgcolor="#4169E1" style="filter: progid:DXImageTransform.Microsoft.Gradient
 (GradientType=0, StartColorStr='#B0C4DE', EndColorStr='#4169E1')"><basefont face="HGゴシックM" COLOR="#191970">
<div id="tab_area">
<ul>
 <li><a href="#t-1" id="li-1">RESERVATION</a></li>
 <li><a href="#t-2" id="li-2">COURCE MAST</a></li>
 <li><a href="#t-3" id="li-3">MDB SETTING</a></li>
</ul>
<div id="t-1">
<br><br>
<form name="myForm1">
<div id="frm1">
 <table id="tbl1" border="1" bordercolor="#0000BD" style="margin:0px 3px 0px 3px; border-collapse: collapse">
  <tr bgcolor="#E0FFFF"><td colspan="3">&nbsp;予約日&nbsp;
  <select name="selYYB" onchange="go_ReLoad1()" style="font-family:HGゴシックM"></select></td>
  <td colspan="2" align="center">
★ <a href="#" onClick="print_yoyakuList()">印刷</a> <a href="#" onClick="go_NewRec1()">新規追加</a></td>
  </tr>
ブログオーナー
コメント①
// 本文より続く

 <div id="cls"><button onClick="window.close()" style="WIDTH:180px">閉_じ_る_</button></div>
</div>
</div>
<script>
 func_init();
</script>
</body>
</html>
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

※ブログ作成者から承認されるまでコメントは反映されません。

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最新の画像もっと見る

最近の「HTA」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事