南一 发表于 2010-7-7 07:36:04

[已解决]关于FileSaveDialog 覆盖文件提示 返回值获取的问题

本帖最后由 南一 于 2010-7-14 14:34 编辑

在 使用FileSaveDialog 的时候遇到了点问题,求解。

在 FileSaveDialog 函数的选项中有个[可选参数]   16 = 提示覆盖文件

在http://www.autoitx.com/forum.php?mod=viewthread&tid=6519&highlight=filesave
这个帖子中,顽固不化 已经解答了,用在平常的一些文件上,是可以的。
在在创建数据这样的文件时,覆盖就会出错。

当然这边的参数不加,用FileExists来检测同名文件是否存在,然后弹出MsgBox加个选择判断也是行的。

就是想了解下如何去获取这个FileSaveDialog 覆盖文件的返回值,求解。

;文本文档测试
$Filepath=FileSaveDialog("保存",@ScriptDir,"文本文档(*.txt)",16,"Test.txt")
$Textfile=FileOpen($Filepath,8+2)
FileClose($Textfile)
;数据库文件创建测试
$MDBFilePath=FileSaveDialog("保存",@ScriptDir,"Microsoft Access 97-03 数据库(*.mdb)",16,"Test.mdb")
$NewMDB = ObjCreate("ADOX.Catalog")
$NewMDB.Create("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $MDBFilePath)
$NewMDB.ActiveConnection.Close

南一 发表于 2010-7-14 14:29:55

本帖最后由 南一 于 2010-7-14 14:32 编辑

大家都一直路过,只好自己解决了,方法比较另类。
就是用增加一个临时文件来判断,刚才的文件覆盖的返回值是否是 “是”。
如有更简单的方法,请各位不惜赐教。
$FileName = "Test"
$MDBFilePath = FileSaveDialog("保存", @ScriptDir, "Microsoft Access 97-03 数据库(*.mdb)", 16, $FileName & ".mdb")
If $MDBFilePath <> "" Then
        If FileExists($MDBFilePath) Then
                $MDBFilePath_Len = StringLen($MDBFilePath)
                $MDBFilePath_Seat = StringInStr($MDBFilePath, "\", 0, -1)
                $MDBFilePath_Dir = StringTrimRight($MDBFilePath, $MDBFilePath_Len + 1)
                $MDB_Temp = FileOpen($MDBFilePath_Dir & "\" & $FileName & ".mdb.Temp", 2 + 8)
                FileClose($MDB_Temp)
                FileDelete($MDBFilePath)
                FileDelete($MDBFilePath_Dir & "\" & $FileName & ".mdb.Temp")
        EndIf
        $NewMDB = ObjCreate("ADOX.Catalog")
        $NewMDB.Create("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $MDBFilePath)
        $NewMDB.ActiveConnection.Close

        $MDB_AddTable = ObjCreate("ADODB.Connection")
        $MDB_AddTable.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $MDBFilePath)
        $MDB_AddTable.Execute("CREATE TABLE Autoit(a text,b char)")
        $MDB_AddTable.Close
EndIf
页: [1]
查看完整版本: [已解决]关于FileSaveDialog 覆盖文件提示 返回值获取的问题