回 帖 发 新 帖 刷新版面

主题:菜鸟有难题,请高手解决

我在数据窗口中,有一个字段设为DDLBOX .便于让客户选择。
现在我在程序中想在这个字段里再添加一个选择项如何实现

我设计了一个MID风格的窗口。在他的子窗口里的一个按钮想
改变MID主窗口的标题栏如何实现

pb 6.5里能否实现备份和还原数据库(sqlserver)

注:我使用的是 pb6.5+sqlserver

回复列表 (共4个回复)

沙发

可以在表的列上再加一个确认量

板凳

pb 6.5里能否实现备份和还原数据库(sqlserver)

可以.

3 楼

备份数据库
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 楼

恢复或新建

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 + " 建立成功!")

我来回复

您尚未登录,请登录后再回复。点此登录或注册