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

SPT 技巧

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
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. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
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. 想學習系統規劃,想找系統架構的顧問

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



註冊時間: 2004-06-01
文章: 321


第 5 樓

發表發表於: 星期二 十二月 29, 2015 12:40 am    文章主題: 引言回覆

SPT 生 cursor 再 CursorSetProp() + tableupdate() 這方式我也差點忘了
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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