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

請教關於.dbf檔的管理與刪除
前往頁面 1, 2  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
hou59



註冊時間: 2004-02-17
文章: 20


第 1 樓

發表發表於: 星期二 三月 23, 2004 9:49 am    文章主題: 請教關於.dbf檔的管理與刪除 引言回覆

請教關於.dbf檔的管理與刪除
請教各位狐友前輩:我想設計一個歷史檔案的管理與刪除

.dbf檔說明
filelist.dbf==>欄位:[檔名],儲存各歷史檔的檔名,使用於資料環境中
其 它.dbf==>有930101/930102/930103之類名稱的.dbf檔,因為太多了
未加入於資料環境中,放在c:\subject\history
程式說明:
1.grid1:recordsource為filelist.dbf,當使用者按下command1(顯示)後,
grid2便顯示出其它.dbf(930101或930102.dbf檔各欄位內容)
2.當使用者按下command2(刪除)後,便可刪除930101或930102.dbf檔

code:
1.command1.click(顯示) &&可正確的於grid2顯示

set default to c:\subject\historypublic op_sf
select filelist

op_sf=filelist.檔名

IF USED("&op_sf")
SELE &op_sf
ELSE
SELE 0
USE &&op_sf
ENDIF

SELECT *;
FROM op_sf;
INTO CURSOR s_tmp
select s_tmp

WITH ThisForm.Grid2
.RecordSource ="s_tmp"
.Column1.ControlSource="s_tmp.使用者"
.Column2.ControlSource="s_tmp.單位"
.Column3.ControlSource="s_tmp.作品" &&通用型態,儲存圖片檔
ENDWITH

2.command2.click(刪除)
IF USED("op_sf")
use
erase op_sf+".dbf"
ENDIF

執行後的問題:
1.第一次按下command1(顯示)時,grid2的通用型態欄可正常顯示圖片
當再選取其它歷史檔後,通用型態欄變成GEN,無法顯示圖片
2.command2.click(刪除)
執行後,並無任何錯誤訊息,但是到c:\subject\history\裡面看,檔案卻還在.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
Ruey



註冊時間: 2003-03-12
文章: 1698
來自: tunglo

第 2 樓

發表發表於: 星期二 三月 23, 2004 10:36 pm    文章主題: 引言回覆

2.採用絕對路徑去試看看.路徑檔案要用[]包起來
_________________
#############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!

學會VFP使用者社區的搜尋,Code才會更有趣~
#############################
回頂端
檢視會員個人資料 發送私人訊息
jesse



註冊時間: 2004-03-21
文章: 8


第 3 樓

發表發表於: 星期三 三月 24, 2004 4:38 am    文章主題: 引言回覆

.
這不禁使我想起DOS時代的NC (norton command)
NC 就提供有QUICK VIEW DBF 的功能 不喜歡的檔案 按個[F8]就可以把它幹掉了
ACDSEE 剛開始的模式也是這樣
.
.
話說回來....
2. 以前曾經碰到類似問題 小數點會被吃掉
".dbf" 改成 "..dbf" 看看
erase op_sf+"..dbf"
或是 將 op_sf 改用 &op_sf
(沒針對這個主題試過.僅供參考...)

問題若解決之後.麻煩也回來指教一下 Wink
回頂端
檢視會員個人資料 發送私人訊息
jesse



註冊時間: 2004-03-21
文章: 8


第 4 樓

發表發表於: 星期三 三月 24, 2004 5:00 am    文章主題: 引言回覆

你的程式碼裡頭??
怎麼有 USED("&op_sf")
又有 USE &&op_sf
也有 USED("op_sf")
是我頭昏眼花了?? 怪怪的... 好像?
最後的 IF USED("op_sf") 並沒有成立 所以沒有錯誤訊息 也沒有刪檔案
應該是 IF USED("&op_sf")
所以不是 . 的問題
回頂端
檢視會員個人資料 發送私人訊息
hou59



註冊時間: 2004-02-17
文章: 20


第 5 樓

發表發表於: 星期三 三月 24, 2004 9:38 am    文章主題: 引言回覆

感謝回應!
引言回覆:

怎麼有 USED("&op_sf")
又有 USE &&op_sf
也有 USED("op_sf")


USE &&op_sf 其中&&是註解
ruey,iesse兄的方法試過了,執行後,還是無任何錯誤訊息,檔案也沒刪除
.....
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 6 樓

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

引言回覆:

set default to c:\subject\historypublic op_sf

