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

關於SPT方式時的數字問題
前往頁面 1, 2  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
goodnight



註冊時間: 2008-10-13
文章: 472
來自: 台南市

第 1 樓

發表發表於: 星期三 五月 27, 2009 3:38 pm    文章主題: 關於SPT方式時的數字問題 引言回覆

想破頭了, 也找不到

語法如下:
sqlcmd = "INSERT INTO ymtmainor (oppdnp, opitnr, opvdnr, opodqt, opfddt, oppums, oppdate, opsales, opvdpc, optran, oppdnpdata, opdttime) " + ;
"VALUES ('&oppdnp', '&opitnr', '&opvdnr', &XOPODQT, '&opfddt', '&oppums', '&oppdate', '&oopsales', '&opvdpc', '&optran', '&oppdnpdate', '&opdttime')"

使用SPT方式, 要將資料入資料庫, 字串形態的都沒問題, 但是遇到數字欄位 XOPODQT, 我就破功了

請問一下
1.如果更新的欄位很多, 大大們是否用 CURSOR VIEW 的方式進行資料庫新增, 修改的方式??
2.如果以我的方式, 數字欄位該如何處理??
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
nelsonchuang



註冊時間: 2003-09-04
文章: 563
來自: 臺灣

第 2 樓

發表發表於: 星期三 五月 27, 2009 3:55 pm    文章主題: 引言回覆

"VALUES ('&oppdnp', '&opitnr', '&opvdnr',"+ALLT(STR( &XOPODQT))+", '&opfddt'...
_________________
大家好,請多指教
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1644


第 3 樓

發表發表於: 星期三 五月 27, 2009 3:58 pm    文章主題: 引言回覆

您應該先檢驗一下,messagebox(sqlcmd)
看看出來的內容有無漏失
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
goodnight



註冊時間: 2008-10-13
文章: 472
來自: 台南市

第 4 樓

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

nelsonchuang 寫到:
"VALUES ('&oppdnp', '&opitnr', '&opvdnr',"+ALLT(STR( &XOPODQT))+", '&opfddt'...


轉成文字的數字, 可以寫入 sql server 的數字欄位嗎??
還是 sql server 會自行轉換??
如果是自行轉換, 那我真是白忙了大半天
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
syntech



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

第 5 樓

發表發表於: 星期三 五月 27, 2009 4:21 pm    文章主題: 引言回覆

===== vfp help ======
若要用 SQL pass-through 建立一個有條件的查詢

在 SQLEXEC( ) 函數中執行一個 SQL 字串,在字串中包含 Visual FoxPro 參數,在參數之前需要加上問號 (?)。
所提供的參數被當作 Visual FoxPro 運算式進行求值,求得的值將作為該資料集 SQL 敘述的一部份被傳送。如果求值失敗,Visual FoxPro 會提示輸入參數的值。

秘訣 如果您的參數是一個運算式,請把該參數用括號括起來。這可以保證整個運算式做為參數的一部份進行求值。

例如,如果在遠端伺服器上的 Testdata 資料庫中有一個 customer的資料表格,下列程式碼建立一個有條件的查詢,只檢視那些國家名稱與 ?cCountry 參數值相符合的客戶:

? SQLEXEC(1,'SELECT * FROM customer WHERE customer.country = ?cCountry')

===== vfp help ======
代碼:

sqlcmd = "INSERT INTO ymtmainor (oppdnp, opitnr, opvdnr, opodqt, opfddt, oppums, oppdate, opsales, opvdpc, optran, oppdnpdata, opdttime) " + ;
"VALUES (?oppdnp, ?opitnr, ?opvdnr, ?xOPODQT, ?opfddt, ?oppums, ?oppdate, ?oopsales, ?opvdpc, ?optran, ?oppdnpdate, ?opdttime)"

SELECT TABLE1
SCAN
&&   若table1中有oppdnp, opitnr, opvdnr, opfddt, oppums, oppdate, oopsales, opvdpc, optran, oppdnpdate, opdttime,OPODQT 等欄位
&&    而xOPODQT為一變數,為 1+OPODQT
   xOPODQT = 1+OPODQT
   =SQLEXEC(ConnectHandle,sqlcmd)
ENDSCAN


什麼型態都可以用,會自動處理型態.
你可以利用 SQL PROFILER 驗證

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

請聯絡我們,也許我們幫得上忙


syntech 在 星期三 五月 27, 2009 4:30 pm 作了第 2 次修改
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
syntech



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

第 6 樓

發表發表於: 星期三 五月 27, 2009 4:23 pm    文章主題: 引言回覆

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

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



註冊時間: 2003-09-04
文章: 563
來自: 臺灣

第 7 樓

發表發表於: 星期三 五月 27, 2009 5:43 pm    文章主題: 引言回覆

goodnight 寫到:
nelsonchuang 寫到:
"VALUES ('&oppdnp', '&opitnr', '&opvdnr',"+ALLT(STR( &XOPODQT))+", '&opfddt'...


轉成文字的數字, 可以寫入 sql server 的數字欄位嗎??
還是 sql server 會自行轉換??
如果是自行轉換, 那我真是白忙了大半天

