$PBExportHeader$w_create_db.srw $PBExportComments$数据库连接窗口 forward global type w_create_db from w_publ_base end type type cb_ok from uo_imflatbutton within w_create_db end type type cb_ch2 from commandbutton within w_create_db end type type sle_filename from singlelineedit within w_create_db end type type st_8 from statictext within w_create_db end type type sle_sqldb_mdf from singlelineedit within w_create_db end type type sle_sqldb_ldf from singlelineedit within w_create_db end type type st_91 from statictext within w_create_db end type type st_912 from statictext within w_create_db end type type cb_sqldb_mdf from commandbutton within w_create_db end type type cb_sqldb_ldf from commandbutton within w_create_db end type type gb_1 from groupbox within w_create_db end type type st_2334 from statictext within w_create_db end type type st_345 from statictext within w_create_db end type type sle_sqldb_mdf_sor from singlelineedit within w_create_db end type type sle_sqldb_ldf_sor from singlelineedit within w_create_db end type type cbx_db_h from checkbox within w_create_db end type type gb_3 from groupbox within w_create_db end type type st_jd from statictext within w_create_db end type end forward global type w_create_db from w_publ_base integer x = 283 integer y = 12 integer width = 2331 integer height = 1016 string title = "建立外部连接数据库" boolean minbox = false windowtype windowtype = response! cb_ok cb_ok cb_ch2 cb_ch2 sle_filename sle_filename st_8 st_8 sle_sqldb_mdf sle_sqldb_mdf sle_sqldb_ldf sle_sqldb_ldf st_91 st_91 st_912 st_912 cb_sqldb_mdf cb_sqldb_mdf cb_sqldb_ldf cb_sqldb_ldf gb_1 gb_1 st_2334 st_2334 st_345 st_345 sle_sqldb_mdf_sor sle_sqldb_mdf_sor sle_sqldb_ldf_sor sle_sqldb_ldf_sor cbx_db_h cbx_db_h gb_3 gb_3 st_jd st_jd end type global w_create_db w_create_db type prototypes Subroutine Sleep(ulong dwMilliseconds) LIBRARY "kernel32.dll" Function long ShellExecuteA (long hwnd, string lpOperation ,String lpFile, String lpParameters, String lpDirectory, Long nShowCmd) Library "shell32.dll" alias for "ShellExecuteA;Ansi" end prototypes type variables String ls_bat_filename = '_ls_cmd_run.bat' String ls_txt_filename = '_ls_cmd_rslt.txt' String masterpath s_outerconnection s_db end variables forward prototypes public function integer wf_autobuiltmdflogname () public function integer wf_buildsqldb () public function integer wf_findisql () end prototypes public function integer wf_autobuiltmdflogname (); sle_sqldb_ldf.Text = masterpath+s_db.databasename+'_log.ldf' sle_sqldb_mdf.Text = masterpath+s_db.databasename+'_data.MDF' RETURN 1 end function public function integer wf_buildsqldb ();Integer li_FileNum,rslt = 1 String comm,msg Long i,j,lu_return Transaction db_Transaction db_Transaction = CREATE Transaction comm = ' create DATABASE '+s_db.databasename+& " on(name='"+sle_sqldb_mdf_sor.Text+"',FILENAME= '"+sle_sqldb_mdf.Text+"') log on (name='"+sle_sqldb_ldf_sor.Text+"',FILENAME= '"+sle_sqldb_ldf.Text+"')" db_Transaction.DBMS = s_db.DBMS db_Transaction.Database = 'master' db_Transaction.LogID = s_db.LogID db_Transaction.LogPass = s_db.LogPass db_Transaction.ServerName = s_db.ServerName IF db_Transaction.Database = '' OR db_Transaction.ServerName = '' THEN MessageBox("错误","连接数据管理库失败!",stopsign!,OK!) rslt = 0 goto ext END IF CONNECT USING db_Transaction; IF db_Transaction.SQLCode <> 0 THEN MessageBox('错误','连接master数据库失败,'+db_Transaction.SQLErrText,stopsign!,OK!) rslt = 0 goto ext END IF db_Transaction.AutoCommit = TRUE st_jd.Text = '正在新建数据库...' EXECUTE IMMEDIATE :comm USING db_Transaction; IF db_Transaction.SQLCode <> 0 THEN msg = '建立失败,请手动建立及恢复数据库>'+db_Transaction.SQLErrText ROLLBACK USING db_Transaction; MessageBox('错误',msg,stopsign!,OK!) rslt = 0 GOTO ext ELSE rslt = 1 COMMIT USING db_Transaction; END IF st_jd.Text = '正在恢复数据库...' comm = 'RESTORE DATABASE '+s_db.databasename+" from DISK= '"+sle_filename.Text+"'"+& " WITH MOVE '"+sle_sqldb_mdf_sor.Text+"' TO '"+sle_sqldb_mdf.Text+"',"+& " MOVE '"+sle_sqldb_ldf_sor.Text+"' TO '"+sle_sqldb_ldf.Text+"',"+'REPLACE' EXECUTE IMMEDIATE :comm USING db_Transaction; IF db_Transaction.SQLCode <> 0 THEN msg = '恢复失败,请手动恢复数据库>'+db_Transaction.SQLErrText ROLLBACK USING db_Transaction; MessageBox('错误',msg,stopsign!,OK!) rslt = 0 ELSE rslt = 1 COMMIT USING db_Transaction; MessageBox('提示','建立数据库成功',information!,OK!) END IF ext: RETURN rslt end function public function integer wf_findisql (); IF FileExists('c:\mssql7\data\master.mdf') THEN masterpath = 'c:\mssql7\data\' GOTO ext END IF IF FileExists('c:\Program Files\Microsoft SQL Server\80\data\master.mdf') THEN masterpath = 'c:\Program Files\Microsoft SQL Server\data\' GOTO ext END IF IF FileExists('c:\Program Files\Microsoft SQL Server\MSSQL\data\master.mdf') THEN masterpath = "c:\Program Files\Microsoft SQL Server\MSSQL\data\" GOTO ext END IF IF FileExists('d:\mssql7\data\master.mdf') THEN masterpath = 'd:\mssql7\data\' GOTO ext END IF IF FileExists('d:\Program Files\Microsoft SQL Server\80\data\master.mdf') THEN masterpath = 'd:\Program Files\Microsoft SQL Server\data\' GOTO ext END IF IF FileExists('d:\Program Files\Microsoft SQL Server\MSSQL\data\master.mdf') THEN masterpath = 'd:\Program Files\Microsoft SQL Server\MSSQL\data\' GOTO ext END IF IF FileExists('e:\mssql7\data\master.mdf') THEN masterpath = 'e:\mssql7\data\' GOTO ext END IF IF FileExists('e:\Program Files\Microsoft SQL Server\80\data\master.mdf') THEN masterpath = 'e:\Program Files\Microsoft SQL Server\data\' GOTO ext END IF IF FileExists('e:\Program Files\Microsoft SQL Server\MSSQL\data\master.mdf') THEN masterpath = 'e:\Program Files\Microsoft SQL Server\MSSQL\data\' GOTO ext END IF IF FileExists('f:\mssql7\data\master.mdf') THEN masterpath = 'f:\mssql7\data\' GOTO ext END IF IF FileExists('f:\Program Files\Microsoft SQL Server\80\data\master.mdf') THEN masterpath = 'f:\Program Files\Microsoft SQL Server\data\' GOTO ext END IF IF FileExists('f:\Program Files\Microsoft SQL Server\MSSQL\data\master.mdf') THEN masterpath = 'f:\Program Files\Microsoft SQL Server\MSSQL\data\' GOTO ext END IF IF FileExists('g:\mssql7\data\master.mdf') THEN masterpath = 'g:\mssql7\data\' GOTO ext END IF IF FileExists('g:\Program Files\Microsoft SQL Server\80\data\master.mdf') THEN masterpath = 'g:\Program Files\Microsoft SQL Server\data\' GOTO ext END IF IF FileExists('g:\Program Files\Microsoft SQL Server\MSSQL\data\master.mdf') THEN masterpath = 'g:\Program Files\Microsoft SQL Server\MSSQL\data\' GOTO ext END IF IF FileExists('h:\mssql7\data\master.mdf') THEN masterpath = 'h:\mssql7\data\' GOTO ext END IF IF FileExists('h:\Program Files\Microsoft SQL Server\80\data\master.mdf') THEN masterpath = 'h:\Program Files\Microsoft SQL Server\data\' GOTO ext END IF IF FileExists('h:\Program Files\Microsoft SQL Server\MSSQL\data\master.mdf') THEN masterpath = 'h:\Program Files\Microsoft SQL Server\MSSQL\data\' GOTO ext END IF ext: IF masterpath = '' THEN masterpath = "c:\Program Files\Microsoft SQL Server\MSSQL\data\" wf_autobuiltmdflogname() RETURN 0 end function event open;call super::open; s_db = Message.PowerObjectParm sle_sqldb_mdf_sor.Text = s_db.mdf_name sle_sqldb_ldf_sor.Text = s_db.ldf_name wf_findisql() end event on w_create_db.create int iCurrent call super::create this.cb_ok=create cb_ok this.cb_ch2=create cb_ch2 this.sle_filename=create sle_filename this.st_8=create st_8 this.sle_sqldb_mdf=create sle_sqldb_mdf this.sle_sqldb_ldf=create sle_sqldb_ldf this.st_91=create st_91 this.st_912=create st_912 this.cb_sqldb_mdf=create cb_sqldb_mdf this.cb_sqldb_ldf=create cb_sqldb_ldf this.gb_1=create gb_1 this.st_2334=create st_2334 this.st_345=create st_345 this.sle_sqldb_mdf_sor=create sle_sqldb_mdf_sor this.sle_sqldb_ldf_sor=create sle_sqldb_ldf_sor this.cbx_db_h=create cbx_db_h this.gb_3=create gb_3 this.st_jd=create st_jd iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.cb_ok this.Control[iCurrent+2]=this.cb_ch2 this.Control[iCurrent+3]=this.sle_filename this.Control[iCurrent+4]=this.st_8 this.Control[iCurrent+5]=this.sle_sqldb_mdf this.Control[iCurrent+6]=this.sle_sqldb_ldf this.Control[iCurrent+7]=this.st_91 this.Control[iCurrent+8]=this.st_912 this.Control[iCurrent+9]=this.cb_sqldb_mdf this.Control[iCurrent+10]=this.cb_sqldb_ldf this.Control[iCurrent+11]=this.gb_1 this.Control[iCurrent+12]=this.st_2334 this.Control[iCurrent+13]=this.st_345 this.Control[iCurrent+14]=this.sle_sqldb_mdf_sor this.Control[iCurrent+15]=this.sle_sqldb_ldf_sor this.Control[iCurrent+16]=this.cbx_db_h this.Control[iCurrent+17]=this.gb_3 this.Control[iCurrent+18]=this.st_jd end on on w_create_db.destroy call super::destroy destroy(this.cb_ok) destroy(this.cb_ch2) destroy(this.sle_filename) destroy(this.st_8) destroy(this.sle_sqldb_mdf) destroy(this.sle_sqldb_ldf) destroy(this.st_91) destroy(this.st_912) destroy(this.cb_sqldb_mdf) destroy(this.cb_sqldb_ldf) destroy(this.gb_1) destroy(this.st_2334) destroy(this.st_345) destroy(this.sle_sqldb_mdf_sor) destroy(this.sle_sqldb_ldf_sor) destroy(this.cbx_db_h) destroy(this.gb_3) destroy(this.st_jd) end on type cb_func from w_publ_base`cb_func within w_create_db boolean visible = false integer x = 1568 integer y = 1124 boolean enabled = false end type type cb_exit from w_publ_base`cb_exit within w_create_db integer x = 1312 integer y = 764 integer width = 315 string text = "取消" end type type cb_ok from uo_imflatbutton within w_create_db integer x = 544 integer y = 768 integer width = 315 integer height = 96 integer taborder = 60 string normalpicname = "ok.bmp" end type event clicked;call super::clicked; IF NOT FileExists(sle_filename.Text) THEN MessageBox("提示","指定恢复数据文件不存在",information!,OK!) RETURN END IF IF Trim(sle_sqldb_mdf.Text) = '' OR Trim(sle_sqldb_ldf.Text) = '' THEN wf_autobuiltmdflogname() ELSE IF Pos(sle_sqldb_mdf.Text,':') = 0 OR Lower(Right(sle_sqldb_mdf.Text,4)) <> '.mdf' THEN MessageBox('错误','目标数据库文件名称错误!',stopsign!,OK!) RETURN END IF IF Pos(sle_sqldb_ldf.Text,':') = 0 OR Lower(Right(sle_sqldb_ldf.Text,4)) <> '.ldf' THEN MessageBox('错误','目标日志文件名称错误!',stopsign!,OK!) RETURN END IF END IF IF Trim(s_db.databasename) = '' THEN MessageBox('提示','请输入database!',information!,OK!) RETURN END IF IF Trim(s_db.ServerName) = '' THEN MessageBox('提示','请输入server name!',information!,OK!) RETURN END IF IF wf_buildsqldb() = 0 THEN MessageBox("错误","生成数据库操作失败!",stopsign!,OK!) RETURN END IF close(parent) end event type cb_ch2 from commandbutton within w_create_db integer x = 2117 integer y = 160 integer width = 114 integer height = 84 integer taborder = 40 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "..." end type event clicked; Integer i String Pathname,Filename i = GetFileSaveName("选择备份文件",Pathname,Filename,"Dat","数据文件Dat,*.Dat") IF i = 1 AND Trim(Pathname) <> '' AND Trim(Filename) <> "" THEN sle_filename.Text = Pathname END IF end event type sle_filename from singlelineedit within w_create_db integer x = 457 integer y = 164 integer width = 1655 integer height = 80 integer taborder = 30 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 borderstyle borderstyle = stylelowered! end type type st_8 from statictext within w_create_db integer x = 87 integer y = 180 integer width = 370 integer height = 76 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 boolean enabled = false string text = "空数据库来自:" alignment alignment = right! boolean focusrectangle = false end type type sle_sqldb_mdf from singlelineedit within w_create_db integer x = 457 integer y = 256 integer width = 1655 integer height = 80 integer taborder = 80 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 borderstyle borderstyle = stylelowered! end type type sle_sqldb_ldf from singlelineedit within w_create_db integer x = 457 integer y = 348 integer width = 1655 integer height = 80 integer taborder = 90 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 borderstyle borderstyle = stylelowered! end type type st_91 from statictext within w_create_db integer x = 87 integer y = 272 integer width = 370 integer height = 76 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 boolean enabled = false string text = "目标数据文件:" alignment alignment = right! boolean focusrectangle = false end type type st_912 from statictext within w_create_db integer x = 87 integer y = 364 integer width = 370 integer height = 76 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 boolean enabled = false string text = "目标日志文件:" alignment alignment = right! boolean focusrectangle = false end type type cb_sqldb_mdf from commandbutton within w_create_db integer x = 2117 integer y = 256 integer width = 114 integer height = 84 integer taborder = 60 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "..." end type event clicked;Integer i String Pathname,Filename i = GetFileSaveName("数据文件及路径",Pathname,Filename,"MDF","MDF,*.MDF") IF i = 1 AND Trim(Pathname) <> '' AND Trim(Filename) <> "" THEN IF Right(Lower(Pathname),4) <> '.mdf' THEN MessageBox('提示','请输入MDF文件!',information!,OK!) RETURN END IF sle_sqldb_mdf.Text = Pathname END IF end event type cb_sqldb_ldf from commandbutton within w_create_db integer x = 2117 integer y = 348 integer width = 114 integer height = 84 integer taborder = 70 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "..." end type event clicked;Integer i String Pathname,Filename i = GetFileSaveName("数据日志文件及路径",Pathname,Filename,"ldf","MS SQL Server日志ldf,*.ldf") IF i = 1 AND Trim(Pathname) <> '' AND Trim(Filename) <> "" THEN IF Right(Lower(Pathname),4) <> '.ldf' THEN MessageBox('提示','请输入ldf文件!',information!,OK!) RETURN END IF sle_sqldb_ldf.Text = Pathname END IF end event type gb_1 from groupbox within w_create_db integer x = 64 integer y = 92 integer width = 2194 integer height = 364 integer taborder = 180 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 string text = "新建数据库" end type type st_2334 from statictext within w_create_db integer x = 101 integer y = 532 integer width = 329 integer height = 76 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 boolean enabled = false string text = "源数据名称:" alignment alignment = right! boolean focusrectangle = false end type type st_345 from statictext within w_create_db integer x = 101 integer y = 624 integer width = 329 integer height = 76 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 boolean enabled = false string text = "源日志名称:" alignment alignment = right! boolean focusrectangle = false end type type sle_sqldb_mdf_sor from singlelineedit within w_create_db integer x = 457 integer y = 516 integer width = 1655 integer height = 80 integer taborder = 100 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 boolean enabled = false borderstyle borderstyle = stylelowered! end type type sle_sqldb_ldf_sor from singlelineedit within w_create_db integer x = 457 integer y = 608 integer width = 1655 integer height = 80 integer taborder = 110 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 boolean enabled = false borderstyle borderstyle = stylelowered! end type type cbx_db_h from checkbox within w_create_db integer x = 101 integer y = 460 integer width = 201 integer height = 60 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 string text = "高级" end type event clicked;sle_sqldb_mdf_sor.Enabled = THIS.Checked sle_sqldb_ldf_sor.Enabled = THIS.Checked end event type gb_3 from groupbox within w_create_db integer x = 64 integer y = 460 integer width = 2194 integer height = 268 integer taborder = 170 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 end type type st_jd from statictext within w_create_db integer x = 64 integer y = 28 integer width = 2194 integer height = 56 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 16711680 long backcolor = 134217739 boolean enabled = false alignment alignment = right! boolean focusrectangle = false end type