vfp如何使用spt

字號:

spt的全稱為sql pass through,它是和遠(yuǎn)程視圖構(gòu)成了vfp處理遠(yuǎn)程數(shù)據(jù)的利器。和遠(yuǎn)程視圖比較,它的主要好處在于靈活,可以直接連接遠(yuǎn)程數(shù)據(jù)庫,并在服務(wù)器上執(zhí)行代碼代碼, 當(dāng)然它也可以和遠(yuǎn)程視圖一樣,通過一個光標(biāo)cursor來更新遠(yuǎn)程數(shù)據(jù),缺點主要是非圖形化,代碼量大。實際上遠(yuǎn)程視圖是SPT的一個子集。
    步驟:
    1、建立連接,或者連接句柄
    如連接服務(wù)器為aa,用戶名為bb,密碼為cc,數(shù)據(jù)庫為dd
    nhandle=sqlstringconnect("driver=sql server;server=aa;uid=bb;pwd=cc;database=dd")
    if nhandle>0
    messagebox("數(shù)據(jù)庫連接成功!",0,"提示")
    else
    messagebox("數(shù)據(jù)庫連接成功!",0,"提示")
    endif
    2、如何向服務(wù)器取數(shù)據(jù)
    如向服務(wù)器表employees查詢性別為男的人員
    在第一步建立和服務(wù)器數(shù)據(jù)庫的連接,并取得連接句柄nhandle后
    sqlexec(nhandle,"select * from employees where sex='男'","employees")
    select employees
    brow
    也可以調(diào)用系統(tǒng)上的存儲過程來取得數(shù)據(jù).
    如在服務(wù)器建立存儲過程
    create proc getmanofworkes
    as
    select * from employees where sex='男'
    go
    然后在vfp里調(diào)用
    sqlexec(nhandle,"exec getmanofworkes",employees)
    select employees
    brow
    當(dāng)然也可以想存儲過程傳遞參數(shù)查詢
    仍然以剛才的例子,查詢不同性別的員工
    在服務(wù)器上建立create proc getemployees
    @sex char(2)='男'
    as
    select * from employees where sex=@sex
    go
    vfp里調(diào)用
    查詢男員工
    csex='男'
    sqlexec(nhandle,"exec getemployees ?sex",'employees')
    select employees
    brow
    查詢女員工
    csex='女'
    sqlexec(nhandle,"exec getemployees ?sex",'employees')
    select employees
    brow
    設(shè)置本地表可更新服務(wù)器表
    sqlexec(jb,"select id,bh,hyzhm,fzdw,rghsj,ghzrsj,xm,xb,gs_bm from rsda where lcbj=0 order by gbbh","gh")
    ***設(shè)置gh可更新rsda表
    sele gh
    cursorsetprop("tables","rsda","gh") &&設(shè)置臨時表的更新目標(biāo)表
    cursorsetprop("keyfieldlist",'id',"gh") &&設(shè)置臨時表的關(guān)鍵字
    cursorsetprop("updatablefieldlist","id,fzdw,rghsj,ghzrsj,hyzhm","gh")&&設(shè)置臨時表的更新字段
    cursorsetprop("updatenamelist","id rsda.id,hyzhm rsda.hyzhm,rghsj rsda.rghsj,ghzrsj rsda.ghzrsj,fzdw rsda.fzdw","gh") &&&用gh中的相應(yīng)字段更新rsda表
    cursorsetprop("sendupdates",.t.,"gh")&&設(shè)置為可更新
    cursorsetprop("wheretype",2)
    cursorsetprop("buffering",5)&&設(shè)置表緩沖