台灣最大程式設計社群網站
線上人數
1336
 
會員總數:244807
討論主題:188842
歡迎您免費加入會員
討論區列表 >> 網站經營 / 合夥 / 證照 >> 請各位幫忙看看這樣的難題應如何解決?
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請各位幫忙看看這樣的難題應如何解決?
價值 : 100 QP  點閱數:2354 回應數:12

樓主

maiko
初學者
10 15
284 41
發送站內信

公司要求要做一個行車哩數的資料庫,要求:在每部車加滿油後把行車的公里數記錄下來,然後在第二次加滿油時把行車的公里數記錄下來,與上次的行車公里數對比,把相差的公里數記錄下來,然後看看每次加油後的行車公里數相差有多少。

現在已經做了一個access的資料庫和ASP的表單:
日期   車號   本次哩數   上次哩數   行車哩數   備注

因為第一次的加油不知道總共行車用了多少公里數,要在第二次加油時才知道,現在問題是如何把第二次加油時的公里數加到「上次哩數」裡面,同時第二次的公里數也是成為第三次的公里數的「上次哩數」,請問要怎樣通過用SQL或者JAVASCRIPT才能做到這一點?感激不盡!

本篇文章發表於2010-03-09 18:14
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

maiko
檢舉此回應
上面貼的有些錯誤,現在補充如下:

公司要求要做一個行車哩數的資料庫,要求:在每部車加滿油後把行車的公里數記錄下來,然後在第二次加滿油時把行車的公里數記錄下來,與上次的行車公里數對比,把相差的公里數記錄下來,然後看看每次加油後的行車公里數相差有多少。

現在已經做了一個access的資料庫和ASP的表單:
日期     車號   本次哩數   上次哩數   行車哩數   備注
2010-2-25  A1    1200*    ......     ......
2010-3-01  A1    2300    1200*    1100*
2010-3-05  A1    3450    2300     1150

因為第一次的加油不知道總共行車用了多少公里數,要在第二次加油時才知道,現在問題是如何把第一次加油時的公里數加到第二次的「上次哩數」裡面,同時第二次的公里數也是成為第三次的公里數的「上次哩數」,請問要怎樣通過用SQL或者JAVASCRIPT才能做到這一點?感激不盡!

PS:已經在ASP的表單裡的欄位中自動計算出來「行車哩數」,所以這個知道怎麼做,只是如何的把上面問題的情況與數據庫連接起來不知道怎麼做,一般我的理解是做一次輸入一次,可是這次的問題是涉及到要修改上一次的資料和更新下一次的資料同時進行,真的不知道要怎麼做,請各位耐心教導,感激不盡!
本篇文章回覆於2010-03-09 18:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

那顆爛蔥
捐贈 VP 給 那顆爛蔥 檢舉此回應
跟SQL跟Javascript似乎沒啥關聯...

輸入完這次的里程數,送進資料庫前,
ASP拉出上一次的里程數,算出差值,
接下來就是把這次的里程數跟差值塞進資料庫裡,成為正式資料的一筆

如果是要在輸入"本次哩數"的表單裡顯示"上次哩數"
那就拉出上一次輸入的資料,放進表單顯示,就知道啦?

也許資料規劃的方式,可以做點改變
因為不需要特意存"差值"
感覺上是把簡單的思考方式給複雜化了
本篇文章回覆於2010-03-11 13:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

maiko
檢舉此回應
即使不用「差值」,可是也要把「本次哩數」和「上次哩數」輸入進資料庫的每一筆中,才可以計算「差值」,因為在最後一次的加油並不知道這次加油後的行使哩數有多少,可是最後一次加油卻是為上次加油提供了行使多少哩數條件,所以要如何的把最後一次加油的哩數輸入進上次加油的「本次哩數」,也同時輸入進最後一次加油的「上次哩數」中,這是關鍵,可是這個關鍵,請恕我能力差,並不會懂如何運用SQL或Javascript或ASP來設定,所以請求這裡各位高手能否提供具體的解決方法,謝謝!
本篇文章回覆於2010-03-11 13:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

那顆爛蔥
捐贈 VP 給 那顆爛蔥 檢舉此回應
這個真的不是能力差的問題
是邏輯上的問題

你原本的規劃是

X年X月X日 貓車1號 A里程 (B-A)差距
Y年Y月Y日 貓車1號 B里程 (C-B)差距
Z年Z月Z日 貓車1號 C里程

