線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:952
推到 Plurk!
推到 Facebook!

资料库的计算、显示功能的实现

答題得分者是:cashxin2002
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-21 22:18:21 IP:222.184.xxx.xxx 未訂閱
如图所示 所要实现的功能如下: 当四个框中的内容都输好后,也就是在数量这个EDIT的KEYPRESS事件中的代码的书写问题。当输入数量后按回车键,发生的事件1.将四个框中的内容填入到一个临时表中,再加入一个单项累计金额(等于单价*数量)字段,一共是五个字段加到临时表中,二,在下面的MEMO中显示内容,也就是等于临时表中的内容中的五个字段。(不知道是直接从EDIT中转到MEMO中,还是MEMO到表中取字段内容,哪一种方式好)三,光标还是要跳回到第一个EDIT框,也就是拼音码那等待输入,因为不知道要收几个项目的,收一个项目临时表中就多一行记录,MEMO中也多一行显示(至于如何及何时停止,我自己已经处理好了,我只要停止前的那一段代码)四,在这个过程中在收费清单(MEMO)下面还有一个EDIT框,叫累计应收,每回车一次这个数字也在不断计算变化,当然他的值肯定等于单项累计的总计了,在有一个项目的时候也就是回车一次的时候这个值就有了。     發表人 - ntjrr 於 2005/05/21 22:19:54
------
我的编程起步于ktop,我将永远支持ktop
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-21 22:25:28 IP:222.184.xxx.xxx 未訂閱
图片显示好象有问题 图中是四个EDIT框,分别是项目拼音码(这个EDIT内容等于是项目名称,因为填好拼音码回车后名称就自动改写在这个框中了,单价规格也自动填好,这功能我已实现) 单价 规格 数量,还有一个收费清单(MEMO)。图中没显示出的还有一个EDIT框叫累计应收金额 發表人 - ntjrr 於 2005/05/21 22:50:41
------
我的编程起步于ktop,我将永远支持ktop
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-21 22:50:56 IP:61.229.xxx.xxx 未訂閱
建議可以先把你的程式貼上來看看,另外,沒有圖,真的不好理解.....
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-22 12:14:33 IP:222.184.xxx.xxx 未訂閱
我想了一下,不用MEMO做收费清单显示,用DBGRID,这样的话录入的项目是到数据表中的,而DBGRID又是在表中取数据的,这样就两全其美了,各位前辈,不知道我的想法是否可行?就是说用DBGRID控件做一个收费清单显示方式是否合适?另外又有两个问题如图: 1.图中的单价部份,在EDTI框中录入时如有小数,在DBGRID中显示就会错误,变成很长很长的数字了。但我看了一下数据库表中的显示是正确的,两位小数就是显示的两位。 2.单项累计产生的公式和代码如何写? 發表人 - ntjrr 於 2005/05/22 12:16:15
------
我的编程起步于ktop,我将永远支持ktop
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-22 16:52:22 IP:222.184.xxx.xxx 未訂閱
小数的问题我已解决,参照了有关资料,将字段设为双精度型就好了。 单项累计的公式和代码我也运行成功了,不懂这么写对不对,有没有什么弊端? ADOTable2.Last; ADOTable2.Insert; ADOTable2.FieldByName('项目名称').AsString := Edit5.Text; ADOTable2.FieldByName('单价').AsString := Edit6.Text; ADOTable2.FieldByName('规格').AsString := Edit7.Text; ADOTable2.FieldByName('数量').AsString := Edit8.Text; ADOTable2.FieldByName('单项累计').AsFloat := StrToFloat(Edit6.Text)*StrToFloat(Edit8.Text); ADOTable2.Post;
------
我的编程起步于ktop,我将永远支持ktop
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-23 09:37:50 IP:202.47.xxx.xxx 未訂閱
您好﹗    語法上是沒有錯﹐第一句ADOTable2.Last;可以不需要﹐因為ADOTable顯示資料本來就是依据索引排序的﹐除非對其下Sort的方法來手動排序﹒ 如果是需要把資料加在ADOTable2的最后﹐可試試保留第一句﹐再把第二句改為ADOTable2.Append;    元件取得輸入焦點的方法為﹕元件名稱.SetFocus;(如Edit1.SetFocus)﹐照您的要求﹐可寫在ADOTable1的AfterPost事件中﹒    Memo元件的照片沒有看到﹐利用Memo元件取得資料表中的資料﹐建議從資料表中抓取資料來源﹐而不要從Edit中取得﹐因為這樣可以直接取得[單項累計]的值﹐參考如下方法﹕
如果是在執行時期手動Open ADOTable2﹐則可在ADOTable2資料集元件的AfterOpen事件中﹐先取出目前所有資料﹐并加入到Memo元件中顯示﹐如果是設計時期就Open ADOTable2﹐則可在Form的OnActivate事件中﹐先取出目前所有資料﹐加入到Memo元件中顯示﹕
begin
  ADOTable2.First;
  Memo1.Clear;
  While Not ADOTable2.Eof do
  begin
    Memo1.Lines.Add(ADOTable2.FieldByName('項目名稱').AsString + '  '
      + ADOTable2.FieldByName('規格').AsString + '  '
      + ADOTable2.FieldByName('單價').AsString + '  '
      + ADOTable2.FieldByName('數量').AsString + '  '
      + FloatToStr(ADOTable2.FieldByName('單項累計').AsFloat);
    ADOTable2.Next;
  end;
end;    然后在ADOTable2的BeforePost事件中記錄下當前新增的資料鍵值欄位值﹐在AfterPost中把新增的資料內容追加到Memo中即可﹕
在Private區域宣告一個變數Str﹐用于記錄鍵值欄位值﹐然后在ADOTable2的BeforePost事件中鍵入
begin
  Str := ADOTable2.FieldByName('項目名稱').AsString;
end;    在ADOTable2的AfterPost事件中將新增資料抓出并加入到Memo中
begin
  ADOTable2.Locate('項目名稱', Str, []);
  Memo1.Lines.Add(ADOTable2.FieldByName('項目名稱').AsString + '  '
      + ADOTable2.FieldByName('規格').AsString + '  '
      + ADOTable2.FieldByName('單價').AsString + '  '
      + ADOTable2.FieldByName('數量').AsString + '  '
      + FloatToStr(ADOTable2.FieldByName('單項累計').AsFloat); 
end;
供參考﹐其它還有什么問題﹖ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
系統時間:2024-09-10 5:11:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!