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

請問如何把同一天的資料都印在同一個欄位
前往頁面 1, 2  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
shengyi



註冊時間: 2004-07-14
文章: 35


第 1 樓

發表發表於: 星期四 二月 05, 2009 1:54 pm    文章主題: 請問如何把同一天的資料都印在同一個欄位 引言回覆

假設 TABL1如下
date money
1 AAA
2 BBB
5 CCC
5 DDD
12 EEE
12 FFF
12 GGG
22 MMM

想得到TABL2
date money
1 AAA
2 BBB
5 CCC DDD
12 EEE FFF GGG
22 MMM

我的想法是用SCAN達成,先讀一筆把資料放至變數,
再判斷下一筆資料日期是否相同,相同則把MONEY資料APPEND至變數,不相同則寫至特定TABLE,有較簡單的方法?(TABLE2的MONEY欄位要放至報表中)
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
syntech



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

第 2 樓

發表發表於: 星期四 二月 05, 2009 6:28 pm    文章主題: 引言回覆

你的問題只有一個.
和你其他的問題一樣.



你根本不了解你的武器.

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

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



註冊時間: 2004-07-14
文章: 35


第 3 樓

發表發表於: 星期五 二月 06, 2009 12:47 am    文章主題: 引言回覆

請問一下,下面這段程式最後一個repl有誤嗎 ?
?tempid有顯示資料,但後面repl卻沒寫資料進去?

SELE table2
SCAN
tempdate=table2.date

SELE table1
SCAN for table1.date=tempdate
tempid = tempid + " " + table1.money

ENDSCAN
? tempid
REPL table2.money with tempid
tempid= ""
ENDSCAN
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
Terry1211



註冊時間: 2008-03-13
文章: 63


第 4 樓

發表發表於: 星期五 二月 06, 2009 7:12 am    文章主題: 引言回覆

擷取 Help裡 replace的說明
REPLACE 命令用運算式的值替換欄位中的資料。
若欄位不在選定工作區,則必須在欄位前加上資料表格別名。
注意: 如果省略 IN 子句,如果記錄指標位於目前工作區中檔案的尾部,
且指定了另一個工作區中的欄位,則不發生替換。

replace前加上select table2試看看~~
回頂端
檢視會員個人資料 發送私人訊息
shengyi



註冊時間: 2004-07-14
文章: 35


第 5 樓

發表發表於: 星期五 二月 06, 2009 3:48 pm    文章主題: 引言回覆

感謝Terry1211,加上sele真得可以了.
但有另外一個問題, 原本這一段是正常的
tempid = tempid + " " + table1.money

但今天執行的時候會出現"運算子/運算元....不符"訊息,後來是先改成
tempid = tempid + table1.money
發現可以執行,然後再改回tempid = tempid + " " + table1.money 又可以了,tempid是宣告為public charater(7),那裡有問題嗎?
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
區榮熾



註冊時間: 2005-11-14
文章: 191


第 6 樓

發表發表於: 星期五 二月 06, 2009 9:57 pm    文章主題: 引言回覆

shengyi 寫到:
請問一下,下面這段程式最後一個repl有誤嗎 ?
?tempid有顯示資料,但後面repl卻沒寫資料進去?

SELE table2
SCAN
tempdate=table2.date

SELE table1
SCAN for table1.date=tempdate
tempid = tempid + " " + table1.money

ENDSCAN
? tempid
REPL table2.money with tempid
tempid= ""
ENDSCAN

在 ENDSCAN 之後 要切回到 Table2 ,才能將 tempid Repl 進 table2.money
回頂端
檢視會員個人資料 發送私人訊息
shengyi



註冊時間: 2004-07-14
文章: 35


第 7 樓

發表發表於: 星期六 二月 07, 2009 12:38 am    文章主題: 引言回覆

關於"運算子/運算元....不符"問題,我在前面加上tempid = " "就可以了!
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
朱育興



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

第 8 樓

發表發表於: 星期六 二月 07, 2009 5:03 pm    文章主題: 引言回覆

shengyi 寫到:
感謝Terry1211,加上sele真得可以了.
但有另外一個問題, 原本這一段是正常的
tempid = tempid + " " + table1.money

但今天執行的時候會出現"運算子/運算元....不符"訊息,後來是先改成
tempid = tempid + table1.money
發現可以執行,然後再改回tempid = tempid + " " + table1.money 又可以了,tempid是宣告為public charater(7),那裡有問題嗎?

建議不要亂用 PUBLIC,tempid 這個變數應該沒那麼偉大需要在各個程序中到處使用吧!

會出現"運算子/運算元....不符"訊息,是因為在執行 tempid = tempid + " " + table1.money 之前,tempid 已在它處被使用,但它的資料型態又不是字元型態,所以出現"運算子/運算元....不符"訊息是理所當然的事

SELE table2
SCAN
tempdate=table2.date

SELE table1
SCAN for table1.date=tempdate
tempid = tempid + " " + table1.money

ENDSCAN
? tempid
REPL table2.money with tempid
tempid= ""
ENDSCAN

改為

SELECT table2
SCAN
tempid= ""
SELECT table1
SCAN FOR table1.date = table2.date
tempid = tempid + " " + table1.money
ENDSCAN
REPLACE table2.money WITH LTRIM(tempid) && 去掉左邊空白
ENDSCAN

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



