  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		zfgg
 
 
  註冊時間: 2004-05-31 文章: 179 來自: 中国
  第 1 樓
  | 
		
			
				 發表於: 星期二 十二月 19, 2006 9:12 am    文章主題: 如何将Treeview控件顺序文本保存到另一个表中? | 
				     | 
			 
			
				
  | 
			 
			
				Treeview控件显示的文本,随着不断的修改,其存放在表中的顺序是一直加在表后面的。我的想法是将按照Treeview控件显示的顺序内容加入到另一个表中形成与Treeview控件显示的顺序一至。见图1。图1中的编号顺序就是我要在另一个表中存放的顺序。图1的数据是从图2的表中读出来的。见图2。现在的程序从图1中读出写到另一个表中,见图3。程序如下:
 
   ……
 
	SELECT 1
 
	for i=1 TO RECCOUNT()
 
	GO i 
 
	_parentt=ALLTRIM(parentt)
 
	_keyy=ALLTRIM(keyy)
 
	_sj=时间
 
	_sm=说明
 
	_tm=题目
 
	sele jiaoanbao
 
	locate for jiaoanbao.Keyy=_parentt
 
	IF FOUND()
 
		_Nrec=RECNO()	
 
	    FOR j=_Nrec TO RECCOUNT()
 
	    GO j
 
	    IF parentt=_keyy
 
	     LOOP
 
	    ELSE && for j
 
	     _Jrec=RECNO()
 
			insert blank	
 
			replace jiaoanbao.题目 with _tm
 
			replace jiaoanbao.时间 with _sj
 
			replace jiaoanbao.说明 with _sm
 
			replace keyy WITH _keyy
 
		    replace parentt WITH _parentt
 
		   
 
	     exit
 
	    ENDIF     
 
	    NEXT 
 
	ELSE &¬ found
 
	   append blank 
 
		replace jiaoanbao.题目 with _tm
 
		replace jiaoanbao.时间 with _sj
 
		replace jiaoanbao.说明 with _sm
 
		replace keyy WITH _keyy
 
		replace parentt WITH _parentt	
 
	ENDIF 
 
	    replace 按号 with i
 
	SELECT 1
 
	ENDFOR
 
 
仔细分析图3,在Treeview控件中有子节点的,读出来的数据是加在当前兄弟的下面,但一旦换到另一个节点时,它不是加在当前表的下面,而是在这个结点的上面加的记录。如何解决这一问题,我日夜思索,不得其解。我曾想过,用Treeview控件显示节点数据的方法,加到表中,但也无从下手。请教各路高手救我一把。我快休克了。 
 
 
 
  | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		garfield Site Admin
  
  註冊時間: 2003-01-30 文章: 2160
 
  第 2 樓
  | 
		
			
				 發表於: 星期三 十二月 20, 2006 1:40 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				臨時寫的, 採用遞迴方式來設計, 可無限階, 未測試.
 
 	  | 代碼: | 	 		  
 
SELECT 1 
 
use mytreedbf
 
copy stru to putnewfile
 
sele 2
 
use putnewfile
 
listthis( space(len( parentt)) )   &&--假?#93;第一階的父階為空白
 
return
 
 
func listthis
 
lpara mparentt
 
lpara mfile, mret
 
mfile='_'+alltrim(mparentt)
 
select * from mytreedbf where parentt=mparentt into cursor &mfile
 
mret = (recc()>0)     &&--有這個階層的資料
 
scan
 
   sele (mfile)
 
   scat to tempfield
 
   sele putnewfile    &&--將這筆資料放到另一個table
 
   appe blank
 
   gath from tempfield
 
   *找下一階, 請自行過濾有問題的階層資料
 
   listthis( keyy )
 
endscan
 
use in (mfile)
 
return mret
 
 | 	 
  _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		zfgg
 
 
  註冊時間: 2004-05-31 文章: 179 來自: 中国
  第 3 樓
  | 
		
			
				 發表於: 星期四 十二月 21, 2006 4:59 pm    文章主題: 谢谢Garfield! | 
				     | 
			 
			
				
  | 
			 
			
				谢谢Garfield! 你是天才,你是Foxpro精英,你是伟大的教育家!我衷心地感谢你!
 
 
在原程序上,我改了三个地方,加了一个语句,用了二个小时,成功了.
 
说实话,我请当地一大学计算机系的人,搞了2个星期,没有搞出来,你搞出来了.我今天可以睡觉了.
 
 
我还有一个问题,马上发贴,也请给予指教. | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |