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

臨時表行刪除?

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
foxabc



註冊時間: 2012-04-21
文章: 61


第 1 樓

發表發表於: 星期五 十一月 06, 2020 12:39 am    文章主題: 臨時表行刪除? 引言回覆

臨時表中欄位F1與F3 行皆為0,刪除F1與F3
只保留F2與F4 column
若欄位有很多怎樣自動判斷刪除?
select 命令怎下?想了好久想不出來><
感謝...

圖A

↓ ↓ ↓ ↓ ↓
圖B

.
.
回頂端
檢視會員個人資料 發送私人訊息
CPS0204



註冊時間: 2014-08-24
文章: 441


第 2 樓

發表發表於: 星期五 十一月 06, 2020 3:48 am    文章主題: 引言回覆

臨時表cursor為何要刪除,關畢不就得了
alter table your_dbf drop column f1 ,drop column f3
回頂端
檢視會員個人資料 發送私人訊息
foxabc



註冊時間: 2012-04-21
文章: 61


第 3 樓

發表發表於: 星期五 十一月 06, 2020 8:16 am    文章主題: 引言回覆


用上述指令會出現錯誤

ps:若欄位有很多,怎樣才能自行判斷刪除?
.
回頂端
檢視會員個人資料 發送私人訊息
marvin



註冊時間: 2004-06-01
文章: 321


第 4 樓

發表發表於: 星期五 十一月 06, 2020 12:12 pm    文章主題: 引言回覆

> 若欄位有很多怎樣自動判斷刪除?
我是用 afield() 逐一看
也建議再用 select 抽出有用欄位, 而不是刪除

cursor 若是從 ODBC 回來的, 印象中是不能用 alter
回頂端
檢視會員個人資料 發送私人訊息
CPS0204



註冊時間: 2014-08-24
文章: 441


第 5 樓

發表發表於: 星期五 十一月 06, 2020 3:54 pm    文章主題: 引言回覆

cursor 不需要刪除不要的欄位
只要將(您要)的欄位抽出即可

select F2,f4 from you_cursor INTO CURSOR TEMP1
SELE TEMP1
BROW
回頂端
檢視會員個人資料 發送私人訊息
foxabc



註冊時間: 2012-04-21
文章: 61


第 6 樓

發表發表於: 星期五 十一月 06, 2020 7:42 pm    文章主題: 引言回覆

感謝大大的指導
主要是自動判斷欄位是否需不需要

看來只能用afield() 逐一看 再用 select 抽出有用欄位 來實現
回頂端
檢視會員個人資料 發送私人訊息
perry



註冊時間: 2014-07-20
文章: 203


第 7 樓

發表發表於: 星期六 十一月 07, 2020 3:28 am    文章主題: 引言回覆

利用 2次 SQL
sele 0
sele sum(iif(empt(f1),0,1)) as f1,sum(iif(empt(f2),0,1)) as f2,;
sum(iif(empt(f3),0,1)) as f3,sum(iif(empt(f4),0,1)) as f4 ;
from test1 into curs aa_1
go top
priv i,j,k
k=''
for i=1 to fcount()
**產生所需欄位
j=field(i)
k=k+iif(empt(k),'',',')+iif(empt(&j),'',j)
next
use in aa_1
sele 0
sele &K from test1 wher .... into curs aa_1

如果是 grid 則使用 deletecolumn() 刪除該直欄即可
回頂端
檢視會員個人資料 發送私人訊息
lygcw9603



註冊時間: 2011-12-25
文章: 126


第 8 樓

發表發表於: 星期六 十一月 07, 2020 10:46 am    文章主題: Re: 臨時表行刪除? 引言回覆

foxabc 寫到:
臨時表中欄位F1與F3 行皆為0,刪除F1與F3
只保留F2與F4 column
若欄位有很多怎樣自動判斷刪除?
select 命令怎下?想了好久想不出來><
感謝...

圖A

↓ ↓ ↓ ↓ ↓
圖B

.
.

生成字符串列表,刪除不包含F2與F4的列,最好上傳相應的表數據
回頂端
檢視會員個人資料 發送私人訊息
lygcw9603