如果是我
我就會很單純的記錄

X年X月X日 貓車1號 A里程
Y年Y月Y日 貓車1號 B里程
Z年Z月Z日 貓車1號 C里程

要列報表時,再由程式去算出B-A的值,輸出在原本的A後面

或者是,你要在輸入表單後,去拉出貓車1號的最後一筆的里程,跟輸入的里程相減得到差距
去更新最後一筆資料的差距,然後新增這次的資料(沒有差距值)

話說
ASP,SQL,Javascript,你會哪一樣?
本篇文章回覆於2010-03-11 17:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

maiko
檢舉此回應
如果按照大大的思路去做的話:那麼要計算下一筆減去上一筆的程序應該怎麼做?請幫忙謝謝!

X年X月X日 貓車1號 A里程
Y年Y月Y日 貓車1號 B里程
Z年Z月Z日 貓車1號 C里程

本篇文章回覆於2010-03-12 08:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

那顆爛蔥
捐贈 VP 給 那顆爛蔥 檢舉此回應


你是認真的嗎??

真的,先告訴我一下
ASP,SQL,Javascript,你會哪一樣?
本篇文章回覆於2010-03-12 10:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

maiko
檢舉此回應
我是認真的。

ASP,SQL,Javascript,你會哪一樣?
ASP,SQL懂多一點,Javascript也會一點。

不過這三樣如果我遇到不懂的話,我也會先GooGle後問人,我是認真的想學習好寫網頁數據庫,謝謝!
本篇文章回覆於2010-03-12 20:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

那顆爛蔥
捐贈 VP 給 那顆爛蔥 檢舉此回應
呃...晚回了,抱歉,這幾天在搞些雜事(其實都在玩...Orz)

有辦法在ASP同時秀出整個table的資料吧?
通常不外乎用while或for迴圈吧?
讀出第一筆資料,印出來,
在進入第二輪之前,先將已經讀出來的第一筆資料丟進$predata裡
進入第二輪後,讀出了第二筆資料,印出來,
然後將這筆資料的里程欄位減去$predata裡的里程欄位,就得到的這第二筆資料跟第一筆資料的里程差,印出來
在進入第三輪之前,先將已經讀出來的第二筆資料丟進$predata裡
進入第三輪後,讀出了第三筆資料,印出來,
然後將這筆資料的里程欄位減去$predata裡的里程欄位,就得到的這第三筆資料跟第二筆資料的里程差,印出來
後續以此類推...

這樣,有沒有大概或許了解這個邏輯???
本篇文章回覆於2010-03-16 20:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

那顆爛蔥
捐贈 VP 給 那顆爛蔥 檢舉此回應
或者是
輸入這次里程跟時間,是個表單嘛?
先讀出上一次的值,放進<input type=hidden name=predata value='xxxxx'>
送出表單後,由ASP計算這次輸入的值跟predata的差值後,一併塞進資料庫
這個是比較不太需要啥邏輯的做法
到時列出來時,啥計算跟邏輯都免了
本篇文章回覆於2010-03-16 20:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

johnson
檢舉此回應
先在dataset留欄位放的是上次哩數、行車哩數、差異數
int row=ds.Table[0].Rows.Count;
for(int i=0;i<row;i++)
{
if(i!=0)
{
ds.Table[0].Rows[i]["上次哩數"]=ds.Table[0].Rows[i-1]["本次哩數"];
ds.Table[0].Rows[i]["里程"]=ds.Table[0].Rows[i]["本次哩數"]-ds.Table[0].Rows[i]["上次哩數"];
if(ds.Table[0].Rows[i-1]["里程"].tostring()!="" && ds.Table[0].Rows[i-1]["里程"]!=0)
{
ds.Table[0].Rows[i]["差異數"]=ds.Table[0].Rows[i]["里程"]-ds.Table[0].Rows[i-1]["里程"];
}
}
PS記得要轉換形態,上面的範例我都沒轉換形態喲~~
其他的就自己融匯貫通了
本篇文章回覆於2010-05-06 07:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

johnson
檢舉此回應
沒看清楚~~
你是ASP,那就不能用上述方法
上面是.NET才可以用的

但ASP也可以寫迴圈
所以方法也是一樣的
真的自己去融匯貫通了
本篇文章回覆於2010-05-06 07:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

mrccchan
檢舉此回應
Johnson真是神人,隨手就弄了個程式參考,厲害!
本篇文章回覆於2010-10-17 14:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.