Vba Access Query或按钮,用于将数据从一个查询填充到另一个查询,而无需主键
我有一个数据库,里面有两个表,一个叫做面试,另一个叫做礼品卡 访谈表是一个访谈列表,其中包含很多变量,包括: ClientID、InterviewType、ConductedInterview、StatusID和InterviewDate 礼品卡表是礼品卡的库存表,包括: GiftcardNumber、CardType、Assigned、DateAdd和ClientID 我正在尝试设计一个表单(?可能是按钮),可以批量分配一张可用的礼品卡到完成的面试中 基本上,对于表中符合条件(InterviewType=1和ConductedInterview=1以及StatusID=2或4)的每次面试,我需要为该面试分配一个可用的卡号(由CardType=1和Assigned=0确定)。然后需要将面试的ClientID复制到Giftcard表上的ClientID字段 我想不出来。面试中的客户ID是作为面试本身的一部分填写的。但是Giftcard表上的ClientID字段是空的,直到将特定卡分配给该ClientID。使问题进一步复杂化的是,我需要始终首先分配最旧的礼品卡。这由DateAdded字段确定,然后在每个日期内由GiftcardNumber字段按升序排序 我需要能够批量分配所有的卡,理想情况下,一按按钮。我们一次分配数百张礼品卡Vba Access Query或按钮,用于将数据从一个查询填充到另一个查询,而无需主键,vba,ms-access,Vba,Ms Access,我有一个数据库,里面有两个表,一个叫做面试,另一个叫做礼品卡 访谈表是一个访谈列表,其中包含很多变量,包括: ClientID、InterviewType、ConductedInterview、StatusID和InterviewDate 礼品卡表是礼品卡的库存表,包括: GiftcardNumber、CardType、Assigned、DateAdd和ClientID 我正在尝试设计一个表单(?可能是按钮),可以批量分配一张可用的礼品卡到完成的面试中 基本上,对于表中符合条件(Intervie
有什么想法或建议吗?谢谢。我的方法是使用两个记录集 第一种是基于
访谈
表,选择符合指定标准的记录。第二种是基于Giftcards
表,再次选择符合要求的记录,在两个字段上排序。然后,您将遍历这两个记录集,直到处理完第一个记录集中的所有记录
可能是这样的(由于我没有填充完整的数据集,所以没有进行完全测试):
您可能希望向rsInterview
添加额外字段,以便更新礼品卡的分配,并且您可能还希望向该记录集中添加排序顺序,以便此处也有分配顺序。此外,rsGiftcard
中的Assigned
字段也可能需要更新
关于,为什么要标记MySql?好的,所以您的代码运行良好,我非常感谢。我确实做了一些修改以适应语言。但效果很好。我考虑了你关于礼品卡分配的评论。我真正想做的是,每当一张卡片被分配到一个收据表时,添加一个新的记录,其中包含来自面试表和礼品卡表的信息。但是我想不出来。有什么想法吗?我真的很感谢你的帮助。请问一个新问题,说明你做了什么,以及你到底想做什么。
Sub sAssignGiftCards()
On Error GoTo E_Handle
Dim db As DAO.Database
Dim rsInterview As DAO.Recordset
Dim rsGiftcard As DAO.Recordset
Dim strSQL As String
Set db = CurrentDb
strSQL = "SELECT ClientID FROM Interviews " _
& " WHERE InterviewType=1 " _
& " AND ConductedInterview=1 " _
& " AND StatusID IN(2,4);"
Set rsInterview = db.OpenRecordset(strSQL)
If Not (rsInterview.BOF And rsInterview.EOF) Then
strSQL = "SELECT ClientID FROM Giftcards " _
& " WHERE CardType=1 " _
& " AND Assigned=0 " _
& " ORDER BY DateAdded ASC, GiftcardNumber ASC;"
Set rsGiftcard = db.OpenRecordset(strSQL)
If Not (rsGiftcard.BOF And rsGiftcard.EOF) Then
Do
rsGiftcard.Edit
rsGiftcard!ClientID = rsInterview!ClientID
rsGiftcard.Update
rsGiftcard.MoveNext
rsInterview.MoveNext
Loop Until rsInterview.EOF
End If
End If
sExit:
On Error Resume Next
rsInterview.Close
rsGiftcard.Close
Set rsInterview = Nothing
Set rsGiftcard = Nothing
Set db = Nothing
Exit Sub
E_Handle:
MsgBox Err.Description & vbCrLf & vbCrLf & "sAssignGiftCards", vbOKOnly + vbCritical, "Error: " & Err.Number
Resume sExit
End Sub