彰化一整天的論壇

 找回密碼
 立即註冊
樓主: imingho

如何設計訂單查詢系統_日期區間顯示加多筆更新狀況

[複製鏈接]
發表於 2021-2-23 05:12:10 | 顯示全部樓層
imingho 發表於 2021-2-19 20:51
幫您錄了一個解說版本,請參考.
【Google表單教學】if跟switch的差異
http://discuz.bestdaylong.com/thr ...

謝謝板主 耐心且花心思的講解,
現在有些觀念了。
後續在寫時,最基本有觀念跟注意事項也較為清楚
回復 支持 反對

使用道具 舉報

發表於 2021-2-26 05:49:54 | 顯示全部樓層
imingho 發表於 2021-2-18 13:55
switch只能用一個變數去判斷,後面的case就是那個變數等於的值。
if就比較彈性,可用一個變數或多個不同 ...

謝謝板主
今天測試,已改用if方式篩選後,已完成
大致上的寫法是用如下:
  1. if(((a!="" && b!="")||(a!='' && b!='')) && c=="" && d==''){
  2. if(e=="" && e!=-1){
  3. }
  4. }else if(((a=="" && b=="")||(a=='' && b=='')) && c=="" && d!=''){
  5. if(e=="" && e!=-1){
  6. }
  7. }else if(((a=="" && b=="")||(a!='' && b!='')) && c!="" && d==''){
  8. if(e=="" && e!=-1){
  9. }
  10. }
複製代碼
回復 支持 反對

使用道具 舉報

發表於 2021-5-16 16:02:20 | 顯示全部樓層
請問如果希望開始日期和結束日期在同一天,程式要如何修改才能正常運作?另外相近的日期,例如下圖的狀況,會導致狀態無法更新,請問是否有改善的方法?因為有點急,希望早日得到您的回應,感謝您!

描述

描述
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-5-16 22:01:07 | 顯示全部樓層
本帖最後由 imingho 於 2021-5-16 23:00 編輯
playhtm 發表於 2021-5-16 16:02
請問如果希望開始日期和結束日期在同一天,程式要如何修改才能正常運作?另外相近的日期,例如下圖的狀況, ...

我剛剛查了,是因為我將日期改成date所造成.
目前測試用
2020-2-1是可以查到。
但是2020-02-01就會有問題(會自動加8小時)才會造成找不到,您若要使用請把date先改成text.
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-5-16 22:54:54 | 顯示全部樓層
本帖最後由 imingho 於 2021-5-17 11:52 編輯
imingho 發表於 2021-5-16 22:01
我剛剛查了,是因為我將日期改成date所造成.
目前測試用
2020-2-1是可以查到。

您可以看一下底下這篇文章.
https://blog.techbridge.cc/2020/ ... -time-and-timezone/
淺談 JavaScript 中的時間與時區處理


https://blog.miniasp.com/post/20 ... te-usage-in-details
前端工程研究:關於 JavaScript 中 Date 型別的常見地雷與建議作法
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-5-17 14:34:09 | 顯示全部樓層
本帖最後由 imingho 於 2021-5-18 09:21 編輯
imingho 發表於 2021-5-16 22:54
您可以看一下底下這篇文章.
https://blog.techbridge.cc/2020/ ... -time-and-timezone/
淺談 JavaScript  ...

