Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]谁能帮我写这个判断条件函数?

小英  发表于:2013-06-11 11:40:52  
复制

图片是按这个表来记录的。
比如删除图片编号为37,则删除37条记录,而存放在指定文件夹中的图片不被删除,因为36还要显示该图片
相反,删除35条记录,则图片也相应被删除掉,因为其他条记录不用到该图片显示了

 

Top
殷小宝 发表于:2013-06-11 23:47:24
看来图片存储的是OLE对象了,从表视图上看,不像是,而是存在另一文件夹中,否则怎么有图片目录呢?只管删除,其实删除的是图片名称,并没有删除文件夹中的图片.

黎红军 发表于:2013-06-12 14:27:44

楼主的意思好像是在删除记录行时,需要判别这行记录中的图片是否还有其他的记录用到这个图片,如果没有,则是可以删除的,如果有,这是不可以删除的。

对不? 楼主?

如果是这样,在删除记录行的代码中增加if..then..的代码。用dcount函数判别是否该行记录对应图片名称的记录数量。



黎红军 发表于:2013-06-12 14:27:44

楼主的意思好像是在删除记录行时,需要判别这行记录中的图片是否还有其他的记录用到这个图片,如果没有,则是可以删除的,如果有,这是不可以删除的。

对不? 楼主?

如果是这样,在删除记录行的代码中增加if..then..的代码。用dcount函数判别是否该行记录对应图片名称的记录数量。



小英 发表于:2013-06-13 14:44:44

二楼是读懂我意思了,只是具体代码该如何编写,能帮我写出来吗?



小英 发表于:2013-06-13 15:23:06

我套用别人的代码:结果就是存在文件夹中没用到的图片未被删除,就是说不能准确地做出判断

Private Sub 清除_Click()
    'Me.图片名称 = Null
    'Call Form_Current
    On Error GoTo Err_清除_Click
    Dim FSO As Object
    Dim 图片名称 As String

     If (Not IsNull(DLookup("[图片编号]", "tbl信息图片表", "[图片名称] ='" & Me![图片名称] & "'"))) Then

        MsgBox "清除当前图片"
        Me!图像控件.Picture = ""                                    '清除图像

    Else
        'If Not IsNull(Me.图片名称) Then
        Set FSO = CreateObject("Scripting.FileSystemObject")
          If FSO.FileExists(Me!图像控件.Picture) = True Then
              FSO.Deletefile Me!图像控件.Picture
              Me!图像控件.Picture = ""                                    '清除图像
              Set FSO = Nothing
          End If
    End If
    DoCmd.RunCommand acCmdDeleteRecord
    DoCmd.GoToRecord , , acNewRec
    Me.图片数量.Requery
Exit_清除_Click:
    Exit Sub

Err_清除_Click:
    MsgBox Err.Description
    Resume Exit_清除_Click
End Sub

 



黎红军 发表于:2013-06-13 20:33:39

在上面这段代码中,看到的应当是清除窗体中图片控件显示的,然后是删除相应记录行的。判断图片是否该删除,不应当用dlookup函数,而应当是dcount 函数。

然后增加删除那个带有文件路径下的图片文件代码。



黎红军 发表于:2013-06-13 20:40:24

我理解有误,你里面的删除文件代码也是有的,只是不带文件路径,应当是这个问题。

请参考这个网页的信息:用VBA代码删除指定文件夹及其中的所有文件

http://www.accessoft.com/article-show.asp?id=3886



小英 发表于:2013-06-22 15:26:38

我是要判断文件夹里面的文件,而不是文件夹

思路还是有差异的,



煮江品茶 发表于:2013-06-24 11:06:49

很简单,倒置处理:先删除记录,再找不在记录中的图片予以删除即可。

 

Private Sub 清除_Click()
 
 dim ssql as string
 dim ctrls as controls
 dim path as string

 set ctrls=me.tbl信息图片表.form.controls

 '删除记录
 ssql="delete * from tbl信息图片表 where 图片编号=" & ctrls("图片编号").value
 CurrentDb.Execute ssql
 me.tbl信息图片表.form.Requery
  
 '删除图片
 path=ctrls("图片目录")
 call Delpic(path)
End Sub

 

Sub Delpic(ByVal path As String)
    '引用:Microsoft Scripting Runtime
    Dim fso As New FileSystemObject
    Dim fld As Folder
    Dim f As File
    If fso.FolderExists(path) = True Then
        Set fld = fso.GetFolder(path)
        For Each f In fld.Files
            If DCount("*", "tbl信息图片表", "图片名称='" & f.Name & "'") = 0 Then
                f.Delete
            End If
        Next
    End If
    Set fso = Nothing
    Set fld = Nothing
End Sub

 



小英 发表于:2013-07-01 16:22:37

tbl信息图片表找不见成员????

殷小宝 发表于:2013-07-03 23:52:32
 path=ctrls("图片目录"),煮江品茶老师,图片目录在这里为空,没有存储其具体路径。

小英 发表于:2013-07-10 09:59:49

Set ctrls = Me.[tbl信息图片表].Form.Controls

这句话找不到表,该如何写



沈军 发表于:2013-07-10 17:58:00
小英你好!方便的话你把附件发上来连同图片在内的文件夹,不方便的话只要发那个部分就行,你的意思大家都明白,可是存储图片的文件夹在哪里?这是关键!是本地还是异地?如果有详细的文件夹路径一切将会很简单。

小英 发表于:2013-07-12 11:11:29
沈军 发表于:2013-07-12 16:52:27

三个压缩包只能得到上面的文件



小英 发表于:2013-07-12 17:32:21

你解压错了,三个压缩包放在一起全部解压完就得到全部的了,我没有放图片,可以自己添加试试就知道了

下载的时候最好分别重命名为:01、02、03,这样就能够一次性解压完全部的了。

 



小英 发表于:2013-08-21 15:39:51
怎么没有人能帮我解决

总记录:17篇  页次:1/1 9 1 :