這裡是貼錯嗎?實際上是不是
set default to c:\subject\history
public op_sf

這裡也很怪?
是 USED("op_sf") 還是 USED(op_sf) ?
請確認一下用法

找的到,除非防寫,否則一定刪的掉,
就加上
IF FILE(op_sf+".dbf")
 erase op_sf+".dbf"
ENDIF

這問題關鍵在 '&' 的用法

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

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



註冊時間: 2004-02-17
文章: 20


第 7 樓

發表發表於: 星期三 三月 24, 2004 4:11 pm    文章主題: 引言回覆

使用除錯程式發現.command1與.command2內的條件根本未成立!!
後來直接將.command2(刪除)改成下列:
use
erase op_sf+".dbf"
程式告訴我找不到"別名"
因為我是初學者,所以用了以下最笨的方式,就ok了
close tables all
erase op_sf+".*"

報告各位狐哥狐姐們:
我是初學者,主要的設計用意是:如何把存放在硬碟[c:\subject\history\]這個路徑
的.dbf檔案內容顯示在grid裡面!!使用者如果不要這筆資料的話,便可按刪除鍵刪掉檔案
學了幾個月VFP,有一點感言,我覺得台灣的vfp使用者與網站雖然沒有大陸多,但
是這個討論區有許多熱心的朋友,像是Ruey大哥熱心的回復解答或轉貼許多實用
的文章.目前我的程度是”找麻煩的菜鳥”,總是有一堆問題,自己看書學程式,沒人可指導,有問題就上來找一找主題,同時也希望在許多狐友的問題裡面
求精進,希望大家愛護支持這個討論區,共勉之
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
朱育興



註冊時間: 2003-08-25
文章: 661
來自: 台中市大里區

第 8 樓

發表發表於: 星期三 三月 24, 2004 11:12 pm    文章主題: 引言回覆

雖然不清楚,但試試看下面這樣可不可以

2.command2.click(刪除)

你提供的程式碼:
IF USED("op_sf")
use
erase op_sf+".dbf"
ENDIF


修改為:
IF USED(op_sf)
use IN (op_sf)
ENDIF
erase (op_sf+".dbf")


其中的 use IN (op_sf),是因為你並不知道在此時,其目前工作區到底是誰?你可以在 IF USED(op_sf) 的上一行用 WAIT WIND ALIAS() 來看看你 USE 的到底是誰!

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
hou59



註冊時間: 2004-02-17
文章: 20


第 9 樓

發表發表於: 星期四 三月 25, 2004 10:07 am    文章主題: 引言回覆

報告朱兄:
WAIT WIND ALIAS() 的值為:score_tmp
erase (op_sf+".dbf") 執行結果:檔案被使用

另我發現command1(顯示)按下後,壯態列有一行:
score_tmp(c:\subject\history\930101.dbf) 記錄:1/332

請再賜教,感激不盡
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
朱育興



註冊時間: 2003-08-25
文章: 661
來自: 台中市大里區

第 10 樓

發表發表於: 星期四 三月 25, 2004 1:07 pm    文章主題: 引言回覆

code:
1.表單的 Init 事件
public op_sf
set default to c:\subject\history


2.command1.click(顯示)
op_sf = ALLTRIM(filelist.檔名)

* 在變更 s_tmp 內容之前要清除
WITH ThisForm.Grid2
.RecordSource = ""
ENDWITH

* 產生最新的 s_tmp
SELECT * ;
FROM (op_sf) ;
INTO CURSOR s_tmp
USE IN (op_sf) && 關閉 op_sf 所代表的 Table

* 重新關連
WITH ThisForm.Grid2
.RecordSource = "s_tmp"
.Column1.ControlSource = "s_tmp.使用者"
.Column2.ControlSource = "s_tmp.單位"
.Column3.ControlSource = "s_tmp.作品"
ENDWITH
ThisForm.Refresh

3.command2.click(刪除)
* 刪除所有與 op_sf 資料表格有關的檔案 (例如: .FPT 檔)
IF ADIR(W1_aAdir,op_sf+".???") > 0
FOR W1_SUB_A = 1 TO ALEN(W1_aAdir,1)
W1_cDelFile = W1_aAdir(W1_SUB_A,1)
DELETE FILE (W1_cDelFile)
ENDFOR
ENDIF

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
hou59



註冊時間: 2004-02-17
文章: 20


第 11 樓

發表發表於: 星期四 三月 25, 2004 3:47 pm    文章主題: 引言回覆

謝謝朱兄不吝指教
第一個問題己解決
引言回覆:

