|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
marvin
註冊時間: 2004-06-01 文章: 321
第 1 樓
|
發表於: 星期日 十二月 27, 2015 1:59 am 文章主題: SPT 技巧 |
|
|
聽別人說過不要把 SPT 直接 "寫死" 在程式中,
應該用 OO 做 data layer class
我想這很有道理, 但確實是怎樣做的呢?
我只想到 insert 用這樣:
oFirdbird.SetField("STOCK", "pdt_no", "KB113456642")
oFirdbird.SetField("STOCK", "shelf_no", "A7")
oFirdbird.SetField("STOCK", "qty", 156)
oFirdbird.AddRec("STOCK")
看起來不錯用, 但 select 如果以:
oFirebird.ReadRec("STOCK", "pdt_no, shelf_no", "qty > 10")
代替以下:
SQLEXEC(this.nDBHndl, "SELECT pdt_no, shelf_no from STOCK where qty > 10")
又看不到什麼好處
請問以上的做法對嗎? |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 2 樓
|
發表於: 星期一 十二月 28, 2015 9:07 am 文章主題: |
|
|
脫褲子放屁.
按我從 BCB/DELPHI ,PHP 等等學到的經驗.
以XBASE 的指令處理資料是最直覺的,
其他語言會想盡辦法模擬出XBASE處理資料的概念,
但總不如XBASE直覺,
所以只好從枝枝節節下手,看起來好一點.
但你的想法好像又更遠一點.
很多工具會搞成:
oFirdbird.cursorSTOCK.Field("pdt_no").Value= "KB113456642"
以模擬 database.cursor.record.field.
record 以"目前記錄"隱性代表,
用oFirdbird.cursorSTOCK.first()( 及 previous(),next(),last()移動記錄指標)
有些會把recordset 用list方式顯示,
oFirdbird.cursorSTOCK.recordset.items(3).Field("pdt_no").Value= "KB113456642".
如果有filter,
可能會以oFirdbird.cursorSTOCK.FILTER = "qty > 10"
表示是 cursor 或是 dataset 的一個屬性. _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
CPS0204
註冊時間: 2014-08-24 文章: 441
第 3 樓
|
發表於: 星期一 十二月 28, 2015 12:07 pm 文章主題: |
|
|
不懂什麼是DATA OO,我只會使用 &來作成動態的欄位更新或篩選
LOCAL FIELDS1,TABLE1,FILTER1
FIELDS1='PDT_NO,SHELF_NO' &&可自己定義欄位
TABLE1='STOCK' &&可自己定義TABLE NAME
FILTER1='QRY> 10' &&可自己定義 FILTER,如為空 ,請放 1>0
MY_TXT=[SELECT &FIELDS1. FROM &TABLE1. WHERE &FILTER1.]
SQLEXEC(CONNECT1,MY_TXT,'TEMP_DBF')
沒有什麼對與否,適合自己開發習慣即可! |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4212 來自: Taipei,Taiwan
第 4 樓
|
發表於: 星期一 十二月 28, 2015 1:25 pm 文章主題: |
|
|
通常會這樣搞是因為想把存取資料的行為通用化(虛擬化),
避免使用者直接接觸底層資料庫運作的細節.
這個都免不了的相當沒有效率.
在visual foxpro 中,這個東西用 cursor 代替了.
不管何種資料庫,到了 visual foxpro 中,
例如是 txt,sdf,excel,dbf,xml,
所有可以用 odbc 開啟的sql 資料庫或是 文件,
所有可以用 cursoradaptor 開啟的資料庫或是 文件
通通以 cursor 做基本操作單元.
可以利用xbase 命令操作資料,
最後都可以利用 tableupdate() 更新資料,
若是spt或cursoradaptor,tableupdate()會按照先前設定自動產生更新命令.
使用者不需要自己寫更新命令,
(當然使用者也可以自己寫)
所以額外將資料存取虛擬化就變成很多餘. _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
marvin
註冊時間: 2004-06-01 文章: 321
第 5 樓
|
發表於: 星期二 十二月 29, 2015 12:40 am 文章主題: |
|
|
SPT 生 cursor 再 CursorSetProp() + tableupdate() 這方式我也差點忘了 |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|