註冊時間: 2011-12-25
文章: 126


第 9 樓

發表發表於: 星期六 十一月 07, 2020 10:51 am    文章主題: 引言回覆

第一步:判斷F1與F3的值是否均為0,如果均為0,則刪除F1與F3字段
回頂端
檢視會員個人資料 發送私人訊息
lygcw9603



註冊時間: 2011-12-25
文章: 126


第 10 樓

發表發表於: 星期六 十一月 07, 2020 10:54 am    文章主題: 引言回覆

第二步:如果字段名不為F2與F4,則刪除該字段
不用刪除也可以達到目的


lygcw9603 在 星期六 十一月 07, 2020 11:27 am 作了第 2 次修改
回頂端
檢視會員個人資料 發送私人訊息
lygcw9603



註冊時間: 2011-12-25
文章: 126


第 11 樓

發表發表於: 星期六 十一月 07, 2020 11:11 am    文章主題: 引言回覆

代碼:
CREATE CURSOR tt (f1 n(2), f2 n(2), f3 n(2), f4 n(2), f5 n(2))
INSERT INTO tt VALUES (1, 2, 0, 4, 5)
INSERT INTO tt VALUES (0, 2, 3, 4, 5)
INSERT INTO tt VALUES (0, 2, 0, 4, 5)
SCAN
   IF EMPTY(f1) AND EMPTY(f3)
      ALTER table tt drop f1
      ALTER table tt drop f3
      EXIT
   ENDIF
ENDSCAN
lcStr = ""
FOR lnj = 1 TO FCOUNT()
   IF INLIST(FIELD(lnj), "F1", "F2", "F3", "F4")
      lcStr = lcStr + "," + FIELD(lnj)
   ENDIF
ENDFOR
lcStr = SUBSTR(lcStr, 2)
SELECT &lcStr FROM tt
回頂端
檢視會員個人資料 發送私人訊息
CPS0204



註冊時間: 2014-08-24
文章: 441


第 12 樓

發表發表於: 星期日 十一月 08, 2020 4:07 pm    文章主題: 引言回覆

到現在還沒用過刪除cursor 的欄位!
假如CURSOR 檔有 100萬筆(假設)
你去刪除此欄位有何意義?多個迴圈,浪費幾10秒再動作, CURSOR若不要用就關畢不就好了,或是不處理也可以!

若是要BROW 顯示用!
請用: BROW FIELDS F2,F4 不就行了
回頂端
檢視會員個人資料 發送私人訊息
foxabc



註冊時間: 2012-04-21
文章: 61


第 13 樓

發表發表於: 星期六 十一月 14, 2020 12:53 pm    文章主題: 引言回覆

CPS0204 寫到:
到現在還沒用過刪除cursor 的欄位!
假如CURSOR 檔有 100萬筆(假設)
你去刪除此欄位有何意義?多個迴圈,浪費幾10秒再動作, CURSOR若不要用就關畢不就好了,或是不處理也可以!

若是要BROW 顯示用!
請用: BROW FIELDS F2,F4 不就行了



因欄位很多,刪除cursor欄位,是在列印資料時,把欄位為0的,剃除列印
這樣做法不知道好不好?
回頂端
檢視會員個人資料 發送私人訊息
CPS0204



註冊時間: 2014-08-24
文章: 441


第 14 樓

發表發表於: 星期日 十一月 15, 2020 1:13 pm    文章主題: 引言回覆

上文:因欄位很多,刪除cursor欄位,是在列印資料時,把欄位為0的,剃除列印
這樣做法不知道好不好?

ans:我認為這樣不好!
假設你有200的欄位
你只要先判斷非0的欄位例:有30個
只要先select 出些欄位至暫存檔,然後報表直接列印此30欄即可
不需要再花時間去刪除原170個(值=0)的欄位!
回頂端
檢視會員個人資料 發送私人訊息
perry



註冊時間: 2014-07-20
文章: 203


第 15 樓

發表發表於: 星期二 十一月 17, 2020 9:49 pm    文章主題: 引言回覆

將資料輸出至 Excel 可輕鬆逹到您要的刪除及印表需求!!
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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