以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]多文件管理  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=58247)

--  作者:lesliecheung912
--  发布时间:2014/10/14 14:43:00
--  [求助]多文件管理
在多文件管理中,选择一个Word文件并在窗口中的Webbrowser中打开,打开按钮代码:
Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("WinWord")
For Each p As System.Diagnostics.Process In ps
    p.kill
Next
If Tables("员工.附件").Current Is Nothing Then
    Return
End If
Dim dr As DataRow = Tables("员工.附件").Current.DataRow
Dim fl As String =  ProjectPath &  dr("文件名")
\'messagebox.show(fl)
\'messagebox.show(CRCCheckFile(fl))
\'messagebox.show(dr.SQLGetValue("CRC值"))
If FileSys.FileExists(fl) AndAlso CRCCheckFile(fl) = dr.SQLGetValue("CRC值") Then \'如果本地存在同名文件且CRC校验值相同
    Dim tm As String =  ProjectPath &  dr("_Identify") & ".doc"
    \'messagebox.show(1)
    If dr.SQLLoadFile("附件",tm) Then \'如果提取文件成功
        Dim wbr As WinForm.WebBrowser = e.Form.Controls("WebBrowser1")
        \'Dim fl As String  = ProjectPath & "Attachments\\方案申请.doc"
        Dim wrt As New WordReport(Tables("活动申请"),tm,fl)
        wrt.Build()
        wrt.Quit()
        wbr.OfficeToolBar = True \'如果不需要显示工具栏,可删除此行代码
        wbr.AddRess = fl
        axWebBrowser = Nothing
        Do Until axWebBrowser IsNot Nothing
            Application.DoEvents
        Loop
        Dim Doc As object = axWebBrowser.Gettype().InvokeMember("Document", System.Reflection.BindingFlags.GetProperty, Nothing, axWebBrowser, Nothing)
        Dim app As object = axWebBrowser.Gettype().InvokeMember("Application", System.Reflection.BindingFlags.GetProperty, Nothing, Doc, Nothing)
        doc.Protect (Password:="", NoReset:=False, Type:= _
        MsWord.WdProtectionType.wdAllowOnlyReading, UseIRM:=False, EnforceStyleLock:=False)
        
    End If
Else \'否则从数据库提取文件
    If dr.SQLLoadFile("附件",fl) = False Then \'如果提取文件失败
        Messagebox.Show("附件提取失败,可能并不存在附件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Return
    End If
End If
第一次打开时,CRCCheckFile(fl) = dr.SQLGetValue("CRC值") =0xd368ac79
再重复打开时,dr.SQLGetValue("CRC值") =0xd368ac79,但CRCCheckFile(fl) =0x132303f4;请问文件fl的CRC的值为什么变了呢?(再打开时,两个值又变成相同的)

--  作者:有点甜
--  发布时间:2014/10/14 14:52:00
--  
 不理解你什么意思,如果你对文件进行了修改保存,值肯定是会改变了。
--  作者:lesliecheung912
--  发布时间:2014/10/14 14:58:00
--  
我只是将文件在Webbrowser中打开,并没有做什么修改,为什么值会改变呢?这个终止进程的代码有关系吗?
--  作者:有点甜
--  发布时间:2014/10/14 15:14:00
--  

你打开以后,用vba设置成保护Protect,就是修改了,最后你不能保存,保存的话就修改了。

 

 


--  作者:有点甜
--  发布时间:2014/10/14 15:16:00
--  

 设置不保存,参考

 

doc.Saved = true


--  作者:lesliecheung912
--  发布时间:2014/10/14 15:36:00
--  
谢谢甜姐!
--  作者:lesliecheung912
--  发布时间:2014/10/14 16:06:00
--  
甜姐,我在插入图片以后将本地的文件上传到后台,会报如下错误:
图片点击可在新窗口打开查看此主题相关图片如下:222.png
图片点击可在新窗口打开查看

代码是:\'终止Word进程
Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("WinWord")
For Each p As System.Diagnostics.Process In ps
    p.kill
Next
\'\'\'往本地文件插入图片
Dim dr As DataRow = Tables("活动申请.wd").Current.DataRow
Dim app As New MSWord.Application
try
    Dim fileName = ProjectPath & dr("文件名")
    app.Documents.Open(fileName)
    app.Documents(fileName).Range(Start:=30, End:=40).InlineShapes.AddPicture(FileName:= _
        "D:\\123.jpg" _
        , LinkToFile:=False, SaveWithDocument:=True)
    app.Documents.save
    \'messagebox.show("您已成功插入图片!!")
catch ex As exception
    msgbox(ex.message)
finally
    \'app.Quit
End try

\'\'\'覆盖
If Tables("活动申请.wd").Current Is Nothing Then
    Return
End If
If dr.RowState = DataRowState.Added Then \'如果是新增行,必须先保存才能插入文件
    dr.Save()
End If
Dim tm As String = ProjectPath & dr("文件名")
If dr.SQLInsertFile("附件",tm) Then \'如果插入文件成功
    messagebox.show("您已覆盖成功!!")
Else
    messagebox.show("覆盖失败!!")
End If
请问那地方有问题呢?

--  作者:有点甜
--  发布时间:2014/10/14 16:15:00
--  

 可能文件路径错 Dim fileName = ProjectPath & dr("文件名")


--  作者:lesliecheung912
--  发布时间:2014/10/14 16:21:00
--  
改成这样也不行啊:Dim fileName = ProjectPath & "Attachments\\方案申请.doc"
那这个路径应该怎么设置?

--  作者:有点甜
--  发布时间:2014/10/14 16:30:00
--  

 加入msgbox,看哪句代码出问题。

 

 http://www.foxtable.com/help/topics/1485.htm