上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
sthuang66
註冊時間: 2014-04-27 文章: 171
第 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 文章: 4212 來自: Taipei,Taiwan
第 3 樓
|
發表於: 星期五 九月 23, 2016 9:01 am 文章主題: |
|
|
CREATE TABLE XXX
檢查每個磁碟機代號時一筆一筆 INSERT _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
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 文章: 171
第 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 文章: 171
第 7 樓
|
發表於: 星期二 九月 27, 2016 12:46 pm 文章主題: |
|
|
謝謝指導 !趁颱風假好好弄一下 |
|
回頂端 |
|
|
sthuang66
註冊時間: 2014-04-27 文章: 171
第 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 文章: 171
第 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 文章: 171
第 10 樓
|
發表於: 星期一 十月 03, 2016 5:39 pm 文章主題: |
|
|
另外一個小問題是什麼辦法讓我combo在呈現時直接就是偵測到代號TMP.dbf檔中的第一筆 如下面圖示!而非按下拉三角形才呈現!這個問題不大!只是Google半天沒有看到正解!主要是懶得寫當combo 未選又直接點確定的if endif 程序 |
|
回頂端 |
|
|
sthuang66
註冊時間: 2014-04-27 文章: 171
第 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 文章: 4212 來自: Taipei,Taiwan
第 12 樓
|
發表於: 星期三 十月 05, 2016 10:06 am 文章主題: |
|
|
11 樓的問題,可以查詢 "GRID 空白",
我想原因及作法應該是一樣的.
10 樓, 印象中是設定 COMBOBOX 的 VALUE 屬性
----
所以站長在4樓提示你的是真理呀. _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
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 文章: 171
第 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,這樣應該不會有錯誤訊息產生了。 |
|
回頂端 |
|
|
|