底下這篇是我修改過,用日期作選取,最後將2020-02-01把它取代成2020/02/01
http://bestdaylong.com/html/OrderInqDate.htm  範例


  1. <html>
  2. <head>
  3. <meta charset="UTF-8" />
  4. <script type="text/javascript">
  5. Date.prototype.format = function(fmt)
  6. {
  7.   var o = {
  8.     "M+" : this.getMonth()+1, //月份
  9.     "d+" : this.getDate(), //日
  10.     "h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12, //小時
  11.     "H+" : this.getHours(), //小時
  12.     "m+" : this.getMinutes(), //分
  13.     "s+" : this.getSeconds(), //秒
  14.     "q+" : Math.floor((this.getMonth()+3)/3), //季度
  15.     "S" : this.getMilliseconds() //毫秒
  16.   };
  17.   if(/(y+)/.test(fmt))
  18.     fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
  19.   for(var k in o)
  20.     if(new RegExp("("+ k +")").test(fmt))
  21.   fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
  22.   return fmt;
  23. }

  24. var dateReviver = function (key, value) {
  25.     var a;
  26.     if (typeof value === 'string') {
  27.         a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
  28.         if (a) {
  29.             return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6])).format("yyyy-MM-dd HH:mm:ss");
  30.         }
  31.     }
  32.     return value;
  33. };
  34. function inq()
  35. {
  36. var xmlhttp;

  37.         if (window.XMLHttpRequest)
  38.           {// code for IE7+, Firefox, Chrome, Opera, Safari
  39.           xmlhttp=new XMLHttpRequest();
  40.           }
  41.         else
  42.           {// code for IE6, IE5
  43.           xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  44.           }
  45.         xmlhttp.onreadystatechange=function()
  46.           {
  47.                   if (xmlhttp.readyState==4 && xmlhttp.status==200)      
  48.                   {
  49.                         var result=xmlhttp.responseText;
  50.                         var obj = JSON.parse(result,dateReviver);//解析json字串為json物件形式
  51.                                                 
  52.                         var html = '<table border=1 width=100%>';//
  53.                         
  54.                         for (var i = 0; i < obj.length; i ++ ) {//
  55.                                 html  += '<tr>';//
  56.                                                                 if(i==0)
  57.                                                                   html+="<td>編號</td>";
  58.                                                                 else
  59.                                                                   html+="<td>"+'<input type=checkbox id="OrderID" value="'+obj[i].data[0]+'">'+i+"</td>";
  60.                                 for(j=0;j<obj[i].data.length;j++)
  61.                                 {
  62.                                   html+= '<td>'+obj[i].data[j]+'</td>';
  63.                                 }
  64.                                 html  += '</tr>';            
  65.                         }
  66.                         html+="</table>";
  67.                         
  68.                         document.getElementById("order_status").innerHTML=html;
  69.                         if(obj.length==1) //只有一筆代表查不到資料
  70.                                 alert('查無資料');
  71.                   }

  72.           }
  73.     var url="https://script.google.com/macros/s/AKfycbyMDS_J4RJXRn3cP24tzXz3jt_BJijoXZDpXepUBWP_zoUY1oYfpZ8BUv1satUc8jbZmA/exec";
  74.         
  75.         var OrderID_list="";
  76.                 if (typeof(OrderID) !== 'undefined')
  77.                 {
  78.                         for (var i = 0; i < OrderID.length; i++) {
  79.                           if (OrderID[i].checked) {
  80.                                         OrderID_list += OrderID[i].value + ",";
  81.                           }
  82.                         }
  83.                         if(OrderID_list.length>0)
  84.                            OrderID_list=OrderID_list.substr(0,OrderID_list.length-1);
  85.                         if(Array.isArray(OrderID)==false)//單一個選項
  86.                                 OrderID_list=OrderID.value;
  87.                 }
  88.                 var strBeginDate=BeginDate.value;
  89.                 var strEndDate=EndDate.value;
  90.                 strBeginDate=strBeginDate.replace(/-/g,'/');
  91.                 strEndDate=strEndDate.replace(/-/g,'/');
  92.                
  93.                 url+="?BeginDate="+strBeginDate+"&EndDate="+strEndDate+"&OrderID="+OrderID_list+"&OrderStatus="+OrderStatus.value;
  94.                 console.log(url);
  95.         xmlhttp.open("get",url,true);
  96.         xmlhttp.send();
  97. }

  98. </script>
  99. </head>
  100. <body>
  101. 輸入開始訂購日期:<input type="date" id="BeginDate" value="2020-02-01" /><br/>
  102. 輸入結束訂購日期:<input type="date" id="EndDate" value="2020-02-10" /><br/>

  103. 訂單狀況:<input type="text" id="OrderStatus" value="" /><br/>
  104. <input type="button" name="inq" value="查詢/更新" onclick="inq();"></br>
  105. <span id="order_status"></span>
  106. </body>
  107. </html>
複製代碼
回復 支持 反對

使用道具 舉報

發表於 2021-5-17 22:52:06 | 顯示全部樓層
非常謝謝站長,解決了能讓開始和結束為同一天能搜尋到的問題,幫助非常大。但是下圖的情況似乎無法更新狀態。另外想請問,用日期作選取,不會讓同一天的不同訂單都一起更新狀態吧。

狀況

狀況
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-5-18 09:21:59 | 顯示全部樓層
playhtm 發表於 2021-5-17 22:52
非常謝謝站長,解決了能讓開始和結束為同一天能搜尋到的問題,幫助非常大。但是下圖的情況似乎無法更 ...

已更新單一筆更新問題,請再重試看看。
回復 支持 反對

使用道具 舉報

發表於 2021-5-18 09:46:37 | 顯示全部樓層
太好了,順利更新狀態,非常謝謝您!這裡ˋ不但有問題可以發問和分享,還可以購物,真的超棒的!
回復 支持 反對

使用道具 舉報

發表於 2021-7-9 17:32:24 | 顯示全部樓層
目前發現以上如果顯示兩筆以上,勾選時不會更新資料,能再請問您一下嗎,非常謝謝您。
新發現.PNG
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

Archiver|手機版|小黑屋|彰化一整天的論壇(Excel,Office)

GMT+8, 2021-9-21 15:33 , Processed in 0.110916 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回復 返回頂部 返回列表