Run-time Error '-2147352567 (80020009)' The value you entered isn't valid for this fi (1 Viewer)

DanielBry

New member
Local time
Today, 07:26
Joined
Jul 30, 2016
Messages
7
Dear All,

I am implementing a access program with the update statement based on the access program from
setha.info/docs/ict/msaccess/sourcecode/ict-msaccess-0004[dot]rar
(Please replace [dot with .] as i do not have the rights to post url.)

From the program u click on either row from the subform and click edit. The data will be loaded into the text box. Next change the data e.g address and press update. When I select the same row to edit again I encounter the error "Run-time Error '-2147352567 (80020009)' The value you entered isn't valid for this field.". I have look at the code but have no idea what is causing this. I would appreciate your input and help on how to resolve the following problem.

P.S I am sorry that I did not post my own access program as it contains alot of confidential data. However, the feature I want to implement is the same as the code from the link above.

Thanks!
Best Regards,
Daniel

Edited: I added in the accdb file
 

Attachments

  • student.accdb
    448 KB · Views: 152
Last edited:

sneuberg

AWF VIP
Local time
Today, 07:26
Joined
Oct 17, 2014
Messages
3,506
I don't know what a .rar file is. Please zip the database and upload it to this forum.
 

DanielBry

New member
Local time
Today, 07:26
Joined
Jul 30, 2016
Messages
7
Dear Sneuberg,

I have added in the .accdb file. Thanks for any help!
 

gemma-the-husky

Super Moderator
Staff member
Local time
Today, 15:26
Joined
Sep 12, 2006
Messages
15,756
fwiw, rar is another zip type format. I would have thought winzip would manage a rar, but maybe not.
 

sneuberg

AWF VIP
Local time
Today, 07:26
Joined
Oct 17, 2014
Messages
3,506
The problem is that the frmStudent form doesn't know which record in the subform is selected. You could fix this as I did in the attached database by putting a textbox (could be hidden) in the frmStudent that would contain the selected stdid. Then populate that in the frmStudentSub form in the current event with
Code:
Me.Parent.stdid = Me.stdid

With that in place you can change the cmdEdit_Click code to go to that record by changing it as follows:


Code:
Private Sub cmdEdit_Click()
    'check whether there exists data in list
    Dim rs As DAO.Recordset
    Set rs = frmStudentSub.Form.RecordsetClone
    rs.FindFirst "stdid = " & Me.stdid
    If Not rs.EOF And Not rs.BOF Then
        'get data to text box control
        With rs
            Me.txtID = .Fields("stdid")
            Me.txtName = .Fields("stdname")
            Me.cboGender = .Fields("gender")
            Me.txtAddress = .Fields("address")
            Me.txtPhone = .Fields("phone")
            'store id of student in Tag of txtID in case id is modified
            Me.txtID.Tag = .Fields("stdid")
            'change caption of button add to Update
            Me.cmdAdd.Caption = "Update"
            'disable button edit
            Me.cmdEdit.Enabled = False
        End With
        rs.Close
    End If
End Sub

But rather than go through all of this I suggest looking at a split form and see if that won't do what you want.
 

Attachments

  • studentMod.accdb
    480 KB · Views: 116

Gasman

Enthusiastic Amateur
Local time
Today, 15:26
Joined
Sep 21, 2011
Messages
14,630
From the program u click on either row from the subform and click edit. The data will be loaded into the text box.

Not sure how you managed that as when I tried that I got an error stating that I could not change the status of a control when it had focus.
This was due to cmdEdit having the focus and the code of cmdEdit trying to disable it.?
 

DanielBry

New member
Local time
Today, 07:26
Joined
Jul 30, 2016
Messages
7
Dear Sneuberg,

Thanks for your help. May I ask is it normal to get the error message Run-Time Error 2452 : "The expression you entered has an invalid reference to the Parent property." when I click on frmStudentSub?

Thanks!

Best Regards,
Daniel
 

Gasman

Enthusiastic Amateur
Local time
Today, 15:26
Joined
Sep 21, 2011
Messages
14,630
Dear Sneuberg,

Thanks for your help. May I ask is it normal to get the error message Run-Time Error 2452 : "The expression you entered has an invalid reference to the Parent property." when I click on frmStudentSub?

