| 上一篇主題 :: 下一篇主題   | 
	
	
	
		| 發表人 | 
		內容 | 
	
	
		sthuang66
 
 
  註冊時間: 2014-04-27 文章: 178
 
  第 1 樓
  | 
		
			
				 發表於: 星期四 九月 22, 2016 6:20 pm    文章主題: 偵測磁碟機代號後得小問題? | 
				     | 
			 
			
				
  | 
			 
			
				我參照前輩們寫的修改後如下
 
LOCAL  LNI, DRVNAME, DRVTYPE ,MYDRI
 
MYDRI=""
 
FOR LNI=1 TO 25
 
    DRVNAME=CHR(64+LNI)+":"+"\"
 
    DRVTYPE=DRIVETYPE(DRVNAME)
 
    DO CASE
 
        CASE DRVTYPE=1
 
            DRINAME=+DRVNAME+"無類型"
 
        CASE DRVTYPE=2
 
            DRINAME=+DRVNAME+"註:隨身碟"
 
        CASE DRVTYPE=3
 
            DRINAME=+DRVNAME+"註:本機硬碟"
 
        CASE DRVTYPE=4
 
            DRINAME=+DRVNAME+"註:移動硬碟或網路磁碟"
 
        CASE DRVTYPE = 5
 
            DRINAME=+DRVNAME+"註:CD-ROM"
 
        CASE DRVTYPE=6
 
            DRINAME=+DRVNAME+"註:虛擬磁碟"
 
    ENDCASE
 
    MYDRI=MYDRI+IIF(DIRECTORY(DRVNAME),CHR(13)+CHR(10)+DRINAME,"")
 
ENDFOR
 
---------------------------------------------------------------------------------
 
偵測磁碟機代號後假設 有c:\本機硬碟  和d :\本機硬碟
 
我現在功力是可以用TEXTBOX呈現 !就只要下THISFORM.TEXT1.VALUE=MYDRI 就可以!
 
想請教各位前輩是我想把偵測出來MYDRI 用COMBOBOX呈現就卡住了
 
是想了個方法就是有什麼指令可以把每次執行產生的代號存成暫存dbF檔
 
然後RowSourceType 屬性設定為 3 ,再用SQL 命令敘述
 
-------------------------------------------------------------------
 
我GOOGLE好一下總不是我要的!我想應該是我keyword不對!煩請論壇高手開示! | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		perry
 
 
  註冊時間: 2014-07-20 文章: 203
 
  第 2 樓
  | 
		
			
				 發表於: 星期五 九月 23, 2016 8:40 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				您有查看MYDRI的內容嗎???
 
和下面這個有何差異!!
 
 
iio_str='1,測試一,2,測試二,3,測試三'
 
With This.Combo4
 
    .RowSourceType=1
 
    .ColumnCount=2
 
    .RowSource=iio_str
 
EndWith | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 3 樓
  | 
		
			
				 發表於: 星期五 九月 23, 2016 9:01 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				CREATE TABLE XXX
 
檢查每個磁碟機代號時一筆一筆 INSERT _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		garfield Site Admin
  
  註冊時間: 2003-01-30 文章: 2160
 
  第 4 樓
  | 
		
			
				 發表於: 星期五 九月 23, 2016 11:31 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				改用comboBox
 
LOCAL LNI, DRVNAME, DRVTYPE ,MYDRI 
 
MYDRI="" 
 
 
with thisform.combo1
 
   .RowSourceType=0
 
   .clear
 
 
FOR LNI=1 TO 25 
 
DRVNAME=CHR(64+LNI)+":"+"\" 
 
DRVTYPE=DRIVETYPE(DRVNAME) 
 
   .addItem(DRVNAME)
 
DO CASE 
 
CASE DRVTYPE=1 
 
   .list( .listindex , 2) = "無類型" 
 
CASE DRVTYPE=2 
 
   .list( .listindex , 2) = "註:隨身碟" 
 
CASE DRVTYPE=3 
 
   .list( .listindex , 2) = "註:本機硬碟" 
 
CASE DRVTYPE=4 
 
   .list( .listindex , 2) = "註:移動硬碟或網路磁碟" 
 
CASE DRVTYPE = 5 
 
   .list( .listindex , 2) = "註:CD-ROM" 
 