你傳入的東西,本來就是字串啊~讓SQL SERVER看得懂的字串不是嗎?
另外,SYNTECH的帖也值得一看,因為我根本就忘了有使用?來傳參數的這招~
呵,謝啦SYNTECH

_________________
大家好,請多指教
回頂端
檢視會員個人資料 發送私人訊息
syntech



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

第 8 樓

發表發表於: 星期三 五月 27, 2009 5:47 pm    文章主題: 引言回覆

字串也不見得不好.
但是應該要DUMP出來檢查.
三樓也跟你說了.

例如
代碼:

insert into table1 (f1,f2,f3) values ('a',1000,'b')

是對的


代碼:

insert into table1 (f1,f2,f3) values ('a',1,000,'b')


則是大錯特錯




和紅狐說的一樣,
你對 SQL SERVER的了解太少,導致你對SPT的運作存在很多誤解.
SQL SERVER 在某些情況下會自動處理型態轉換,
你應該去了解這些.

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

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



註冊時間: 2009-05-13
文章: 75


第 9 樓

發表發表於: 星期三 五月 27, 2009 7:39 pm    文章主題: 引言回覆

參考看看MSDN上的說明,下面有個表,介紹隱含轉換,希望對你有幫助~ ^^
http://msdn.microsoft.com/zh-tw/library/ms187928.aspx
回頂端
檢視會員個人資料 發送私人訊息
goodnight



註冊時間: 2008-10-13
文章: 472
來自: 台南市

第 10 樓

發表發表於: 星期一 六月 01, 2009 2:09 pm    文章主題: 引言回覆

to syntech

雖然公司用 sql server , 但都沒有實際去開發程式應用, 最近因為需求, 所以才開始連上 sql 存取資料
測試後
INSERT INTO INVMB VALUES ("6") 和 INSERT INTO INVMB VALUES (6) 都是可以, 如 nelsonchuang 說的, 本來就是丟字串上去了, 只是我沒有SQL 的一些特性的概念

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



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

第 11 樓

發表發表於: 星期一 六月 01, 2009 2:15 pm    文章主題: 引言回覆

spt 法因為可以自己寫更新sql命令,
所以寫法的好壞就是自己對sql server熟悉的程度差別了.

你可以用 sql profiler 比較 5樓的方式做出來的sql 命令與你自己寫的sql 命令有何不同.

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

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



註冊時間: 2008-10-13
文章: 472
來自: 台南市

第 12 樓

發表發表於: 星期三 六月 03, 2009 10:22 pm    文章主題: 引言回覆

sy 大
另外請教一下, 如果有大量資料的變動或是新增, 假設有10000筆
下列哪一種方式會比較好??

方法一:
SQLSETPROP(ConnectHandle, 'Transactions', 2) && 手動
scan

SQLCMD = "SPT STRING"
SQLEXEC(ConnectHandle, SQLCMD)

endscan
SQLCOMMIT(ConnectHandle)


方法二:
SQLSETPROP(ConnectHandle, 'Transactions', 2) && 手動
scan

SQLCMD = "SPT STRING"
SQLEXEC(ConnectHandle, SQLCMD)
SQLCOMMIT(ConnectHandle)

endscan
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
pilipala



註冊時間: 2009-05-13
文章: 75


第 13 樓

發表發表於: 星期四 六月 04, 2009 7:37 am    文章主題: 引言回覆

利用SQLSetProp啟動一個交易後,一旦遇上SQLCommit或是SQLRollBack後,交易就結束了,
所以方法二只能對你的第一筆資料進行交易,當第一筆資料結束時,無論成功與否,交易就結束了。

另,這兩個方法,只看見SQLCommit,卻沒有SQLRollback,
應該要寫個判斷,判斷何時要SQLCommit或是SQLRollback

最後記得要設回自動交易

個人想法,希望有幫助~~ ^^
回頂端
檢視會員個人資料 發送私人訊息
syntech



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

第 14 樓

發表發表於: 星期四 六月 04, 2009 11:01 am    文章主題: 引言回覆

進入交易模式,
意味 SQL SERVER 必須準備資源好應付可能發生的 ROLLBACK,
你要搞定10000筆?
純資料處理,我不作交易控制.
只有單據等需要嚴格確保"要不就都成功,要不就都失敗"才作交易控制.


從你對方法1/2的運作模式都搞不清楚的情況下,
先收集相關情報吧.

VFP 的遠端交易處理模式,請參閱 HELP.
都有範例.
基礎常識請參閱各資料庫運作原理

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

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



註冊時間: 2008-10-13
文章: 472
來自: 台南市

第 15 樓

發表發表於: 星期三 六月 10, 2009 8:44 am    文章主題: 引言回覆

sy 大
sqlrollback() 的指令有, 我只是省略
我是在 sqlexec() 是 -1 時, 全部 rollback
目前我是使用方法一, 幾萬筆做完後才 commit
不過這樣的方式是不是風險比較高??
我本想每一筆就 commit , 不過考慮到效率, 所以才順便詢問一下,
看看大家比較建議哪一種
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

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


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