Question

runtime error 3021

Asked by: claracruz


novice needs help!!!!!!!
I am getting error 3021, (either BOF or EOF is true, or the current record has been deleted. requested operation requires a current record with this code.) i have a form that dispalys info from the recordset in text boxes, and the branch code automatically displays branch name in a textbox.this works fine on form load.
the problem is once the branch code changes, i get the above error. i know i am missing something very obious, but for the life of me i can't figure out what it is.
the sql statement also gives me a syntax error(missing operator) when i try to clear the contents of the textboxes.
ps; branch number datatype is text.



Private Sub txtBranchNo_change()
     Dim con As ADODB.Connection
     Dim rec As ADODB.Recordset
     Dim strName As String
     Set con = New ADODB.Connection
     Set rec = New ADODB.Recordset
     
     strName = "Select PHARMACYBRANCHCODES.[Branch No],PHARMACYBRANCHCODES.[Branch Name] From PHARMACYBRANCHCODES Where PHARMACYBRANCHCODES.[Branch No] =" & txtBranchNo.Text & ""
     con.Open "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=C:\fyfy\hguyg.mdb"
     rec.Open strName, con
    If rec.RecordCount <> 0 Then
     rec.MoveFirst
      txtBranchName.Text = rec.Fields("Branch Name")
    End If
     
End Sub

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2003-09-17 at 09:24:18ID20741473
Tags

error

,

3021

,

runtime

Topic

VB Database Programming

Participating Experts
5
Points
300
Comments
12

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. Detecting BOF/EOF
    I'm writing code in VB and I'm opening up a ADODB.Recordset to connect to a SQL Server database. I have declared the variable that contains the recordset globally so that any function/subroutine in my form can access it. Here's the code that I'm using to connect to the datab...
  2. If EOF or BOF then
    I am having a problem building an insert/update/delete page with ASP. I have a repeating region with the recordset data, the name of the data has a link which automatically loads the data into the edit boxes. But this is not working. Here is my code. If rsBrands.eof or rs...
  3. EOF and BOF
    i developed a program using VB6, that deals with an access database, using mdac 2.6, now everything is ok, but when i run it on windows 89, mdac 2.6 as well i have this problem using a select statment, when i get one output record from a table full of records, i get BOF . wh...
  4. BOF EOF Error
    Hi, I am developing a website that access's a Microsoft Access database. This error occurs when i try to update the database. This is included as part of a modify. So the form comes up with what was previoulsy in the database for a particular name and then changes are made ...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: bobbit31Posted on 2003-09-17 at 09:33:35ID: 9379442

for your select query:

strName = "Select PHARMACYBRANCHCODES.[Branch No],PHARMACYBRANCHCODES.[Branch Name] From PHARMACYBRANCHCODES Where PHARMACYBRANCHCODES.[Branch No] = '" & txtBranchNo.Text & "'"

also try doing this instead:

 If not rec.EOF Then
    rec.MoveFirst
     txtBranchName.Text = rec.Fields("Branch Name")
   End If

 

by: laurietollifsonPosted on 2003-09-17 at 09:49:11ID: 9379594

RecordCount does not always return the count because it depends on the type of recordset you open.
From the Help File:

Use the RecordCount property to find out how many records in a Recordset or TableDef object have been accessed. The RecordCount property doesn't indicate how many records are contained in a dynaset-, snapshot-, or forward-only–type Recordset object until all records have been accessed. Once the last record has been accessed, the RecordCount property indicates the total number of undeleted records in the Recordset or TableDef object. To force the last record to be accessed, use the MoveLast method on the Recordset object. You can also use an SQL Count function to determine the approximate number of records your query will return.

Note   Using the MoveLast method to populate a newly opened Recordset negatively impacts performance. Unless it is necessary to have an accurate RecordCount as soon as you open a Recordset, it's better to wait until you populate the Recordset with other portions of code before checking the RecordCount property.

As your application deletes records in a dynaset-type Recordset object, the value of the RecordCount property decreases. However, records deleted by other users aren't reflected by the RecordCount property until the current record is positioned to a deleted record. If you execute a transaction that affects the RecordCount property setting and you subsequently roll back the transaction, the RecordCount property won't reflect the actual number of remaining records.

The RecordCount property of a snapshot- or forward-only–type Recordset object isn't affected by changes in the underlying tables.

A Recordset or TableDef object with no records has a RecordCount property setting of 0.

When you work with linked TableDef objects, the RecordCount property setting is always –1.

Using the Requery method on a Recordset object resets the RecordCount property just as if the query were re-executed.

Hope this helps -
Laurie

 

by: spongiePosted on 2003-09-17 at 12:46:08ID: 9381069

Hi claracruz. Try changing your code from the rec.open line to this:

