|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
syntech
註冊時間: 2003-05-16 文章: 4225 來自: Taipei,Taiwan
第 16 樓
|
發表於: 星期六 九月 14, 2013 9:40 am 文章主題: |
|
|
對細節有興趣,請找:
VFP 6 HELP 中程式設計指南
CH 8,19~22
或 VFP 9 HELP
[使用VFP][開發VFP應用程式]中
"處理資料"及"使用SQL傳遞技術增強應用程式"
在VFP8 後新增了"CursorAdapter",
基本上是延伸SPT(SQL pass-through SQL傳遞技術)的做法,
改用 ADO 物件與SQL Server 相連,提供對unicode (utf-8,...)的支援 _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
jerryclt
註冊時間: 2009-03-10 文章: 334 來自: 佛心來的
第 17 樓
|
發表於: 星期六 九月 14, 2013 10:08 am 文章主題: |
|
|
哈哈......(尷尬中
因為搞不清 SQLCONNECT() 和 SQLSTRINGCONNECT() 兩者的差異,
就給它隨便用,
好笑的是,
ODBC資料來源指向 Demo, 不是My_loto XD
根據16樓的解說,
對小弟來講好像第三種手動方式比較簡單,
可是
_sql=SQLEXEC(_sqlhandle,"select * from lt01 where lt01_001='01' order by lt01_001,lt01_002","_tmpf") 成功了
_sql=SQLEXEC(_sqlhandle,"use lt01") 失敗了 (ERROR CODE:911 資料'lt01'不存在......)
依您的例子, 小弟的 DSN=MsSQL
_sql=SQLEXEC(_sqlhandle,"use MsSQL") 一樣失敗了 (ERROR CODE:911 資料'lt01'不存在......)
小弟目前正在評估客戶端對 SQL SERVER 的實用性,
還想不出來為何要轉向 SQL SERVER 的方式,
應該是對後端處理的陌生造成的吧 @@"
比方FILE SERVER 的 lt01 資料表格內有100萬筆記錄,
select * from lt01 where lt01_001='01' AND between(lt01_003,'0901','0930') into cursor _tmpf
和
SQLEXEC(_handle,"select * from lt01 where lt01_001='01' AND between(lt01_003,'0901','0930')","_tmpf")
的差異在哪? |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4225 來自: Taipei,Taiwan
第 18 樓
|
發表於: 星期六 九月 14, 2013 10:30 am 文章主題: |
|
|
vfp 筆數越多越慢, 應該10萬筆內不分上下
sql server 比較沒有速度差異,相對就是筆數少時可能比vfp略慢. Orz
但是這跟很多因素(例如索引建立方式)有關.
如果按以前的討論中,
用dbf 等file server 的話,table scan 的搜尋方式導致網路流量激增.
但是用 sql server 的話,因為sql server 只會把你要的部分傳給你,
網路流量少一點,
但是sql server 硬體等級等影響也很大.
----
你那句很怪.
我只用過
代碼: |
select * from table WHERE 單號 IN ('001','002','010') and 單價 between 100 and 500
|
_________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙
syntech 在 星期六 九月 14, 2013 11:03 am 作了第 1 次修改 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4225 來自: Taipei,Taiwan
第 19 樓
|
發表於: 星期六 九月 14, 2013 10:48 am 文章主題: |
|
|
jerryclt 寫到: |
_sql=SQLEXEC(_sqlhandle,"use lt01") 失敗了 (ERROR CODE:911 資料'lt01'不存在......)
依您的例子, 小弟的 DSN=MsSQL
_sql=SQLEXEC(_sqlhandle,"use MsSQL") 一樣失敗了 (ERROR CODE:911 資料'lt01'不存在......)
|
舉例通常都亂寫比較多.
如果你要切換資料庫,
_sql=SQLEXEC(_sqlhandle,"use {資料庫名稱}")
不是用來 "use" 某個table.
但是要注意使用者權限.
用sqlexec 傳到後端的命令就要使用該sql server 的sql 語法標準.
而不是用foxpro 的語法.
例如:
SQLEXEC(_sqlhandle," select * from table where alltrim(品名) !='' ")
這句在m$ sql server 是錯的,
沒有 alltrim()函數,只有 ltrim()及rtrim()
要改成
SQLEXEC(_sqlhandle," select * from table where ltrim(rtrim(品名)) !='' ") _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4225 來自: Taipei,Taiwan
第 20 樓
|
發表於: 星期六 九月 14, 2013 4:56 pm 文章主題: |
|
|
jerryclt 寫到: |
根據16樓的解說,
對小弟來講好像第三種手動方式比較簡單,
|
2,3 本來就可以混合使用.
可以單純用SQL 命令直接處理的,
習慣上就直接用3處理掉.
需要在本地端作複雜運算的,
就用2來做,
可以把4個spt設定作成函式.
2的另外好處是,
可以把你的系統從使用DBF/DBC,
直接變成使用 SQL SERVER 的系統.
只要支援ODBC的話,
要接oracle,mysql 都可以.
覺得dbf 沒有未來,
接sqlite 也可以. _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
jerryclt
註冊時間: 2009-03-10 文章: 334 來自: 佛心來的
第 21 樓
|
發表於: 星期一 九月 16, 2013 9:39 am 文章主題: |
|
|
有一個奇怪的現象請教,
1.SET MULTILOCKS ON
2.store sqlstringconnect("dsn=sql001; userid=sa; pwd=123456") to xconnhandle
3.SQLEXEC(xconnhandle, 'use sql001')
4.SQLEXEC(xconnhandle, 'SELECT * FROM table001' ,'table001')
3到4時會有錯誤產生, (Invalid call issued while executing a SQLMORERESULT() sequence.)
如果改成:
3.SQLEXEC(xconnhandle, 'use sql001')
4.SQLCANCEL(xconnhandle)
5.SQLEXEC(xconnhandle, 'SELECT * FROM table001' ,'table001')
就過了, 不知是何原因?
另外一個則是,
=CURSORSETPROP("Buffering", 5 , 'table001' )
=CURSORSETPROP("Tables",'table001.field01','table001')
估且當成S大您的手誤...修正為:
=CURSORSETPROP("Tables",'table001','table001')
=CURSORSETPROP("KeyFieldList",'field01','table001')
=CURSORSETPROP("UpdatableFieldList" ,'field01,field02,field03','table001')
=CURSORSETPROP("UpdateNameList",'field01 table001.f01,field02 table001.f02,field03 table001.f03','table001')
=CURSORSETPROP("SendUpdates" ,.t.,'table001')
select TABLE001 <-- 出現: 找不到別名 TABLE001
請問小弟有哪裡又搞錯了嗎? |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4225 來自: Taipei,Taiwan
第 22 樓
|
發表於: 星期一 九月 16, 2013 10:44 am 文章主題: |
|
|
1. 你的問題,可能是在某處的SQLEXEC 導致此處問題發生
但下SQLCANCEL()也沒錯.
因為這一句不傳回CURSOR,所以有SQLMORERESULTS( )一定會錯.
2.去看HELP,或是尋找舊文,你就知道該填什麼進去.
3.如果你是連續出錯,那根本沒傳回CURSOR TABLE01.第1點就錯了
-----
看別人化簡過的資料一定會有漏洞出現,
你應該先看完官方文件,
再看看別人怎麼化簡步驟. _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 23 樓
|
發表於: 星期一 九月 16, 2013 11:23 am 文章主題: |
|
|
就jerryclt所提的問題
我的感想是
jerryclt對sql的基礎很薄弱
應該先不用急著操指令
應該先去K幾本書 |
|
回頂端 |
|
|
jerryclt
註冊時間: 2009-03-10 文章: 334 來自: 佛心來的
第 24 樓
|
發表於: 星期一 九月 16, 2013 11:29 am 文章主題: |
|
|
測試PASSED.
除了上述 table001.field01 這句要改成 table001 外,
其他都沒錯...錯的是小弟在 SELECT &table001 之前,
有以前VFP留下來的老鼠屎 ---- CLOSE DATABASE @@"
現在只剩下一個 INDEX 的問題了,
小弟加了一段如下:
SELECT 0
USE &table001 ALIAS m&_table001 AGAIN ORDER &field01
系統回應: "資料表格沒有設定索引次序。"
依本例: =CURSORSETPROP("KeyFieldList",'field01','table001')
主鍵值欄位應該是 field01 沒錯吧?!
但是實際上小弟設的主鍵值欄位是 field01+field02, 主鍵值名稱定為 field01,
小弟試過
field01 / field01+field02 / field01,field02
三種都不正確, 但是
=CURSORSETPROP("KeyFieldList",'field01','table001') 傳回 .T.
再請教您...不知是何故? |
|
回頂端 |
|
|
jerryclt
註冊時間: 2009-03-10 文章: 334 來自: 佛心來的
第 25 樓
|
發表於: 星期一 九月 16, 2013 11:39 am 文章主題: |
|
|
ckp6250 寫到: | 就jerryclt所提的問題
我的感想是
jerryclt對sql的基礎很薄弱
應該先不用急著操指令
應該先去K幾本書 |
ckp大就別挖苦小弟了 = ="
[薄弱]是太看得起小弟的說法!
不久前才說明剛安裝完 MYSQL,
後來覺得被它打敗,
趕快換條路試試 MSSQL...
小弟也想買一堆相關書藉來K,
但是時間緊迫加上事關民生問題哪!
最近小弟工作室支撐不下去想找工作,
對方開出的技能及專長要求:
1.MS SQL Server維護及操作的能力
2.Visual FoxPro開發能力
3.標示語言 XML 的操作
所以急著想要了解一下MSSQL的基本概念,
其他的就以經驗來換取時間 = ="
(如果光看書真的可行, 咱的小孩就不用去學校了)
jerryclt 在 星期一 九月 16, 2013 11:43 am 作了第 1 次修改 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4225 來自: Taipei,Taiwan
第 26 樓
|
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4225 來自: Taipei,Taiwan
第 27 樓
|
發表於: 星期一 九月 16, 2013 11:45 am 文章主題: |
|
|
另外,用 SQLEXEC 取回的CURSOR,
是沒有index的,
要重新下index on ....,
而且要在"最短時間"內建立index, Orz
只能意會...... _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
jerryclt
註冊時間: 2009-03-10 文章: 334 來自: 佛心來的
第 28 樓
|
發表於: 星期一 九月 16, 2013 1:12 pm 文章主題: |
|
|
了解了,
多謝S大整篇下來的耐心解說,
老實說,
以S大的作風,
今番真出乎咱的意料之外!
呵呵......^^
再次感謝! |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4225 來自: Taipei,Taiwan
第 29 樓
|
發表於: 星期一 九月 16, 2013 2:15 pm 文章主題: |
|
|
"MS SQL Server維護及操作的能力"
看到鬼.
m$ 每個版本的ms sql server 都會創造出一堆以前沒有的問題.
到底要多會才叫有"維護及操作的能力" 凸(\./ #) _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
ckp6250
註冊時間: 2004-07-30 文章: 1645
第 30 樓
|
發表於: 星期一 九月 16, 2013 2:58 pm 文章主題: |
|
|
syntech 寫到: |
m$ 每個版本的ms sql server 都會創造出一堆以前沒有的問題.
|
夫子言之,于我心有戚戚焉 |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|