删除附件字段中的数据

时间:2017-02-15 00:31:35

标签: vba ms-access-2010

我有一个带附件字段的本地表。我尝试用vba手动删除并且以前的附件不断回来。在vba中,我尝试了一个记录集和SQL。 SQL

Let strSQL = "DELETE tblSpecsPics.PicID,tblSpecsPics.SpecID,tblSpecsPics.SpecDetailID,tblSpecsPics.PicNum,tblSpecsPics.Pic.FileData,tblSpecsPics.Pic.FileName,tblSpecsPics.Pic.FileType,tblSpecsPics.ImageDesc FROM tblSpecsPics;"

db.Execute strSQL, dbSeeChanges

记录集

Set rst = db.OpenRecordset("SELECT * FROM tblSpecsPics WHERE Not (tblSpecsPics.Pic.FileData) Is Null;", dbOpenDynaset, dbSeeChanges)

If Not rst.BOF And Not rst.EOF Then
rst.MoveFirst
Do Until rst.EOF
    rst.Edit
    Set rsv = rst.Fields(4).Value
    rsv.Delete
    rst.Update
    rst.MoveNext
Loop

结束如果

当我添加新记录时,旧附件会重新出现。

2 个答案:

答案 0 :(得分:1)

由于MS Access附件类型实际上是元数据的链接表( filename,filedata,fileflag,filetype,等),因此您需要删除这些基础链接记录。因此,请考虑在主表的附件字段值上嵌套另一个记录集循环:

strSQL = "SELECT * FROM tblSpecsPics WHERE Not (tblSpecsPics.Pic.FileData) Is Null;"

Set rst = db.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges)

If Not rst.BOF And Not rst.EOF Then
    rst.MoveFirst
End If

Do Until rst.EOF

    Set childrst = rst.Fields(4).Value
    Do Until childrst.EOF
       childrst.Delete
       childrst.MoveNext
    Loop

    rst.MoveNext
Loop

答案 1 :(得分:0)

我发现更新方法是不必要的。此外,为了清楚起见,我从附件的末尾开始并移回,因为如果删除/下一步会跳过所有其他记录,则不太明显。 Private Sub TestThis_Click()

On Error GoTo errHandler Dim rs1Count As Integer Dim rs1 As DAO.Recordset Dim rs2 As DAO.Recordset2 Dim strSql As String Dim db As Database rs1Count = 0 Set db = DBEngine(0)(0) strSql = "SELECT T_Vendor_Complaint_A.[F_VCN_A], T_Vendor_Complaint_A.[F_Attachments_A] FROM T_Vendor_Complaint_A WHERE T_Vendor_Complaint_A.[F_VCN_A] = 271" Set rs1 = db.OpenRecordset(strSql, dbOpenDynaset) rs1.MoveLast MsgBox ("rs1.RecordCount:" & rs1.RecordCount & " in T_Vendor_Complaint_A VCN:" & rs1![F_VCN_A]) Set rs2 = rs1!F_Attachments_A.value If rs2.RecordCount > 0 Then rs2.MoveLast Do Until rs2.RecordCount = 0 rs2.Delete rs2.MovePrevious Loop End If errExit: Exit Sub

errHandler: MsgBox Err.Number & ": " & Err.Description Exit Sub

End Sub

相关问题