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

select * from table1 group by seteb into cursor tmp不能运行

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



註冊時間: 2004-05-31
文章: 179
來自: 中国

第 1 樓

發表發表於: 星期四 十月 05, 2006 2:54 pm    文章主題: select * from table1 group by seteb into cursor tmp不能运行 引言回覆

近日,将原来的windows 2003 换成windows XP.VFP软件6.0换成9.0.原来在windows 2003 上运行的VFP软件,在windows XP上不能运行,发现不支持 select * from table1 group by seteb into cursor tmp语句.换成select seteb from table1 group by seteb into cursor tmp才能运行.

请问是windows XP,还是VFP软件9.0原因?在程序中还有很多这样的语句,一时不查清,如何处理原来的语句?
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address MSN Messenger
syntech



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

第 2 樓

發表發表於: 星期四 十月 05, 2006 3:46 pm    文章主題: 引言回覆

請加入
SET ENGINEBEHAVIOR 70

因為VFP 9.0 的SQL ENGINE 運行情況與VFP6不一樣.

正確來說,
VFP 6.0 的語法與其他的SQL SERVER不一樣,
VFP 9.0 的預設值與 M$ SQL SERVER 的運作情況一樣.
找時間修改吧

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

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



註冊時間: 2004-05-31
文章: 179
來自: 中国

第 3 樓

發表發表於: 星期五 十月 06, 2006 2:36 pm    文章主題: thanks for syntech 引言回覆

Syntech,
thank you for teaching.

zfgg
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address MSN Messenger
lzm



註冊時間: 2006-02-14
文章: 8
來自: 北京

第 4 樓

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

vfp8的group 使用体会:
一些在vfp7以下版本编制的 group 语句 ,往往在vfp8中 报错。
解决的办法,可以用下列两种方式之一:
1. SYS(3099,70)
2. SET ENGINEBEHAVIOR 70
但如果不想这样,就要注意符合vfp8的语句规则:

*!* 有如下数据:l.dbf
*!* bm lx je
*!* 外科 药费 1.01
*!* 外科 手术 2.02
*!* 内科 药费 3.03
*!* 儿科 检查 4.04

在vfp8以下,求分科的金额合计 可以这样:

SELECT bm,sum(je) FROM l GROUP BY bm

结果:
儿科 4.04
内科 3.03
外科 3.03


注意两点:
1。在group by 后的分组字段,必须在 select 中 出现(如 bm )
2。select 后 除分组字段外的其它字段,必须用 sum 求和(或 用 count 求记录数)

要想求交叉表,可用以下语句:

SELECT bm,sum(IIF(lx='药费',je,0)),sum(IIF(lx='手术',je,0)),sum(IIF(lx='检查',je,0)) FROM l GROUP BY bm

结果:
儿科 0.00 0 4
内科 3.03 0 0
外科 1.01 2 0


但这样求出的结果,除一项外,其他lx会丢失小数点后的数据,应该改为:
SELECT bm,sum(IIF(lx='药费',je,0.00)),sum(IIF(lx='手术',je,0.00)),sum(IIF(lx='检查',je,0.00)) FROM l GROUP BY bm

结果:
儿科 0.00 0.00 4.04
内科 3.03 0.00 0.00
外科 1.01 2.02 0.00


其原因在于:产生的交叉表的数据格式,以该组第一次遇到的数据格式为准。狐友不妨试试。

当lx各项数量不确定时(药费,手术,检查,治疗,。。。),可以采用拼接的方式,来组织 select 后的 语句,就可以灵活求出 交叉表了。
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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