Foxtable(狐表)用户栏目专家坐堂 → [求助]多文件管理


  共有3294人关注过本帖树形打印复制链接

主题:[求助]多文件管理

帅哥哟,离线,有人找我吗?
lesliecheung912
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:452 积分:3015 威望:0 精华:0 注册:2014/4/23 17:12:00
[求助]多文件管理  发帖心情 Post By: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的值为什么变了呢?(再打开时,两个值又变成相同的)

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/14 14:52:00 [只看该作者]

 不理解你什么意思,如果你对文件进行了修改保存,值肯定是会改变了。

 回到顶部
帅哥哟,离线,有人找我吗?
lesliecheung912
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:452 积分:3015 威望:0 精华:0 注册:2014/4/23 17:12:00
  发帖心情 Post By:2014/10/14 14:58:00 [只看该作者]

我只是将文件在Webbrowser中打开,并没有做什么修改,为什么值会改变呢?这个终止进程的代码有关系吗?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/14 15:14:00 [只看该作者]

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

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/14 15:16:00 [只看该作者]

 设置不保存,参考

 

doc.Saved = true


 回到顶部
帅哥哟,离线,有人找我吗?
lesliecheung912
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:452 积分:3015 威望:0 精华:0 注册:2014/4/23 17:12:00
  发帖心情 Post By:2014/10/14 15:36:00 [只看该作者]

谢谢甜姐!

 回到顶部
帅哥哟,离线,有人找我吗?
lesliecheung912
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:452 积分:3015 威望:0 精华:0 注册:2014/4/23 17:12:00
  发帖心情 Post By: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
请问那地方有问题呢?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/14 16:15:00 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
lesliecheung912
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:452 积分:3015 威望:0 精华:0 注册:2014/4/23 17:12:00
  发帖心情 Post By:2014/10/14 16:21:00 [只看该作者]

改成这样也不行啊:Dim fileName = ProjectPath & "Attachments\方案申请.doc"
那这个路径应该怎么设置?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/14 16:30:00 [只看该作者]

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

 

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

 


 回到顶部
总数 12 1 2 下一页