我的代码是为了做三件事。首先是检查表是否具有空值并创建一个主记录为EnrolmentID的新记录,其次是当它与先前记录主键匹配时更新该值。最后,如果主键与任何当前记录不匹配,则创建新记录。
好的就是,当我添加新值时,会创建新记录(很好),但是当我尝试更新当前记录时。它只更新表中的FIRST记录,而不更新它下面的第二个记录或任何其他记录。如果我在第一个之后更新任何记录 它重复记录。
我知道这是因为我一直收到这个错误:
您向表格请求的更改未成功,因为它们会在索引,字段...
中创建重复值当我从表中删除自动增量字段时,它开始出现 使EnrolmentID成为主键。我这样做是因为它一直显示重复 记录。
这是我的代码:
'Checks of the table has a null value then adds a new record
If Combo1.Text = "Boarding Fee Term One" And Text33.Text <> "0.00" Then
If lol.RecordCount = 0 Then
lol.AddNew
lol.Fields("EnrolmentID") = frmStudentFees.AcctNo
lol.Fields("StudentID") = frmStudentFees.txtstudID.Text
lol.Fields("TransDate") = Date
lol.Fields("CashierCompletename") = CurrentUser.FullName
lol.Fields("TermOne") = Text33.Text
sumBOne = (boardingfee) - (Text33.Text)
lol.Fields("BalanceOne") = sumBOne
lol.Update
Else
'Checks if ID matches any of the existing records and updates
If lol.Fields("EnrolmentID") = frmStudentFees.AcctNo Then
If IsNull(lol.Fields("TermOne")) Then
GetBOne = 0
Else
GetBOne = lol.Fields("TermOne")
End If
SumOf1 = (GetBOne) + (Text33.Text)
sumBOne = (boardingfee) - (SumOf1)
lol.Fields("EnrolmentID") = frmStudentFees.AcctNo
lol.Fields("StudentID") = frmStudentFees.txtstudID.Text
lol.Fields("TransDate") = Date
lol.Fields("CashierCompletename") = CurrentUser.FullName
lol.Fields("TermOne") = SumOf1
lol.Fields("BalanceOne") = sumBOne
lol.Update
'Checks if there are any existing records that match the ID nun are available creates
'a new record.
ElseIf Not lol.Fields("EnrolmentID") = frmStudentFees.AcctNo Then
lol.addnew
lol.Fields("EnrolmentID") = frmStudentFees.AcctNo
lol.Fields("StudentID") = frmStudentFees.txtstudID.Text
lol.Fields("TransDate") = Date
lol.Fields("CashierCompletename") = CurrentUser.FullName
lol.Fields("TermOne") = Text33.Text
sumBOne = boardingfee - Text33
lol.Fields("BalanceOne") = sumBOne
lol.Update
End If
End If
End If
答案 0 :(得分:0)
您需要使用&#39; select&#39; sql查询用于选择表中包含您感兴趣的学生ID的记录&#39; frmStudentFees.AcctNo&#39;
dim s1 as string
s1 = "select from tablename where enrolmentid = '" & frmStudentFees.AcctNo & "'"
dim rs as recordset
set rs = db.openrecordset(s1)
if rs.bof <> true or myrec.eof <> true then
rs.movefirst
rs.edit
lol.Fields("TermOne") = SumOf1
'etc
rs.update
else
rs.addnew
lol.Fields("TermOne") = SumOf1
'etc
rs.update
end if
答案 1 :(得分:0)
Dim db As DAO.Database
Dim rs As Recordset
strTwo = "Select * From tblPayedAmount"
strOne = "Select * From tblPayedAmount where enrolmentid = '" & frmStudentFees.AcctNo &"'"
lol.Open strTwo, con, 2, 3
Set rs = db.OpenRecordset(strOne) '<<------THE ERROR HIGHLIGNTS THIS LINE
If Combo1.Text = "Boarding Fee Term One" And Text33.Text <> "0.00" Then
If lol.RecordCount = 0 Then
lol.AddNew
lol.Fields("EnrolmentID") = frmStudentFees.AcctNo
lol.Fields("StudentID") = frmStudentFees.txtstudID.Text
lol.Fields("TransDate") = Date
lol.Fields("CashierCompletename") = CurrentUser.FullName
lol.Fields("TermOne") = Text33.Text
sumBOne = (boardingfee) - (Text33.Text)
lol.Fields("BalanceOne") = sumBOne
lol.Update
Else
If rs.BOF <> True Or lol.EOF <> True Then
rs.MoveFirst
rs.Edit
If IsNull(lol.Fields("TermOne")) Then
GetBOne = 0
Else
GetBOne = lol.Fields("TermOne")
End If
SumOf1 = (GetBOne) + Val(Text33.Text)
sumBOne = (boardingfee) - (SumOf1)
lol.Fields("EnrolmentID") = frmStudentFees.AcctNo
lol.Fields("StudentID") = frmStudentFees.txtstudID.Text
lol.Fields("TransDate") = Date
lol.Fields("CashierCompletename") = CurrentUser.FullName
lol.Fields("TermOne") = SumOf1
lol.Fields("BalanceOne") = sumBOne
rs.Update
Else
rs.AddNew
lol.Fields("EnrolmentID") = frmStudentFees.AcctNo ' new field in the table.
lol.Fields("StudentID") = frmStudentFees.txtstudID.Text
lol.Fields("TransDate") = Date
lol.Fields("CashierCompletename") = CurrentUser.FullName
lol.Fields("TermOne") = Text33.Text
sumBOne = boardingfee - Text33
lol.Fields("BalanceOne") = sumBOne
rs.Update
End If
End If
End If
答案 2 :(得分:0)
strOne = "Select * From tblPayedAmount Where enrolmentid = '" & frmStudentFees.AcctNo &"'"
lol.Open strOne, con, 2, 3
If Combo1.Text = "Boarding Fee Term One" And Text33.Text <> "0.00" Then
If lol.RecordCount = 0 Then
lol.AddNew
lol.Fields("EnrolmentID") = frmStudentFees.AcctNo
lol.Fields("StudentID") = frmStudentFees.txtstudID.Text
lol.Fields("TransDate") = Date
lol.Fields("CashierCompletename") = CurrentUser.FullName
lol.Fields("TermOne") = Text33.Text
sumBOne = (boardingfee) - (Text33.Text)
lol.Fields("BalanceOne") = sumBOne
lol.Update
Else
If lol.BOF <> True Or lol.EOF <> True Then
lol.MoveFirst
If IsNull(lol.Fields("TermOne")) Then
GetBOne = 0
Else
GetBOne = lol.Fields("TermOne")
End If
SumOf1 = (GetBOne) + Val(Text33.Text)
sumBOne = (boardingfee) - (SumOf1)
lol.Fields("EnrolmentID") = frmStudentFees.AcctNo
lol.Fields("StudentID") = frmStudentFees.txtstudID.Text
lol.Fields("TransDate") = Date
lol.Fields("CashierCompletename") = CurrentUser.FullName
lol.Fields("TermOne") = SumOf1
lol.Fields("BalanceOne") = sumBOne
lol.Update
Else
lol.AddNew
lol.Fields("EnrolmentID") = frmStudentFees.AcctNo 'new field in the table.
lol.Fields("StudentID") = frmStudentFees.txtstudID.Text
lol.Fields("TransDate") = Date
lol.Fields("CashierCompletename") = CurrentUser.FullName
lol.Fields("TermOne") = Text33.Text
sumBOne = boardingfee - Text33
lol.Fields("BalanceOne") = sumBOne
lol.Update
End If
End If
End If