Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/vb6/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/facebook-graph-api/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我尝试使用VB6更新Access表记录时,会得到重复的值_Vb6 - Fatal编程技术网

当我尝试使用VB6更新Access表记录时,会得到重复的值

当我尝试使用VB6更新Access表记录时,会得到重复的值,vb6,Vb6,我仍然是vb6的初学者,我喜欢学习和提高,我已经花了大约一周的时间试图解决这个问题。任何建议或帮助都将不胜感激。多谢各位 我的代码要做三件事。首先是检查表是否有空值,并使用EnrolmentID主记录创建一个新记录,其次是在该值与以前的记录主键匹配时更新该值。最后,如果主键与任何当前记录不匹配,则创建一个新记录 好的,当我添加新值时,会创建新记录(这很好),但当我尝试更新当前记录时。它只更新表中的第一条记录,而不更新表下的第二条或任何其他记录。如果我在第一次 它复制了那个记录 我之所以知道这一点

我仍然是vb6的初学者,我喜欢学习和提高,我已经花了大约一周的时间试图解决这个问题。任何建议或帮助都将不胜感激。多谢各位

我的代码要做三件事。首先是检查表是否有空值,并使用EnrolmentID主记录创建一个新记录,其次是在该值与以前的记录主键匹配时更新该值。最后,如果主键与任何当前记录不匹配,则创建一个新记录

好的,当我添加新值时,会创建新记录(这很好),但当我尝试更新当前记录时。它只更新表中的第一条记录,而不更新表下的第二条或任何其他记录。如果我在第一次 它复制了那个记录

我之所以知道这一点,是因为我不断遇到以下错误:

您请求对表进行的更改未成功,因为它们将在索引字段中创建重复的值

当我从表中删除一个自动递增字段并 改为将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