CASE DRVTYPE=6 
 
   .list( .listindex , 2) = "註:虛擬磁碟" 
 
ENDCASE 
 
MYDRI=MYDRI+IIF(DIRECTORY(DRVNAME),CHR(13)+CHR(10)+DRINAME,"") 
 
ENDFOR 
 
endwith _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		sthuang66
 
 
  註冊時間: 2014-04-27 文章: 178
 
  第 5 樓
  | 
		
			
				 發表於: 星期五 九月 23, 2016 11:46 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				我按照garfield方法在VFP建立一個form  然後form中間建立combo1
 
在form Init中放入您的代碼  combo結果是有A~Y的選項但是沒有偵測磁碟機!是我放錯地方嗎?
 
周末來試試syntech 和perry的方法!
 
謝謝三位的指導 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		garfield Site Admin
  
  註冊時間: 2003-01-30 文章: 2160
 
  第 6 樓
  | 
		
			
				 發表於: 星期一 九月 26, 2016 9:12 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				加上 .ColumnCount=2 
 
VFP 的 Help 裡有說明, 
 
但我想你也不知道它有什麼作用. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		sthuang66
 
 
  註冊時間: 2014-04-27 文章: 178
 
  第 7 樓
  | 
		
			
				 發表於: 星期二 九月 27, 2016 12:46 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| 謝謝指導  !趁颱風假好好弄一下 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		sthuang66
 
 
  註冊時間: 2014-04-27 文章: 178
 
  第 8 樓
  | 
		
			
				 發表於: 星期一 十月 03, 2016 5:27 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				我按照syntech指導下先在FORM INIT寫以下代碼
 
LOCAL  LNI, DRVNAME, DRVTYPE ,D_NAME
 
CREATE TABLE TMP (DR C(12),DRIVE C(30))
 
FOR LNI=1 TO 26
 
    DRVNAME=CHR(64+LNI)+":"+"\"
 
    DRVTYPE=DRIVETYPE(DRVNAME)
 
    D_NAME=DRVNAME+"DCOMBK"
 
    DO CASE
 
        CASE DRVTYPE=1
 
            DRINAME="無類型"
 
        CASE DRVTYPE=2
 
            DRINAME="註:隨身碟"
 
 
        CASE DRVTYPE=3
 
            DRINAME="註:本機硬碟"
 
 
        CASE DRVTYPE=4
 
            DRINAME="註:移動硬碟或網路磁碟"
 
 
        CASE DRVTYPE = 5
 
            DRINAME="註:CD-ROM"
 
 
        CASE DRVTYPE=6
 
            DRINAME="註:虛擬磁碟"
 
 
    ENDCASE
 
    IF DIRECTORY(DRVNAME)
 
        INSERT INTO TMP(DR,DRIVE) VALUE(D_NAME,DRINAME)
 
    ENDIF
 
ENDFOR
 
-----------------------------------------------------------------------------
 
這樣把偵測到的磁碟機與想存取的目錄放在tmp.dbf下
 
然後在combo1  設
 
rowsource="select DR,DRIVE from TMP into cursor temp"
 
rowsorce type=3
 
以上就可以了 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		sthuang66
 
 
  註冊時間: 2014-04-27 文章: 178
 
  第 9 樓
  | 
		
			
				 發表於: 星期一 十月 03, 2016 5:34 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				至於確定 command  我click 代碼如下
 
SET DATE YMD
 
SET CENTURY ON
 
SET SAFETY OFF
 
LOCAL MYDRI
 
MYDRI=ALLTRIM(THISFORM.COMBO1.VALUE)
 
A=DATE()
 
B=DTOC(A)
 
YMD=SUBSTR(B,1,4)+SUBSTR(B,6,2)+SUBSTR(B,9,2)+"BK"
 
CLOSE DATABASES ALL
 
DBF_PATH1='&MYDRI\&YMD'
 
IF NOT DIRE(DBF_PATH1)
 
    MD (DBF_PATH1)
 
    COPY FILE *.DBF TO &DBF_PATH1
 
ENDIF
 
MESSAGEBOX("BACKUP COMPLETE!",0+48,"提示資訊")
 
--------------------------------------------------------------------
 