Thanks!

Best Regards,
Daniel

I can click on any control on any of the records of the subform and do not get that error.?
 

sneuberg

AWF VIP
Local time
Today, 07:26
Joined
Oct 17, 2014
Messages
3,506
May I ask is it normal to get the error message Run-Time Error 2452 : "The expression you entered has an invalid reference to the Parent property." when I click on frmStudentSub?

Edit: See next post.

Yes, that the normal operation if you reference the parent form when it's not open which happens during a form load because the subform is loaded first. So to change this behavior I change the code to:
Code:
If CurrentProject.AllForms("frmStudent").IsLoaded = False Then
    Me.Parent.stdid = Me.stdid
End If

in the revised attached version.

Did you look at the split forms?
 

Attachments

  • studentMod.accdb
    460 KB · Views: 115
Last edited:

sneuberg

AWF VIP
Local time
Today, 07:26
Joined
Oct 17, 2014
Messages
3,506
Oops got that backwards. It should be

Code:
If CurrentProject.AllForms("frmStudent").IsLoaded Then
    Me.Parent.stdid = Me.stdid
End If

The revised revised database is attached.
 

Attachments

  • studentMod.accdb
    548 KB · Views: 122

DanielBry

New member
Local time
Today, 07:26
Joined
Jul 30, 2016
Messages
7
Not sure how you managed that as when I tried that I got an error stating that I could not change the status of a control when it had focus.
This was due to cmdEdit having the focus and the code of cmdEdit trying to disable it.?

I am sorry I missed your post.
The exact step I do to encounter the error is as follow.
From the program u click on either row from the subform and click edit. The data will be loaded into the text box. Next change the data e.g address and press update. When I select the same row to edit again I encounter the error "Run-time Error '-2147352567 (80020009)' The value you entered isn't valid for this field.".
 

DanielBry

New member
Local time
Today, 07:26
Joined
Jul 30, 2016
Messages
7
Oops got that backwards. It should be

Code:
If CurrentProject.AllForms("frmStudent").IsLoaded Then
    Me.Parent.stdid = Me.stdid
End If

The revised revised database is attached.

Hi Sneuberg,

Thanks for your help. I will definitely look at the split form. However, as some of the functionality of my access program is already working I will leave it to my enhance version in the near future. I am sorry as I am not getting the problem to the behavior of having an invalid reference to the Parent property. Is there a way I could get rid of this message completely? I am really sorry, I am still trying to familarise with Access and vb as I had just started learning it 1 week ago.
 
Last edited:

Gasman

Enthusiastic Amateur
Local time
Today, 15:26
Joined
Sep 21, 2011
Messages
14,630
I am sorry I missed your post.
The exact step I do to encounter the error is as follow.
From the program u click on either row from the subform and click edit. The data will be loaded into the text box. Next change the data e.g address and press update. When I select the same row to edit again I encounter the error "Run-time Error '-2147352567 (80020009)' The value you entered isn't valid for this field.".
My version does not have an update button?
Just Add,Edit,Delete,Clear & Close and as the controld are unbound I cannot update.?
I am puzzled however as how you can get past the setfocus of the Edit Button?
 

sneuberg

AWF VIP
Local time
Today, 07:26
Joined
Oct 17, 2014
Messages
3,506
I don't know how you would be getting the "invalid reference to the Parent property" other than opening the subform by itself. If that the case the only way I know around that is to ignore the error. The attached database has this revised code that does that.


Code:
If CurrentProject.AllForms("frmStudent").IsLoaded Then
    On Error Resume Next
    Me.Parent.stdid = Me.stdid
End If
 

Attachments

  • studentMod.accdb
    456 KB · Views: 106

arnelgp

..forever waiting... waiting for jellybean!
Local time
Today, 22:26
Joined
May 7, 2009
Messages
19,249
here is the fix. try to view the code on cmdadd_click event on the later portion of the sub.
 

Attachments

  • student.accdb
    456 KB · Views: 153

sneuberg

AWF VIP
Local time
Today, 07:26
Joined
Oct 17, 2014
Messages
3,506
My version does not have an update button?
Just Add,Edit,Delete,Clear & Close and as the controld are unbound I cannot update.?
I am puzzled however as how you can get past the setfocus of the Edit Button?

