![VFP 愛用者社區 首頁](templates/subSilver/images/vfps.jpg) |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
myc77
註冊時間: 2003-07-26 文章: 2
第 1 樓
|
發表於: 星期四 九月 04, 2014 3:51 pm 文章主題: 請教sqlexec是否有長度限制? |
|
|
請教sqlexec是否有長度限制?超過255字元要如何處理?查詢前例並無解答,謝謝! |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
asd89839032
註冊時間: 2012-10-15 文章: 49
第 2 樓
|
發表於: 星期四 九月 04, 2014 4:01 pm 文章主題: |
|
|
VFP9中文HELP:
如果要傳遞的 SQL 敘述太長,請檢查是否超過 Visual FoxPro 最長 255 個字元的字串文字。字串太長則會產生 "命令中包含無法辨識的片語或關鍵字" 的錯誤。然而,如果將它們分開到幾個相連的文字中,就可以傳遞較長的 SQL 敘述。例如:
複製程式碼
lnRetVal = SQLEXEC(lnHandle, "SELECT <長的欄位清單> " + ;
"FROM <數個資料表格> " + ;
"WHERE <複雜的過濾運算式>")
======================================
應該是在問這個!? _________________ 菜鳥路過... |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 3 樓
|
發表於: 星期四 九月 04, 2014 4:44 pm 文章主題: |
|
|
以前討論過,sqlexec 中的sql 敘述總長度應該可以到8000 的樣子.
你可以用 text....endtext 或是上面說的字串相加的方式延長 _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
ckp6250
註冊時間: 2004-07-30 文章: 1644
第 4 樓
|
發表於: 星期四 九月 04, 2014 6:28 pm 文章主題: |
|
|
sql 敘述總長度應該是受到後端資料庫的限制
M$ SQL 我不知道
但若為 Mysql 的話,它的長度是 1 GB |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
myc77
註冊時間: 2003-07-26 文章: 2
第 5 樓
|
發表於: 星期五 九月 05, 2014 8:57 am 文章主題: |
|
|
感謝各位解惑,就如同2樓大大所言,我目前是用這的方法,就是把字串拆成數個,然後再加起來,例如
Test_str1="update table set fields_1=?var1,fields_2=?var2,..."
Test_str2=",fields_20=?var20 where ...."
=sqlexec(ConnectionHandle,Test_str1+Test_str2)
原本只用1條字串只可以255個字元,但是拆開後Test_str1及Test_str2都可以<=255,這樣最多就有255*2個字元。 |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 6 樓
|
發表於: 星期五 九月 05, 2014 11:07 am 文章主題: |
|
|
255 印象中是指"單一命令敘述的長度".
例如 replace field01 with value01,field02 with value02,...........
雖然用 ";" 可以斷行,但是總長度還是限制在 255 _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 7 樓
|
發表於: 星期五 九月 05, 2014 11:13 am 文章主題: |
|
|
上面說的是 vfp 9 help:
------
If the SQL statement you want to pass is quite long, check to see if it exceeds the maximum length of a string literal in Visual FoxPro, which is 255 characters. Longer strings will cause a "Command contains unrecognized phrase/keyword" error. However, you can pass long SQL statements if you break them up into several concatenated literals. For example:
------
但vfp 的限制:
Maximum # of characters per character string or memory variable.
16,777,184
Maximum # of characters per command line.
8,192
Maximum length of a string literal.
255
放在 sqlexec 裡面的是 字串變數,所以上限應該是 "16,777,184".
如果寫成以";"斷行的一條sqlexec命令,上限是"8,192"
但如果是 " select ....... from ....... order ......" 這樣一整句叫"string literal" ---- 字串常數,
上限是 255
二樓的說法,也就是 vfp9 的help 範例,上限是 8192
如果是
代碼: |
csql =csql01+.......csql99
=sqlexec(X,csql,)
|
這種做法,就屬字串變數的作法,上限"16,777,184"
原來6樓是錯的,我一直用255當成上限.
-----
沒查不知道,查了嚇一跳. ![Laughing](images/smiles/icon_lol.gif) _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
goodnight
![](images/avatars/16193142264b1faf9ea7fcf.jpg)
註冊時間: 2008-10-13 文章: 472 來自: 台南市
第 8 樓
|
發表於: 星期日 九月 21, 2014 10:55 am 文章主題: |
|
|
小弟不才, 印象中, 字串是 255個字元
但 sql 語法應該可以大於 255, 也就是說, 字串變數的填入, 只能 255個字, 但可以字串+字串的方式來工作
如果有錯, 請指正
我在寫 sql 語法使, 光是 select xxx <-- 有時就超過 255了, 所以都用個別字串再合併一起處理
syntech 大大的解說比較詳細 _________________ 希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
whh
註冊時間: 2010-04-16 文章: 166
第 9 樓
|
發表於: 星期三 九月 24, 2014 9:53 am 文章主題: |
|
|
myc77 寫到: | 感謝各位解惑,就如同2樓大大所言,我目前是用這的方法,就是把字串拆成數個,然後再加起來,例如
Test_str1="update table set fields_1=?var1,fields_2=?var2,..."
Test_str2=",fields_20=?var20 where ...."
=sqlexec(ConnectionHandle,Test_str1+Test_str2)
原本只用1條字串只可以255個字元,但是拆開後Test_str1及Test_str2都可以<=255,這樣最多就有255*2個字元。 |
為什麼不直接用同一個字串變數就好了ar ?
EX:
Test_str1="Update myTable "
Test_str1= Test_str1+ "Set A='" + C_A + "'"
Test_str1= Test_str1 + Where id = '" + C_ID + "'"
&& _CLIPTEXT = Test_str1
_CLIPTEXT 真的世界無敵好用,不知道哪個天才發明的
話說單字串有字數上限
後我一直很疑惑,微軟為什麼要這樣設計.....
不讓變數字串可以直接無上限,搞得要用相加的方式,讓他幾乎無上限=.= |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
goodnight
![](images/avatars/16193142264b1faf9ea7fcf.jpg)
註冊時間: 2008-10-13 文章: 472 來自: 台南市
第 10 樓
|
發表於: 星期日 十月 05, 2014 8:48 pm 文章主題: |
|
|
_CLIPTEXT 是不是代表剪貼簿內容的意思??
這就是 windows 下寫程式的好處, 有很多意想不到的資源可用 _________________ 希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
whh
註冊時間: 2010-04-16 文章: 166
第 11 樓
|
發表於: 星期二 十月 07, 2014 3:22 pm 文章主題: |
|
|
goodnight 寫到: | _CLIPTEXT 是不是代表剪貼簿內容的意思??
這就是 windows 下寫程式的好處, 有很多意想不到的資源可用 |
沒錯!!
_CLIPTEXT = 其實就是幫你做 Ctrl +C 的意思
超級超級好用 |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
CPS0204
註冊時間: 2014-08-24 文章: 441
第 12 樓
|
發表於: 星期二 一月 07, 2020 6:55 pm 文章主題: |
|
|
經多年實驗,SQLEXEC(CON,STR1)
STR1可能為 TXT1+TXT2+TXT3+TXT4....
最長為900多字元,超過就寫兩條SQLEXEC |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
CCB2000
註冊時間: 2009-03-25 文章: 95
第 13 樓
|
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|