  | 
				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 樓
  | 
		 | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |