主题:菜鸟有难题,请高手解决
gavinlin
[专家分:0] 发布于 2005-11-10 16:03:00
我在数据窗口中,有一个字段设为DDLBOX .便于让客户选择。
现在我在程序中想在这个字段里再添加一个选择项如何实现
我设计了一个MID风格的窗口。在他的子窗口里的一个按钮想
改变MID主窗口的标题栏如何实现
pb 6.5里能否实现备份和还原数据库(sqlserver)
注:我使用的是 pb6.5+sqlserver
回复列表 (共4个回复)
沙发
lihang7059 [专家分:140] 发布于 2005-11-11 08:55:00
可以在表的列上再加一个确认量
板凳
潇洒老乌龟 [专家分:1050] 发布于 2005-12-30 21:59:00
pb 6.5里能否实现备份和还原数据库(sqlserver)
可以.
3 楼
潇洒老乌龟 [专家分:1050] 发布于 2005-12-30 22:00:00
备份数据库
STRING Ls_ServerName
STRING Ls_DBName
STRING Ls_UserName
STRING Ls_DBPwd
STRING Ls_DbFileR
Ls_ServerName = lower(TRIM(sle_servernamer.Text))
Ls_DBName = lower(TRIM(sle_dbnamer.Text))
Ls_UserName = lower(TRIM(sle_usernamer.Text))
Ls_DBPwd = lower(TRIM(sle_passwordr.Text))
Ls_DbFileR = lower(TRIM(sle_dbfiler.Text))
//判断各数据值是否有效
IF LEN(Ls_ServerName) <=0 THEN
MessageBox("系统提示!" , "请输入服务器名!")
sle_servernamer.SelectText(1 , LEN(sle_servernamer.Text))
sle_servernamer.SetFocus()
RETURN
END IF
IF LEN(Ls_DBName) <=0 THEN
MessageBox("系统提示!" , "请输入数据库名!")
sle_dbnamer.SelectText(1 , LEN(sle_dbnamer.Text))
sle_dbnamer.SetFocus()
RETURN
END IF
IF LEN(Ls_UserName) <=0 THEN
MessageBox("系统提示!" , "请输入数据库用户名!")
sle_usernamer.SelectText(1 , LEN(sle_usernamer.Text))
sle_usernamer.SetFocus()
RETURN
END IF
IF LEN(Ls_DbFileR) <=0 THEN
MessageBox("系统提示!" , "请输入数据库备份地址!")
sle_dbfiler.SelectText(1 , LEN(sle_dbfiler.Text))
sle_dbfiler.SetFocus()
RETURN
END IF
IF FileExists(Ls_DbFileR) = TRUE THEN
IF MessageBox("系统提示!" , "数据库备份文件:" + Ls_DbFileR + " 已经存在!覆盖吗?" , Question! , YesNo! , 2) = 2 THEN
RETURN
END IF
END IF
//检查数据库是否存在
SetPointer(HourGlass!)
DISCONNECT USING sqlca;
sqlca.DBMS = "MSS Microsoft SQL Server"
sqlca.Database = Ls_DBName
sqlca.ServerName = Ls_ServerName
sqlca.LogId = Ls_UserName
sqlca.LogPass = Ls_DBPwd
sqlca.AutoCommit = TRUE
sqlca.DBParm = ""
CONNECT USING sqlca;
IF sqlca.sqlcode <> 0 THEN
MESSAGEBOX("系统提示!" , "数据库:" + Ls_DBName + "不存在,不能备份!")
SetPointer(Arrow!)
RETURN
END IF
//开始备份
STRING Ls_Use
SetPointer(HourGlass!)
Ls_Use = 'EXEC' + '(' + "'" + Ls_DBName + SQLCA.Database + "'" + ')'
EXECUTE IMMEDIATE :Ls_Use ;
SQLCA.AutoCommit = TRUE
Ls_Use = "EXEC sp_addumpdevice 'disk' , 'coolnan' , '" + Ls_DbFileR + "'" //数据库备份设备的创建
EXECUTE IMMEDIATE : Ls_Use ;
Ls_Use ='BACKUP DATABASE ' + Ls_DBName + ' TO coolnan'
EXECUTE IMMEDIATE : Ls_Use ;
IF SQLCA.SqlCode = -1 THEN
MESSAGEBOX("系统提示!" , "数据库备份失败!~r~n~r~n请检查路径正确与否?")
sqlca.sqlcode = 0
sqlca.sqldbcode = 0
Ls_Use = "EXEC sp_dropdevice 'coolnan'"
EXECUTE IMMEDIATE :Ls_Use ;
SQLCA.AutoCommit = FALSE
RETURN
END IF
Ls_Use = "EXEC sp_dropdevice 'coolnan'"
EXECUTE IMMEDIATE :Ls_Use;
//操作备份记录
INTEGER Li_FileNum
STRING Ls_FileName
STRING Ls_Content
Ls_FileName = Gs_Dir + "\backup.txt"
IF FILEEXISTS(Ls_FileName) = TRUE THEN
Li_FileNum = FileOpen(Ls_FileName , LineMode! , Write! , LockWrite! , Append!)
ELSE
Li_FileNum = FileOpen(Ls_FileName , LineMode! , Write! , LockWrite! , Replace!)
END IF
IF Li_FileNum = - 1 THEN
MESSAGEBOX("系统提示!" , "操作文件backup.txt错误!请与管理员联系!")
RETURN
END IF
Ls_Content = "admin " + STRING(TODAY() , "YYYY-MM-DD") + " " + STRING(NOW() , "HH:MM:SS") + " " + Ls_ServerName + " " + Ls_DBName + " " + Ls_DbFileR
FileWrite(Li_FileNum , Ls_Content)
FileClose(Li_FileNum)
SetPointer(Arrow!)
MESSAGEBOX("系统提示!" , "数据库:" + Ls_DBName + " 备份成功!")
4 楼
潇洒老乌龟 [专家分:1050] 发布于 2005-12-30 22:02:00
恢复或新建
STRING Ls_ServerName
STRING Ls_DBName
STRING Ls_UserName
STRING Ls_DBPwd
STRING Ls_DbFileC
STRING Ls_DbMDF
STRING Ls_DbLDF
Ls_ServerName = lower(TRIM(sle_servernamec.Text))
Ls_DBName = lower(TRIM(sle_dbnamec.Text))
Ls_UserName = lower(TRIM(sle_usernamec.Text))
Ls_DBPwd = lower(TRIM(sle_passwordc.Text))
Ls_DbFileC = lower(TRIM(sle_dbfilec.Text))
Ls_DbMDF = lower(TRIM(sle_dbsave.Text))
Ls_DbLDF = lower(LEFT(TRIM(sle_dbsave.Text) , LEN(TRIM(sle_dbsave.Text)) - 8)) + "Log.LDF"
//判断各数据值是否有效
IF LEN(Ls_ServerName) <=0 THEN
MessageBox("系统提示!" , "请输入服务器名!")
sle_servernamec.SelectText(1 , LEN(sle_servernamec.Text))
sle_servernamec.SetFocus()
RETURN
END IF
IF LEN(Ls_DBName) <=0 THEN
MessageBox("系统提示!" , "请输入数据库名!")
sle_dbnamec.SelectText(1 , LEN(sle_dbnamec.Text))
sle_dbnamec.SetFocus()
RETURN
END IF
IF LEN(Ls_UserName) <=0 THEN
MessageBox("系统提示!" , "请输入数据库用户名!")
sle_usernamec.SelectText(1 , LEN(sle_usernamec.Text))
sle_usernamec.SetFocus()
RETURN
END IF
IF LEN(Ls_DbMDF) <=0 THEN
MessageBox("系统提示!" , "请输入数据库创建地址!")
sle_dbsave.SelectText(1 , LEN(sle_dbsave.Text))
sle_dbsave.SetFocus()
RETURN
END IF
IF LEN(Ls_DbFileC) <=0 THEN
MessageBox("系统提示!" , "请输入数据库文件地址!")
sle_dbfilec.SelectText(1 , LEN(sle_dbfilec.Text))
sle_dbfilec.SetFocus()
RETURN
END IF
IF FileExists(Ls_DbFileC) = FALSE THEN
MessageBox("系统提示!" , "数据库文件地址:" + Ls_DbFileC + " 无效!")
sle_dbfilec.SelectText(1 , LEN(sle_dbfilec.Text))
sle_dbfilec.SetFocus()
RETURN
END IF
//检查数据库是否存在
SetPointer(HourGlass!)
DISCONNECT USING sqlca;
sqlca.DBMS = "MSS Microsoft SQL Server"
sqlca.Database = Ls_DBName
sqlca.ServerName = Ls_ServerName
sqlca.LogId = Ls_UserName
sqlca.LogPass = Ls_DBPwd
sqlca.AutoCommit = TRUE
sqlca.DBParm = ""
CONNECT USING sqlca;
IF sqlca.sqlcode = 0 THEN
MESSAGEBOX("系统提示!" , "数据库:" + Ls_DBName + "已经存在,不能新建!")
SetPointer(Arrow!)
RETURN
END IF
//还原数据库
DISCONNECT USING sqlca;
STRING Ls_Statement
Ls_Statement = "RESTORE DATABASE " + Ls_DBName + " " + &
"FROM DISK = '" + Ls_DbFileC + "' " + &
"WITH " + &
"MOVE 'School_Data' TO '" + Ls_DbMDF + "' , " + &
"MOVE 'School_Log' TO '" + Ls_DbLDF + "'"
sqlca.DBMS = "MSS Microsoft SQL Server"
sqlca.Database = "master"
sqlca.ServerName = Ls_ServerName
sqlca.LogId = Ls_UserName
sqlca.LogPass = Ls_DBPwd
sqlca.AutoCommit = TRUE
sqlca.DBParm = ""
CONNECT USING sqlca;
IF sqlca.sqlcode <> 0 THEN
MESSAGEBOX("系统提示!" , "数据库连接参数有误,不能连接数据库!")
SetPointer(Arrow!)
RETURN
END IF
EXECUTE IMMEDIATE :Ls_statement USING sqlca;
IF sqlca.SqlCode <> 0 THEN
MESSAGEBOX("系统提示!" , "无法新建数据库!请与管理员联系!~r~n~r~n" + sqlca.SQLErrText)
ROLLBACK USING sqlca;
SetPointer(Arrow!)
RETURN
END IF
//DISCONNECT USING sqlca;
//sqlca.DBMS = "MSS Microsoft SQL Server"
//sqlca.Database = Ls_DBName
//sqlca.ServerName = Ls_ServerName
//sqlca.LogId = Ls_UserName
//sqlca.LogPass = Ls_DBPwd
//sqlca.AutoCommit = FALSE
//sqlca.DBParm = ""
//CONNECT USING sqlca;
MESSAGEBOX("系统提示!" , "数据库:" + Ls_DBName + " 建立成功!")
我来回复