註冊時間: 2008-03-13
文章: 63


第 9 樓

發表發表於: 星期六 二月 07, 2009 6:29 pm    文章主題: 引言回覆

引言回覆:
感謝Terry1211,加上sele真得可以了.


你該了解工作區在VFP裡的觀念

引言回覆:
tempid是宣告為public


如同朱大所說,Public 不要亂用,
了解一下Public、Private,Local的差別吧
回頂端
檢視會員個人資料 發送私人訊息
區榮熾



註冊時間: 2005-11-14
文章: 191


第 10 樓

發表發表於: 星期一 二月 09, 2009 11:20 pm    文章主題: TO : 朱育興老師請教我.... 引言回覆

(VFP6.0)在不同工作區的資料寫入動作,是一定要切回原工作區,才能寫入嗎?(除了使用INSERT INTO 就不需切回) 對?
如在 Table2 Scan DATA SELECT SCAN Table1 找到了 Table2要的資料 ENDSCAN SELECT Table2(如不切回,則工作區仍在 TABLE1) REPL TABLE2.DATA with TABLE1.DATA ENDSCAN (這樣可以成功的寫入資料?)
我的概念混淆?
回頂端
檢視會員個人資料 發送私人訊息
fschern



註冊時間: 2003-10-12
文章: 34


第 11 樓

發表發表於: 星期二 二月 10, 2009 9:08 am    文章主題: 引言回覆

以下摘錄VFP9.0的HELP=>

REPLACE Command (Visual FoxPro)

REPLACE FieldName1 WITH eExpression1 [ADDITIVE]
[, FieldName2 WITH eExpression2 [ADDITIVE]] ... [Scope]
[FOR lExpression1] [WHILE lExpression2] [IN nWorkArea | cTableAlias]
[NOOPTIMIZE]
.........
Note
If the IN clause is omitted, no replacement occurs if the record pointer is at the end of the file in the current work area and you specify a field in another work area.
回頂端
檢視會員個人資料 發送私人訊息
syntech



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

第 12 樓

發表發表於: 星期二 二月 10, 2009 10:24 am    文章主題: 引言回覆

也許這個問題在不同版本或是在其他 xbase 語法的工具上,做法有些差異,

但是最不會出問題的做法,
還是再做任何動作前 select alais ,直接設定工作區,
尤其是工作區傻傻分不清楚的時候
(只是我也還是會用 alias.field ,因為這樣還是比較清楚,我不在乎增加肌鍵炎的機會)


另外,由於foxpro屬於弱型態的工具,
變數的型態可以被自由改變,
所以宣告成public或是指定型態,並不能保證沒事.
還是要注意變數可視性,生命週期等變數管理動作

還是一句,要用心了解你的武器

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

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



註冊時間: 2005-11-14
文章: 191


第 13 樓

發表發表於: 星期二 二月 10, 2009 11:08 am    文章主題: 引言回覆

syntech 寫到:
也許這個問題在不同版本或是在其他 xbase 語法的工具上,做法有些差異,

但是最不會出問題的做法,
還是再做任何動作前 select alais ,直接設定工作區,
尤其是工作區傻傻分不清楚的時候
(只是我也還是會用 alias.field ,因為這樣還是比較清楚,我不在乎增加肌鍵炎的機會)


另外,由於foxpro屬於弱型態的工具,
變數的型態可以被自由改變,
所以宣告成public或是指定型態,並不能保證沒事.
還是要注意變數可視性,生命週期等變數管理動作

還是一句,要用心了解你的武器

根據Syntech兄所述,已瞭解我的概念正確,謝謝!
至於其他版本的優異,我不會去研究.............VFP6.0 已經很好用了
回頂端
檢視會員個人資料 發送私人訊息
syntech



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

第 14 樓

發表發表於: 星期二 二月 10, 2009 11:22 am    文章主題: 引言回覆

區兄,

====
SELECT table2
SCAN
tempid= ""
SELECT table1
SCAN FOR table1.date = table2.date
tempid = tempid + " " + table1.money
ENDSCAN
SELECT TABLE2
REPLACE table2.money WITH LTRIM(tempid) && 去掉左邊空白
ENDSCAN
====

應該問題是出在紅字上吧.
習慣上,我會這樣做沒錯,
可以避免很多問題.
尤其是loop太大的時候.

當然,關鍵還是在 scan....endscan 時,vfp知不知道是對哪個工作區作業,
如果vfp知道,當然就沒問題,
如果不是,當然就是完蛋.

如果使用 do while(!eof()) ...... skip enddo ,不注意工作區切換就一定出問題. XD

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

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



註冊時間: 2005-11-14
文章: 191


第 15 樓

發表發表於: 星期二 二月 10, 2009 4:58 pm    文章主題: 引言回覆

TO Syntech兄:
我在 Shengyi兄說Repl 不進資料時,就請在 ENDSCAN後(也就是說您加上的紅字)
加 SELECT TABLE2後 VFP 才知道 REPL 的標的....
我都是如此更改資的,但看了秀出的程式碼(缺少紅字部份),就對自己的概念沒信心(因學得不深之故),才向朱育興老師請教,現經您的回答,我已清楚了,謝謝您啦!
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

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


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