VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

偵測磁碟機代號後得小問題?
前往頁面 1, 2  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
sthuang66



註冊時間: 2014-04-27
文章: 166


第 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
文章: 4211
來自: Taipei,Taiwan

第 3 樓

發表發表於: 星期五 九月 23, 2016 9:01 am    文章主題: 引言回覆

CREATE TABLE XXX
檢查每個磁碟機代號時一筆一筆 INSERT

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2157


第 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
文章: 166


第 5 樓

發表發表於: 星期五 九月 23, 2016 11:46 pm    文章主題: 引言回覆

我按照garfield方法在VFP建立一個form 然後form中間建立combo1
在form Init中放入您的代碼 combo結果是有A~Y的選項但是沒有偵測磁碟機!是我放錯地方嗎?
周末來試試syntech 和perry的方法!
謝謝三位的指導
回頂端
檢視會員個人資料 發送私人訊息
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2157


第 6 樓

發表發表於: 星期一 九月 26, 2016 9:12 am    文章主題: 引言回覆

加上 .ColumnCount=2
VFP 的 Help 裡有說明,
但我想你也不知道它有什麼作用.

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
sthuang66



註冊時間: 2014-04-27
文章: 166


第 7 樓

發表發表於: 星期二 九月 27, 2016 12:46 pm    文章主題: 引言回覆

謝謝指導 !趁颱風假好好弄一下
回頂端
檢視會員個人資料 發送私人訊息
sthuang66



註冊時間: 2014-04-27
文章: 166


第 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
文章: 166


第 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
文章: 166


第 10 樓

發表發表於: 星期一 十月 03, 2016 5:39 pm    文章主題: 引言回覆

另外一個小問題是什麼辦法讓我combo在呈現時直接就是偵測到代號TMP.dbf檔中的第一筆 如下面圖示!而非按下拉三角形才呈現!這個問題不大!只是Google半天沒有看到正解!主要是懶得寫當combo 未選又直接點確定的if endif 程序
回頂端
檢視會員個人資料 發送私人訊息
sthuang66



註冊時間: 2014-04-27
文章: 166


第 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
文章: 4211
來自: Taipei,Taiwan

第 12 樓

發表發表於: 星期三 十月 05, 2016 10:06 am    文章主題: 引言回覆

11 樓的問題,可以查詢 "GRID 空白",
我想原因及作法應該是一樣的.

10 樓, 印象中是設定 COMBOBOX 的 VALUE 屬性


----
所以站長在4樓提示你的是真理呀.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
richard_chen0122



註冊時間: 2009-10-04
文章: 11


第 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
文章: 166


第 14 樓

發表發表於: 星期四 十月 06, 2016 3:11 pm    文章主題: 引言回覆

謝謝richard_chen0122指教
按照你的說法我改了!用CURSOR的確不需要close databases all
但是按退出鍵時還是會跳那個訊息!我退出鍵
是click 事件 內容是thisform.release

值得開心是它會執行備份功能!美中不足是有個BUG會出現錯誤訊息
回頂端
檢視會員個人資料 發送私人訊息
richard_chen0122



註冊時間: 2009-10-04
文章: 11


第 15 樓

發表發表於: 星期四 十月 06, 2016 4:46 pm    文章主題: 引言回覆

將COOBO1的 RowSource 改成 tmp (INIT所產生的CURSOR),
RowSourceType 改成2->ALIAS
CLICK event 判斷 MYDRI=ALLTRIM(THISFORM.COMBO1.VALUE) 不等於空直才進行COPY,這樣應該不會有錯誤訊息產生了。
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作