  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		bin1x
 
 
  註冊時間: 2004-08-27 文章: 462
 
  第 1 樓
  | 
		
			
				 發表於: 星期日 十一月 13, 2005 11:53 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				你說的應該是類似browse,windows 就是grid 了
 
如果在各個欄位的init寫就不符合這句話了(當然副程式是寫在A欄,而不是B欄,C欄,D欄,C欄中)
 
這樣寫值會改吧,因為到下一欄之前,就再算一次了
 
我的作法是寫在B,C,D,的INIT,之前就是這麼寫的用於
 
單位,數量,AMT 的計算 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		enchle
 
 
  註冊時間: 2005-08-08 文章: 1
 
  第 2 樓
  | 
		
			
				 發表於: 星期二 十一月 15, 2005 1:08 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				在實務上較少有這樣的需求
 
VFP也好像沒有這樣的函數可以用
 
一般還是用REPLACE命令比較多吧!
 
 
REPL A欄 WITH B欄+C欄+D欄+C欄  ALL | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		bin1x
 
 
  註冊時間: 2004-08-27 文章: 462
 
  第 3 樓
  | 
		
			
				 發表於: 星期二 十一月 15, 2005 10:04 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | 代碼: | 	 		  
 
FUNC BRO_DETI
 
PARA NIL
 
PRIV acTABLE,acBOX,acPROC
 
PRIV cFIELD,cMSG,A1,A2,A3
 
PRIV cFILE,acVAR,acFVAR
 
PRIV cTITLE,cSCR,ACTFILE
 
     acTABLE =   "1、3、[['SALNO'     、'單    號'、1]]"
 
     acPROC  =   "1、3、[['F10' 、'BRO_SEEK'、' ']]"
 
     acBOX   =   "4、0、[4、4、18、75]"
 
 
     cFIELD =" OUTTYP      :H= '出貨別':R,"+;
 
             " ITEMNO      :H= '貨品代號':R,"+;
 
             " ITEMNM      :H= '貨品規格':R,"+;
 
             " PRICE       :10:H= '單價',"+;
 
             " QTY         :10:H= '數量':R,"+;
 
             " TOTPRICE    :H= '總價':W=COMP1(),"+;
 
             " UNIT        :H= '單位':R"
 
 
     cMSG = '<F10> 查詢 ,↑↓ 上下筆,<ESC> 離開'
 
 
     cSCR = ''
 
     =SAVESTAT(@cSCR)
 
     PUSH KEY CLEAR
 
     cTITLE = WOUTPUT()
 
 
     IF !EMPTY(cTITLE)
 
        DEACTIVATE WINDOW &cTITLE
 
     ENDIF
 
 
     SELECT TMP3
 
     SET FILTER TO SALNO = TMP2.SALNO
 
     SET ORDER TO TAG 1
 
     GO TOP
 
     =POP_INQ(acBOX,acTABLE,acPROC,cFIELD,cMSG,'O:決定價格 客戶名稱:'+TMP2.CUSSN )
 
     DEACTIVATE WINDOWS DETI
 
     IF  !EMPTY(cTITLE)
 
         ACTIVATE WINDOW &cTITLE
 
     ENDIF
 
     POP KEY
 
     PRIV ARY1,cSALNO
 
     DIME ARY1[1]
 
     cSALNO = TMP2.SALNO
 
     SELECT SUM(TOTPRICE) FROM TMP3 WHERE SALNO = cSALNO INTO ARRAY ARY1
 
     SELECT TMP2
 
     IF COSTTYPE = '1'
 
        REPLACE SALCOST WITH ROUND(ARY1 * 0.05,0)
 
     ELSE
 
        REPLACE SALCOST WITH 0
 
     ENDIF
 
     nSALAMT = ARY1
 
     REPLACE SALAMT WITH ROUND(nSALAMT+SALCOST,0)
 
     =RESTSTAT(@cSCR)
 
RETU
 
 
FUNC COMP1
 
     REPLACE TOTPRICE WITH ROUND(PRICE*QTY,0)
 
RETU
 
 
 | 	  
 
 
就是這樣了
 
 
w 就是當 init 來用,會在進入totprice 之前作運算 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		catjoke
 
 
  註冊時間: 2003-06-16 文章: 175 來自: 香港
  第 4 樓
  | 
		
			
				 發表於: 星期三 十一月 16, 2005 12:29 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				Grid 已經可以了!
 
 
grid.column1.controlsource 設定為:
 
 
=MyTable.Myfield1+myTable.myField2+....
 
 
* 然後在 grid.afterrowcolumnchange 加一句:
 
this.refresh && 便可~ _________________ 喵喎~ 貓當然是 "茅" 的嘛! ^0^; | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |