Visual FoxPro分類文章 顯示方式:簡文 | 列表

September 5,2001

SQL pass-through的使用

在VFP所附的範例或者是微軟的建議中,都一直有看到這方面的函數。
事實上,這些函數對於遠端資料的控制來說是很方便的。
如果經過適當包裝的話,就非常類似於Delphi或BCB的TQuery元件或TStoreProc元件,
有看過Delphi或BCB的人可以自行比較一下。
但是偏偏市面上的書對於這個部分如何使用...等都略過不提。
在這裡,提出一個範例供大家研究一下,略盡棉薄之力 。

p.s. Arsen=Ellery, And this article is co-write with Saint.

------------------------------------------------------------------------------------------------------------

*使用SPT更新表格的範例
*作者:Arsen(Ellery)
*環境:在ODBC設定中,我設了fpm這個別名,路徑設到目錄下的foreign.dbc

Local ln_handle

*先連接
ln_handle=sqlconnect("fpm")

*執行查詢
=sqlexec(ln_handle,"select emp_no,name from basic","_basic")

*設定相關屬性:這幾個屬性必須設定,在MSDN上有詳細說明(記得多看MSDN)
=cursorsetprop("tables","basic") &&設定欲更新的資料表格
=cursorsetprop("sendupdates",.t.,"_basic") &&確定要進行更新
=cursorsetprop("keyfieldlist","emp_no","_basic") &&要依據何鍵值來進行更新 =cursorsetprop("updatablefieldlist","emp_no,name","_basic") &&哪些欄位要更新

*以下這行,比較複雜一點,空格前寫的是上一行的欄名,後面寫的是資料表格的欄名(要用alias.field這樣) =cursorsetprop("updatenamelist","emp_no basic.emp_no,name basic.name","_basic")

Replace Next 1 alltrim(name) with alltrim(name)+"Test"

use

*釋放連接
=sqldisconnect(ln_handle)


------------------------------------------------------------------------------------------------------------

首先,謝謝Arsen,幫我解決了想了好久無法解決的問題。
其實,我的作法和他,並無很大的不同,只有這一行
=cursorsetprop("updatenamelist","emp_no basic.emp_no,name basic.name","_basic")
由於資料集預設的BUFFERING是3,所以只要移動記錄指標便會做存檔的動作
為了Client/Server效率上的考量,改用
=CURSORSETPROP("BUFFERING",5)
似乎是比較好的選擇。

另外附上另一份範例如下:

?sqldisconnect(0)
?sqlconnect("testdbc")
_sqlsele="sele * from mydbf"
=sqlexec(1,_sqlsele ,"myview")
?cursorsetprop("buffering",5)
REPLACE NAME WITH "TEST"

=cursorsetprop("tables","mydbf","myview")
=cursorsetprop("keyfieldlist","id","MYVIEW")
=cursorsetprop("updatablefieldlist","name","MYVIEW")
=cursorsetprop("sendupdates",.t.,"MYVIEW")
*=cursorsetprop("updatenamelist","ID MYDBF.ID,name MYDBF.name")&&這一行指令,有興趣的人可以比較
=cursorsetprop("updatenamelist","ID MYDBF.ID,name MYDBF.name") &&註解前和註解後有何差別

IF NOT TABLEUPDATE(.T.,.T.,"MYVIEW")
=AERRO(MYERROR)
CLEAR
?MYERROR(1)
?MESSAGE()
ENDIF


另外附上其他的做法,一檥可做到,請自行參考


AA=sqlconnect("testdbc")
IF AA>0
=SQLSETPROP(AA,"ASYNCHRONOUS",.F.)
=SQLSETPROP(AA,"BATCHMODE",.T.)
=SQLEXEC(AA,"sele * from mydbf","myview")
M.SQLDESC="UPDATE ...." &&請參考 SQL INSERT,UPDATE 語法"
=SQLEXEC(AA,M.SQLDESC) &&把指令送到後端讓Server去執行
ENDIF

Posted by elleryq at 樂多Roodo!10:31

July 24,2001

VFP7 - Miscellaneous XBase Features

本文譯自VFP7輔助說明中的Miscellaneous XBase Features

各種XBase的特色

VFP包含了一些新的且改進過的XBase特色,這些已經被包含在VFP語言之中.
這些包含了新工具,像是 Task List Manager(工作清單管理者), Object Browser(物件瀏覽器), IntelliSense Manager(自動完成管理), Accessibility Browser,Automated Test Harness(自動測試工具)和Web Services wizard(WebServices精靈).
這些東西在其他的What's New標題中有詳細的說明.

除了上面所提到的特色之外,VFP包含了其他豐富的XBase加強.
.新的Foundation Classes 已經加入了Microsoft Agent(代理人), Regular Expressions,Cryptography(密碼學),Enhanced File Open dialog boxes(加強的檔案開啟對話盒), Windows 2000 Logo Information, 和 Web Services 的相關類別.
.SQL Server的上移精靈包含了一些新的加強.
.新的 Solution 範例已經加入了怎麼使用新的特色以及foundation classes範例.
.一個新的COM+服務範例集合教導你怎麼使用帶有COM+服務的VFP伺服器.(COM+服務包含交易,佇列元件,COM+事件和補償資源管理者(Compensating Resource Manager,譯註1)).許多的範例教導你使用新的VFP伺服器加強功能.
.GENMENU已經更新,以支援新的選單圖形支援.一個新的編譯指示(#IMAGEPATHS)已經被加入以便全路徑(譯註2)被產生時能控制選單圖形.

譯註1:Compensating Resource Manager不是很清楚是什麼,所以翻的不好.另外這一句是倒裝句,所以我將對COM+服務的說明分離出來了,這樣應該比較容易瞭解.
譯註2:全路徑的意思應該是說像這樣子的情形 C:\TEST\TEST\TEST\TEST.JPG 發生時.

Posted by elleryq at 樂多Roodo!17:33

November 30,1999

VFP7-高生產力的開發環境

這篇文章也是在VFP7剛出來的時候翻譯的
後來有看到微軟中譯的文章
正好可以作個對照 ^_^

下載網址如下:
我翻譯的
微軟官方翻譯的

Posted by elleryq at 樂多Roodo!0:00
 [第一頁]  [1]  [2]  [3]