|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
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.如果以我的方式, 數字欄位該如何處理?? |
|
回頂端 |
|
|
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 會自行轉換??
如果是自行轉換, 那我真是白忙了大半天 |
|
回頂端 |
|
|
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 次修改 |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 6 樓
|
發表於: 星期三 五月 27, 2009 4:23 pm 文章主題: |
|
|
勿濫用 & 運算子 _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
pilipala
註冊時間: 2009-05-13 文章: 75
第 9 樓
|
|
回頂端 |
|
|
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 |
|
回頂端 |
|
|
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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
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 |
|
回頂端 |
|
|
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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
goodnight
註冊時間: 2008-10-13 文章: 472 來自: 台南市
第 15 樓
|
發表於: 星期三 六月 10, 2009 8:44 am 文章主題: |
|
|
sy 大
sqlrollback() 的指令有, 我只是省略
我是在 sqlexec() 是 -1 時, 全部 rollback
目前我是使用方法一, 幾萬筆做完後才 commit
不過這樣的方式是不是風險比較高??
我本想每一筆就 commit , 不過考慮到效率, 所以才順便詢問一下,
看看大家比較建議哪一種 |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|