rec.Open strName, con, adOpenStatic, adLockReadOnly

with rec
if .eof and .bof then
  'do something or nothing
else
  .movefirst
  txtBranchName.Text = rec.Fields("Branch Name")
end if

end with

Hope that works for you :)

 

by: claracruzPosted on 2003-09-17 at 15:08:03ID: 9382104

I have tried everything, it still doesn't work, anymore suggestion please.

 

by: claracruzPosted on 2003-09-17 at 15:10:14ID: 9382126

by the way, there are 30 branch codes and so bracnh names. and the error occurs when the branch code changes from one to another. however, when i use the lost_focus event with same codes, the program works fine

 

by: laurietollifsonPosted on 2003-09-17 at 15:15:35ID: 9382156

Are you using a datagrid or datacontrol? or just accessing the recordset directly?
Is the user changing the record in any way?
Laurie

 

by: claracruzPosted on 2003-09-17 at 15:33:05ID: 9382254

ok, ifigured out i was using a code that did not exist in my database, this was causing the error. however the syntax error(see above) still occurs at the end of file. help!!!

 

by: jonasito74Posted on 2003-09-18 at 05:38:44ID: 9385702

where is the cursor located?
what type of locking are you using?
Perhaps there is the problem.
The best results I've found using ADO is with cursorlocation=aduseclient and using adlockoptimistic if you want to update or addnew recordset  or adlockreadlonly if U just want to read the recordset


Hope this help U

 

by: laurietollifsonPosted on 2003-09-18 at 05:52:06ID: 9385805

I noticed that you are opening the connection over and over, perhaps it would be better practice to open the connection onformload and close it onformunload.
Try this:

Private Sub txtBranchNo_change()
    Dim con As ADODB.Connection
    Dim rec As ADODB.Recordset
    Dim strName As String
    Set con = New ADODB.Connection
    Set rec = New ADODB.Recordset
    Dim ctr as Integer
  strName "SELECT COUNT(*) FROM PHARMACYBRANCHCODES Where PHARMACYBRANCHCODES.[Branch No] =" & txtBranchNo.Text & ""
    con.Open "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=C:\fyfy\hguyg.mdb"
    rec.Open strName, con
    ctr =  rec(0)
    rec.Close
  If ctr > 0 Then
     strName = "Select PHARMACYBRANCHCODES.[Branch No],PHARMACYBRANCHCODES.[Branch Name] From PHARMACYBRANCHCODES Where PHARMACYBRANCHCODES.[Branch No] =" & txtBranchNo.Text & ""
       rec.Open strName, con
      rec.MoveFirst
     txtBranchName.Text = rec.Fields("Branch Name")
     rec.Close
    Else
     MsgBox "Zero Records"
   End if
   con.Close
End Sub

 

by: spongiePosted on 2003-09-18 at 10:41:55ID: 9388111

Did you stick to using the lost focus event rather than the onchange event of the textbox? Try using the code i gave you. I will work on both events but i suggest you use the lost focus event since this is easier on system resource. You're executing the code everytime you type something with the textbox change event. An error would naturally occur when you empty the textbox because the criteria clause is incomplete :

          ... where  PHARMACYBRANCHCODES.[Branch No] =

i suggest you modify the code i gave you a little. give this a spin:

Dim con As ADODB.Connection
Dim rec As ADODB.Recordset
Dim strName As String
Set con = New ADODB.Connection
Set rec = New ADODB.Recordset
   
strName = "Select PHARMACYBRANCHCODES.[Branch No],PHARMACYBRANCHCODES.[Branch Name] From PHARMACYBRANCHCODES"

if txtBranchNo.text <> "" then
  strName = strName & " Where PHARMACYBRANCHCODES.[Branch No] =" & txtBranchNo.Text & ""
end if

con.Open "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=C:\fyfy\hguyg.mdb"
rec.Open strName, con, adOpenStatic, adLockReadOnly

with rec
if .eof and .bof then
 txtBranchName.text = ""
else
 .movefirst
 txtBranchName.Text = rec.Fields("Branch Name")
end if

end with
rec.close
con.close
set rec = nothing
set con = nothing


...hope that works :)

 

by: MYLimPosted on 2003-09-18 at 19:26:39ID: 9390698

you have run out cursur,Just check the recordset to see if you are at eof

if rs.eof then

    msgbox 'Cannot position beyond end of recordset

!!',vbokonly,'Positioning error'

    ' You could then reposition back to first record

    rs.movefirst

    '  or move back a record

    rs.moveprevious

end if

 

by: MYLimPosted on 2003-09-18 at 19:28:26ID: 9390704

Actually,the records that we retrieved is look like that

==============================
-
-row1
-row2
-row3
-
==============================
three records but 5 rows...

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...