[已解决]关于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: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]