執行後的問題:
1.第一次按下command1(顯示)時,grid2的通用型態欄可正常顯示圖片
當再選取其它歷史檔後,通用型態欄變成GEN,無法顯示圖片

另外:
引言回覆:

USE IN (op_sf) && 關閉 op_sf 所代表的 Table

程式卡在這行:找不到別名....
試了幾個方式如:
USE IN s_tmp 或 use 等,沒錯誤,但grid2就變空白了..
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
朱育興



註冊時間: 2003-08-25
文章: 661
來自: 台中市大里區

第 12 樓

發表發表於: 星期四 三月 25, 2004 4:20 pm    文章主題: 引言回覆

請修正:

2.command1.click(顯示)
op_sf = ALLTRIM(filelist.檔名)

* 在變更 s_tmp 內容之前要清除
WITH ThisForm.Grid2
.RecordSource = ""
ENDWITH

* 產生最新的 s_tmp
* > 因為 op_sf 的主檔名是以數字為開頭的,在 VFP 中它會以 A,B,C,... 的順序做為它的別名,
* > 而不是以 op_sf 的主檔名做為它的別名 (太久沒遇到都差點忘了這規則)
USE (op_sf) ALIAS TMP_Select IN 0
* > 產生 s_tmp
SELECT * ;
FROM TMP_Select ;
INTO CURSOR s_tmp
* > 關閉 op_sf 所代表的 Table
USE IN TMP_Select

* 重新關連
WITH ThisForm.Grid2
.RecordSource = "s_tmp"
.Column1.ControlSource = "s_tmp.使用者"
.Column2.ControlSource = "s_tmp.單位"
.Column3.ControlSource = "s_tmp.作品"
ENDWITH
ThisForm.Refresh

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
hou59



註冊時間: 2004-02-17
文章: 20


第 13 樓

發表發表於: 星期五 三月 26, 2004 10:23 am    文章主題: 引言回覆

朱兄勛鑒:
command1.click(顯示) 的執行有一問題:
如果使用者重覆點選按鍵(op_sf = ALLTRIM(filelist.檔名) 檔名沒改變),會發生”檔案被使用”的錯誤訊息.
引言回覆:

* > 關閉 op_sf 所代表的 Table
USE IN TMP_Select

表示上述語法尚未關閉op_sf 所代表的 Table ,所以command2.click(刪除)
引言回覆:

command2.click(刪除)
* 刪除所有與 op_sf 資料表格有關的檔案 (例如: .FPT 檔)
IF ADIR(W1_aAdir,op_sf+".???") > 0
FOR W1_SUB_A = 1 TO ALEN(W1_aAdir,1)
W1_cDelFile = W1_aAdir(W1_SUB_A,1)
DELETE FILE (W1_cDelFile)
ENDFOR
ENDIF

我加上了use,才可順利刪掉檔案
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
朱育興



註冊時間: 2003-08-25
文章: 661
來自: 台中市大里區

第 14 樓

發表發表於: 星期五 三月 26, 2004 12:41 pm    文章主題: 引言回覆

引言回覆:
發生”檔案被使用”的錯誤訊息




引言回覆:
USE (op_sf) ALIAS TMP_Select IN 0


改為

引言回覆:
USE (op_sf) AGAIN ALIAS TMP_Select IN 0


看看可不可以,測試後告訴我結果,可以嗎?

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
hou59



註冊時間: 2004-02-17
文章: 20


第 15 樓

發表發表於: 星期五 三月 26, 2004 1:42 pm    文章主題: 引言回覆

朱兄勛鑒:
引言回覆:

command1.click(顯示) 的執行有一問題:
如果使用者重覆點選按鍵(op_sf = ALLTRIM(filelist.檔名) 檔名沒改變),會發生”檔案被使用”的錯誤訊息.

本問題已解決,但是command2.click(刪除)內還是必須加上use才可刪檔
另外:
引言回覆:

command1.click(顯示)
op_sf = ALLTRIM(filelist.檔名)

* 在變更 s_tmp 內容之前要清除
WITH ThisForm.Grid2
.RecordSource = ""
ENDWITH

只要command2.click(刪除)刪過檔後,再按command1(顯示),grid2的作品就變成Gen,圖片無法顯示.
再請賜教一個問題:
a,b,c三個表單==>a執行b,b執行c
當按下b表單的command鈕(do form c),b表單為何有一堆文字往上跑?使得結束c表單返回b表單時,b表單的劃面就被破壞了!
註:b單的init有下set talk off
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

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


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