 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
Ruey
註冊時間: 2003-03-12 文章: 1698 來自: tunglo
第 1 樓
|
發表於: 星期四 十一月 20, 2003 10:40 am 文章主題: VFP+SQL 自動更新程式(轉貼) |
|
|
**VFP+SQL 自動更新程式
*本系統需要在 SQL端 建立一個表
print ''Create table Vers_cont''
go
--------------------版本控制vers_cont -------------------------
create table vers_cont(
version char(10) default ''3.01'',
exedatetime char(16),
exememo text
)
go
insert into vers_cont values(''3.01'','''','''')
go
print ''Create table Vers_cont OK!''
go
你的VFP主程序根據自己的version 和vers_cont 上的version
判斷是否需要更新
若vfp.version<sql.version程式終止,提示更新程式
*自動更新程式 update.prg
*測試遠端視圖,共用連接,更新
*2002.04.23
** 原型,自己擴沖吧 可以用了
Close all
Clea all
Clea
Set safe off
Set talk off
Set stat off
Set hour to 24
Set date to ansi
Set cent on
=sqld(0)
lcExename=''youexe.exe''
lcNewExename=''yournewexe.exe''
Create data getnew
Open data getnew
Create conn getnewjjyw datasource "youdatasource" userid "id" password "pass"
DBSetProp("getnewjjyw","CONNECTION" ,"DISPLOGIN" ,3) &&發任何時候都不彈出
*新建遠程視圖
Create SQL VIEW vers_remote_view remote CONNECTION getnewjjyw share ;
AS SELECT * FROM vers_cont
DBSetProp(''vers_remote_view'', ''View'', ''ShareConnection'', .T.)
DBSetProp("vers_remote_view.exedatetime", "Field", "KeyField", .T.)
DBSetProp("vers_remote_view.version", "Field", "Updatable", .T.)
DBSetProp("vers_remote_view.exememo", "Field", "Updatable", .T.)
DBSetProp("vers_remote_view", "View", "SendUpdates", .T.)
DBSetProp("vers_remote_view", "View", "WhereType", 3)
*設定更新衝突解決方案為“關鍵字和已更新欄位”
DBSetProp("vers_remote_view", "View", "UpdateType", 1)
Wait wind ''從sql 取數據....'' nowait noclear
Use vers_remote_view in 0
Sele vers_remote_view
CursorSetProp("Buffering", 3, "vers_remote_view")
*設定vers_remote_view的緩衝模式為“開放式行緩衝”。由於這時Visual FoxPro的默認設置,這一句可省略。
?CURSORGETPROP("ConnectHandle", "vers_remote_view")
*List stru
*Inkey(0)
Wait wind ''從sql 取回來的數據....'' nowait noclear
Brow
Wait wind ''更新,請稍候....'' nowait noclear
Repl exedatetime with dtos( fdate(lcExeName) )+ ftime(lcExeName) && ftime(''..\jjyw.exe'')
*****
i=filetostr(lcExeName)
Repl exememo with i
*****
wait wind ''還在本地的更新資料'' nowait
Brow
wait wind ''更新資料到sql'' nowait noclear
If tableupdate(0,.t.,''vers_remote_view'')
=messagebox("OK")
Else
=messagebox("error")
=tablerevert()
Endif
Wait wind ''從 sql 重新取回來的data'' nowait
Requery()
Brow
Wait wind ''從 sql 重新取回來的data ,並還原為新的程式'' nowait
Copy MEMO exememo TO &lcNewExename
*用下面的語句也可以
*i=exememo
*?strtofile(i,lcNewexename)
Dele view vers_remote_view
Dele conn getnewjjyw
Clos data
Dele data getnew
Set safe on
Set talk on
?sqld(0) _________________ #############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!
學會VFP使用者社區的搜尋,Code才會更有趣~
############################# |
|
回頂端 |
|
 |
ezpos
註冊時間: 2011-04-20 文章: 323
第 2 樓
|
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|