The Update button appears after you click on the Edit button.
 

DanielBry

New member
Local time
Today, 07:26
Joined
Jul 30, 2016
Messages
7
Dear All,

It is working perfectly now. :)
Please pardon my ignorance. May I seek help on one more thing. When I change the stdid in the student table from number to text. May I know why does the add, delete and edit button stop working with the error "run time error 3464 data type mismatch in criteria expression text". I know about how type mismatch works in java programming. However, I do not know how to fixed it in vb. May I get some direction on how to resolve it? Thanks for your time!

Best Regards,
Daniel
 

arnelgp

..forever waiting... waiting for jellybean!
Local time
Today, 22:26
Joined
May 7, 2009
Messages
19,249
it has to do with add/update on the cmdAdd click event:

when adding/updating numeric field, it does not requre to put the new value in quote. while text field needs quote mark:

this is for numeric:
Code:
    Dim rs As DAO.Recordset
    If Me.txtID.Tag & "" = "" Then
        'this is for insert new
        'add data to table
        CurrentDb.Execute "INSERT INTO student([COLOR=Blue]stdid[/COLOR], stdname, gender, phone, address) " & _
                " VALUES(" & [COLOR=Blue]Me.txtID[/COLOR] & ",'" & Me.txtName & "','" & _
                Me.cboGender & "','" & Me.txtPhone & "','" & Me.txtAddress & "')"
    Else
        'otherwise (Tag of txtID store the id of student to be modified)
        CurrentDb.Execute "UPDATE student " & _
                " SET [COLOR=Blue]stdid[/COLOR]=" & [COLOR=Blue]Me.txtID[/COLOR] & _
                ", stdname='" & Me.txtName & "'" & _
                ", gender='" & Me.cboGender & "'" & _
                ", phone='" & Me.txtPhone & "'" & _
                ", address='" & Me.txtAddress & "'" & _
                " WHERE stdid=" & Me.txtID.Tag
    End If
while this is for text field:
Code:
   Dim rs As DAO.Recordset
    If Me.txtID.Tag & "" = "" Then
        'this is for insert new
        'add data to table
        CurrentDb.Execute "INSERT INTO student(stdid, stdname, gender, phone, address) " & _
                " VALUES([COLOR=Blue]'" & Me.txtID & "'[/COLOR],'" & Me.txtName & "','" & _
                Me.cboGender & "','" & Me.txtPhone & "','" & Me.txtAddress & "')"
    Else
        'otherwise (Tag of txtID store the id of student to be modified)
        CurrentDb.Execute "UPDATE student " & _
                " SET stdid=[COLOR=Blue]'" & Me.txtID &[/COLOR] _
                [COLOR=Blue]"'[/COLOR], stdname='" & Me.txtName & "'" & _
                ", gender='" & Me.cboGender & "'" & _
                ", phone='" & Me.txtPhone & "'" & _
                ", address='" & Me.txtAddress & "'" & _
                " WHERE stdid=[COLOR=Blue]'" & Me.txtID.Tag & "'"[/COLOR]
    End If
see the extra single quote for text.
 

sneuberg

AWF VIP
Local time
Today, 07:26
Joined
Oct 17, 2014
Messages
3,506
You should check all the places where stdid is used to make sure. The delete code need this too for example

Code:
Private Sub cmdDelete_Click()
    'delete record
    'check existing selected record
    If Not (Me.frmStudentSub.Form.Recordset.EOF And Me.frmStudentSub.Form.Recordset.BOF) Then
        'confirm delete
        If MsgBox("Are you sure to delete?", vbYesNo) = vbYes Then
            'delete now
            CurrentDb.Execute "DELETE FROM student " & _
                    " WHERE stdid= [COLOR="Blue"]'[/COLOR]" & Me.frmStudentSub.Form.Recordset.Fields("stdid")[COLOR="blue"] & "'"[/COLOR]
            'refresh data in list
            Me.frmStudentSub.Form.Requery
        End If
    End If
End Sub
 

DanielBry

New member
Local time
Today, 07:26
Joined
Jul 30, 2016
Messages
7
Dear Arnelgp and Sneuberg,

Really a very big thank you for all your help! :)

Best Regards,
Daniel
 

Users who are viewing this thread

Top Bottom