当我尝试使用VB6更新Access表记录时,会得到重复的值
我仍然是vb6的初学者,我喜欢学习和提高,我已经花了大约一周的时间试图解决这个问题。任何建议或帮助都将不胜感激。多谢各位 我的代码要做三件事。首先是检查表是否有空值,并使用EnrolmentID主记录创建一个新记录,其次是在该值与以前的记录主键匹配时更新该值。最后,如果主键与任何当前记录不匹配,则创建一个新记录 好的,当我添加新值时,会创建新记录(这很好),但当我尝试更新当前记录时。它只更新表中的第一条记录,而不更新表下的第二条或任何其他记录。如果我在第一次 它复制了那个记录 我之所以知道这一点,是因为我不断遇到以下错误: 您请求对表进行的更改未成功,因为它们将在索引字段中创建重复的值 当我从表中删除一个自动递增字段并 改为将EnrolmentID作为主键。我这么做是因为它一直在重复显示 记录 这是我的密码:当我尝试使用VB6更新Access表记录时,会得到重复的值,vb6,Vb6,我仍然是vb6的初学者,我喜欢学习和提高,我已经花了大约一周的时间试图解决这个问题。任何建议或帮助都将不胜感激。多谢各位 我的代码要做三件事。首先是检查表是否有空值,并使用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
”表的检查具有空值,然后添加新记录
如果Combo1.Text=“登机费条款一”和Text33.Text“0.00”,则
如果lol.RecordCount=0,则
lol.AddNew
lol.Fields(“EnrolmentID”)=frmStudentFees.AcctNo
lol.Fields(“StudentID”)=frmStudentFees.txtstudID.Text
lol.Fields(“TransDate”)=日期
lol.Fields(“CashierCompletename”)=CurrentUser.FullName
lol.Fields(“TermOne”)=Text33.Text
sumBOne=(住宿费)-(Text33.Text)
lol.Fields(“BalanceOne”)=sumBOne
lol.更新
其他的
'检查ID是否与任何现有记录和更新匹配
如果lol.Fields(“EnrolmentID”)=frmStudentFees.AcctNo,则
如果为空(lol.Fields(“TermOne”)),则
GetBOne=0
其他的
GetBOne=lol.Fields(“TermOne”)
如果结束
sumo1=(GetBOne)+(Text33.Text)
sumBOne=(住宿费)-(SumOf1)
lol.Fields(“EnrolmentID”)=frmStudentFees.AcctNo
lol.Fields(“StudentID”)=frmStudentFees.txtstudID.Text
lol.Fields(“TransDate”)=日期
lol.Fields(“CashierCompletename”)=CurrentUser.FullName
lol.Fields(“TermOne”)=SumOf1
lol.Fields(“BalanceOne”)=sumBOne
lol.更新
'检查是否有任何与ID nun匹配的现有记录可用
"创新纪录。
如果不是lol.Fields(“EnrolmentID”)=frmStudentFees.AcctNo则
lol.addnew
lol.Fields(“EnrolmentID”)=frmStudentFees.AcctNo
lol.Fields(“StudentID”)=frmStudentFees.txtstudID.Text
lol.Fields(“TransDate”)=日期
lol.Fields(“CashierCompletename”)=CurrentUser.FullName
lol.Fields(“TermOne”)=Text33.Text
sumBOne=住宿费-文本33
lol.Fields(“BalanceOne”)=sumBOne
lol.更新
如果结束
如果结束
如果结束
您需要使用“选择”sql查询来选择表中的记录,该记录的学生ID为您感兴趣的“frmStudentFees.AcctNo”
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
dim s1作为字符串
s1=“从表名中选择,其中enrolmentid=”&frmStudentFees.AcctNo&“”
将遥感器作为记录集
set rs=db.openrecordset(s1)
如果rs.bof为真或myrec.eof为真,则
先走一步
rs.edit
lol.Fields(“TermOne”)=SumOf1
等等
遥感更新
其他的
空记录
lol.Fields(“TermOne”)=SumOf1
等等
遥感更新
如果结束
将数据库作为DAO.Database进行调整
将遥感器作为记录集
strTwo=“从tblPayedAmount中选择*
strOne=“从tblPayedAmount中选择*,其中enrolmentid=”&frmStudentFees.AcctNo&“
lol.打开strTwo,con,2,3
Set rs=db.OpenRecordset(strOne)“strOne=“从tblPayedAmount中选择*,其中enrolmentid=”&frmStudentFees.AcctNo&“
lol.打开strOne,con,2,3
如果Combo1.Text=“登机费条款一”和Text33.Text“0.00”,则
如果lol.RecordCount=0,则
lol.AddNew
lol.Fields(“EnrolmentID”)=frmStudentFees.AcctNo
lol.Fields(“StudentID”)=frmStudentFees.txtstudID.Text
lol.Fields(“TransDate”)=日期
lol.Fields(“CashierCompletename”)=CurrentUser.FullName
lol.Fields(“TermOne”)=Text33.Text
sumBOne=(住宿费)-(Text33.Text)
lol.Fields(“BalanceOne”)=sumBOne
lol.更新
其他的
如果lol.BOF为真或lol.EOF为真,则
哈哈,先移动
如果为空(lol.Fields(“TermOne”)),则
GetBOne=0
其他的
GetBOne=lol.Fields(“TermOne”)
如果结束
sumo1=(GetBOne)+Val(Text33.Text)
sumBOne=(住宿费)-(SumOf1)
lol.Fields(“EnrolmentID”)=frmStudentFees.AcctNo
lol.Fields(“StudentID”)=frmStudentFees.txtstudID.Text
lol.Fields(“TransDate”)=日期
lol.Fields(“CashierCompletename”)=CurrentUser.FullName
lol.Fields(“TermOne”)=SumOf1
lol.Fields(“BalanceOne”)=sumBOne
lol.更新
其他的
lol.AddNew
lol.Fields(“EnrolmentID”)=frmStudentFees.AcctNo'表中的新字段。
lol.Fields(“StudentID”)=frmStudentFees.txtstudID.Text
lol.Fields(“TransDate”)=日期
lol.Fields(“CashierCompletename”)=CurrentUser.FullName
lol.Fields(“TermOne”)=Text33.Text
sumBOne=住宿费-文本33
lol.Fields(“BalanceOne”)=sumBOne
lol.更新
如果结束
如果结束
如果结束
okay iv添加了您建议的代码,但我收到一个错误“Object or With Block variable not set”,我想发布我的代码供您设置。在代码“set rs=…”行的正上方,您需要“设置”数据库对象变量,如“set db=opendatabase(pathtodatabase)“哦,让我来吧,我会一直告诉你的,我想说声谢谢!!!我可以使用您的更正并重新编辑我的代码。而且很有效!!!!
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
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