以上可以執行備份但是會跳下面訊息!然後combo就消失了! 我百思不解!只好又上來問各位高手!因為在YMD=SUBSTR(B,1,4)+SUBSTR(B,6,2)+SUBSTR(B,9,2)+"BK"下面若是沒有加close databases all會跳出  file in use
   sthuang66 在 星期一 十月 03, 2016 5:58 pm 作了第 1 次修改 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		sthuang66
 
 
  註冊時間: 2014-04-27 文章: 178
 
  第 10 樓
  | 
		
			
				 發表於: 星期一 十月 03, 2016 5:39 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| 另外一個小問題是什麼辦法讓我combo在呈現時直接就是偵測到代號TMP.dbf檔中的第一筆 如下面圖示!而非按下拉三角形才呈現!這個問題不大!只是Google半天沒有看到正解!主要是懶得寫當combo 未選又直接點確定的if    endif  程序 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		sthuang66
 
 
  註冊時間: 2014-04-27 文章: 178
 
  第 11 樓
  | 
		
			
				 發表於: 星期三 十月 05, 2016 12:22 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				我有點入help 但是看不懂
 
---------------------------
 
嘗試在 32K 工作區範圍之外選取一個資料表格,或者參考未開啟資料表格中的檔案變數。該錯誤可能在下列條件之下發生:
 
 
下拉式列示方塊控制項或列示方塊控制項的 RowSource 屬性所指定的資料表格或暫存資料表格被關閉。
 
 
如果想要關閉一個下拉式列示方塊控制項或列示方塊控制項的 RowSource 屬性所指定的資料表格或暫存資料表格,在關閉該資料表格或暫存資料表格之前完成任一下列動作:
 
 
 
設定 RowSource 屬性為一個空的值 ("")。
 
 
 
-或者-
 
 
 
釋放該表單所包含的下拉式列示方塊控制項或列示方塊控制項。
 
 
 
執行了一個重新建立由 RowSource 屬性所指定的資料表格或暫存資料表格的 SQL SELECT 敘述。當該 SQL SELECT 敘述執行時,Visual FoxPro 先關閉然後再開啟該資料表格。
 
 
若要避免此錯誤,請設定 RowSource 屬性為一個空的值 (""),執行 SQL SELECT 敘述,再重新設定 RowSource 屬性為它早先的值。 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 12 樓
  | 
		
			
				 發表於: 星期三 十月 05, 2016 10:06 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				11 樓的問題,可以查詢 "GRID 空白",
 
我想原因及作法應該是一樣的.
 
 
10 樓, 印象中是設定 COMBOBOX 的 VALUE 屬性
 
 
 
----
 
所以站長在4樓提示你的是真理呀. _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		richard_chen0122
 
 
  註冊時間: 2009-10-04 文章: 13
 
  第 13 樓
  | 
		
			
				 發表於: 星期四 十月 06, 2016 2:37 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				你用了指令
 
CREATE TABLE TMP (DR C(12),DRIVE C(30))
 
而你為了避免file in use 的問題,使用了 close database all,等同把 TABLE TMP 也一併關掉了。
 
建議你改成
 
CREATE CURSOR TMP (DR C(12),DRIVE C(30))
 
試試看。 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		sthuang66
 
 
  註冊時間: 2014-04-27 文章: 178
 
  第 14 樓
  | 
		
			
				 發表於: 星期四 十月 06, 2016 3:11 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				謝謝richard_chen0122指教
 
按照你的說法我改了!用CURSOR的確不需要close databases all
 
但是按退出鍵時還是會跳那個訊息!我退出鍵
 
是click 事件 內容是thisform.release
 
 
值得開心是它會執行備份功能!美中不足是有個BUG會出現錯誤訊息 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		richard_chen0122
 
 
  註冊時間: 2009-10-04 文章: 13
 
  第 15 樓
  | 
		
			
				 發表於: 星期四 十月 06, 2016 4:46 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				將COOBO1的 RowSource 改成 tmp (INIT所產生的CURSOR),
 
RowSourceType 改成2->ALIAS
 
CLICK event 判斷 MYDRI=ALLTRIM(THISFORM.COMBO1.VALUE) 不等於空直才進行COPY,這樣應該不會有錯誤訊息產生了。 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		 |