Solved

EOF BOF error classic asp

Posted on 2016-08-25
8
28 Views
Last Modified: 2016-08-25
Hi all,

I have a system where I can give out tasks using text messages. If a task has a given user assigned, he gets a text-message. However, tasks are created without assigning it to a user - meaning that the value is empty. I have some code that queries who an assignment has been given to, but if it hasn't been given to anyone, I get the following error:
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

Here's the code:
CaseID = RSDatabase("CaseID")
 Assigned= RSDatabase("Assigned")

  If status = 1 then status_nr = "<td valign=center align=center bgcolor=FF0000><font color=ffffff><b>Status</b><br>Recieved</font></TD>"
  If status = 2 then status_nr = "<td valign=center align=center bgcolor=FFFF00><b>Status</b><br>See comments</TD>"
  If status = 23 then status_nr = "<td valign=center align=center bgcolor=009933><font color=ffffff><b>Status</b><br><font color=ffffff>Done</font></TD>"
  If status = 24 then status_nr = "<td valign=center align=center bgcolor=FFFFFF><font color=ff0000><b>Status</b><br>Rejected</TD>"

  DIM mySQL6, objRS6
  mySQL6 = "SELECT User, Name FROM Users WHERE User = '" & assigned & "'"
  Set objRS6 = Server.CreateObject("ADODB.Recordset")
  objRS6.Open mySQL6, strConnect


  DIM strUser
  strUser = objRS6("User")
  strName = objRS6("name")


If Assigned <> "" Then
show_assigned = "<br><font color='#FF0000'><b>Task assigned to " & strName & "</br></font>"
End if

Open in new window


Probably a simple solution I just can't get my head around.
0
Comment
Question by:micamb
  • 4
  • 4
8 Comments
 
LVL 52

Expert Comment

by:Scott Fell, EE MVE
ID: 41770028
Add a test in your code.

if not RSDatabase.bof or not RSDatabase then ' run the code

CaseID = RSDatabase("CaseID")
 Assigned= RSDatabase("Assigned")

  If status = 1 then status_nr = "<td valign=center align=center bgcolor=FF0000><font color=ffffff><b>Status</b><br>Recieved</font></TD>"
  If status = 2 then status_nr = "<td valign=center align=center bgcolor=FFFF00><b>Status</b><br>See comments</TD>"
  If status = 23 then status_nr = "<td valign=center align=center bgcolor=009933><font color=ffffff><b>Status</b><br><font color=ffffff>Done</font></TD>"
  If status = 24 then status_nr = "<td valign=center align=center bgcolor=FFFFFF><font color=ff0000><b>Status</b><br>Rejected</TD>"

  DIM mySQL6, objRS6
  mySQL6 = "SELECT User, Name FROM Users WHERE User = '" & assigned & "'"
  Set objRS6 = Server.CreateObject("ADODB.Recordset")
  objRS6.Open mySQL6, strConnect


  DIM strUser
  strUser = objRS6("User")
  strName = objRS6("name")


If Assigned <> "" Then
show_assigned = "<br><font color='#FF0000'><b>Task assigned to " & strName & "</br></font>"
End if

else  ' if not RSDatabase.bof or not RSDatabase then ' run the code
   
    response.write "No Data"

end if  'if not RSDatabase.bof or not RSDatabase then ' run the code

Open in new window

0
 

Author Comment

by:micamb
ID: 41770055
Thanks for the input!
Result: Type mismatch, Line 37

Here's the full code:
<!--#include file="db/database_read.inc"--><!--#include file="close_access.inc"--><!--#include file="Include/link.inc"-->
  2 
  3 <html>
  4 
  5 <head>
  6 <!--#include file="Include/meta.asp"-->
  7 </head>
  8 <body><div data-role="page">
  9 
 10   <div data-role="header">
 11     <h1>Update your task</h1>
 12   </div><%
 13     Id = Request.querystring("Id")
 14   %>
 15 <%   Set DATABASE = Server.CreateObject("ADODB.Connection")
 16     DATABASE.Open strConnect
 17 
 18 SQLStr = "SELECT * FROM Tasks WHERE Id = '" &  Id & "' "
 19   Set RSDatabase = DATABASE.Execute(SQLStr)
 20 
 21 
 22  
 23   Id =  RSDatabase("Id")
 24   Name=  RSDatabase("Name")
 25   Email =  RSDatabase("Email")
 26   Tlf =  RSDatabase("tlf")
 27   TaskType =  RSDatabase("TaskType")
 28   Institution =  RSDatabase("Institution")
 29   Location=  RSDatabase("Location")
 30   Priority = RSDatabase("Priority")
 31   Description = RSDatabase("Description")
 32   DateR = RSDatabase("DateR")
 33   DateU = RSDatabase("DateU")
 34   Comments = RSDatabase("Comments")
 35   Status = RSDatabase("Status")
 36CaseID = RSDatabase("CaseID")
 37 if not RSDatabase.bof or not RSDatabase then
 38 Assigned = RSDatabase("Assigned")
 39 
 40   If status = 1 then status_nr = "<td valign=center align=center bgcolor=FF0000><font color=ffffff><b>Status</b><br>Recieved</font></TD>"
 41   If status = 2 then status_nr = "<td valign=center align=center bgcolor=FFFF00><b>Status</b><br>See comments</TD>"
 42   If status = 23 then status_nr = "<td valign=center align=center bgcolor=009933><font color=ffffff><b>Status</b><br><font color=ffffff>Completed</font></TD>"
 43   If status = 24 then status_nr = "<td valign=center align=center bgcolor=FFFFFF><font color=ff0000><b>Status</b><br>Rejected</TD>"
 44 
 45 
 46 
 47   DIM mySQL6, objRS6
 48   mySQL6 = "SELECT User, Name FROM Users WHERE User = '" & assigned & "'"
 49   Set objRS6 = Server.CreateObject("ADODB.Recordset")
 50   objRS6.Open mySQL6, strConnect
 51 
 52   DIM strUser
 53   strUser = objRS6("User")
 54   strName = objRS6("Name")
 55 
 56 
 57 If Assigned <> "" Then
 58 show_assigned = "<br><font color='#FF0000'><b>Task is assigned " & strName & "</br></font>"
 59 End if
 60 
 61 else  ' if not RSDatabase.bof or not RSDatabase then ' run the code
 62    
 63     response.write "No Data"
 64 
 65 end if  'if not RSDatabase.bof or not RSDatabase then ' run the code
 66 %>

Open in new window

0
 
LVL 52

Expert Comment

by:Scott Fell, EE MVE
ID: 41770075
if not RSDatabase.bof or not RSDatabase then

should be

if not RSDatabase.bof or not RSDatabase.eof then

probably better to use

if not RSDatabase.bof AND not RSDatabase.eof then


Lastly, this test needs to go before you use it as in line 22.
0
 

Assisted Solution

by:micamb
micamb earned 0 total points
ID: 41770092
Thanks for your effort so far and for putting up with my apparent lack of coding knowledge.

I did as suggested and got this error:
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
Line 52
Updated code below
<!--#include file="db/database_read.inc"--><!--#include file="close_access.inc"--><!--#include file="Include/link.inc"-->
  2 
  3 <html>
  4 
  5 <head>
  6 <!--#include file="Include/meta.asp"-->
  7 </head>
  8 <body><div data-role="page">
  9 
 10   <div data-role="header">
 11     <h1>Update your task</h1>
 12   </div><%
 13     Id = Request.querystring("Id")
 14   %>
 15 <%   Set DATABASE = Server.CreateObject("ADODB.Connection")
 16     DATABASE.Open strConnect
 17 
 18 SQLStr = "SELECT * FROM Tasks WHERE Id = '" &  Id & "' "
 19   Set RSDatabase = DATABASE.Execute(SQLStr)
 20 
 21 
 22  if not RSDatabase.bof AND not RSDatabase.eof then
 23   Id =  RSDatabase("Id")
 24   Name=  RSDatabase("Name")
 25   Email =  RSDatabase("Email")
 26   Tlf =  RSDatabase("tlf")
 27   TaskType =  RSDatabase("TaskType")
 28   Institution =  RSDatabase("Institution")
 29   Location=  RSDatabase("Location")
 30   Priority = RSDatabase("Priority")
 31   Description = RSDatabase("Description")
 32   DateR = RSDatabase("DateR")
 33   DateU = RSDatabase("DateU")
 34   Comments = RSDatabase("Comments")
 35   Status = RSDatabase("Status")
 36CaseID = RSDatabase("CaseID")
 37
 38 Assigned = RSDatabase("Assigned")
 39 
 40   If status = 1 then status_nr = "<td valign=center align=center bgcolor=FF0000><font color=ffffff><b>Status</b><br>Recieved</font></TD>"
 41   If status = 2 then status_nr = "<td valign=center align=center bgcolor=FFFF00><b>Status</b><br>See comments</TD>"
 42   If status = 23 then status_nr = "<td valign=center align=center bgcolor=009933><font color=ffffff><b>Status</b><br><font color=ffffff>Completed</font></TD>"
 43   If status = 24 then status_nr = "<td valign=center align=center bgcolor=FFFFFF><font color=ff0000><b>Status</b><br>Rejected</TD>"
 44 
 45 
 46 
 47   DIM mySQL6, objRS6
 48   mySQL6 = "SELECT User, Name FROM Users WHERE User = '" & assigned & "'"
 49   Set objRS6 = Server.CreateObject("ADODB.Recordset")
 50   objRS6.Open mySQL6, strConnect
 51 
 52   DIM strUser
 53   strUser = objRS6("User")
 54   strName = objRS6("Name")
 55 
 56 
 57 If Assigned <> "" Then
 58 show_assigned = "<br><font color='#FF0000'><b>Task is assigned " & strName & "</br></font>"
 59 End if
 60 
 61 else  ' if not RSDatabase.bof or not RSDatabase then ' run the code
 62    
 63     response.write "No Data"
 64 
 65 end if  'if not RSDatabase.bof or not RSDatabase then ' run the code
 66 %>

Open in new window

0
6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

 

Author Comment

by:micamb
ID: 41770110
Horrific solution...

I have a default user in that table. If I fake the code to look like it's assigned to that user it works.
It requires a little bit of manipulating here and there, but...

If assigned = "" then
assigned_show = "USERINDATABASE"
Else
assigned_show = assigned
End if

Open in new window


It ain't pretty, but it works!
0
 
LVL 52

Accepted Solution

by:
Scott Fell,  EE MVE earned 500 total points
ID: 41770113
My solution that worked was
'   ### assume recordset named RSDatabase is created ###
IF NOT RSDatabase.BOF OR NOT RSDatabase.EOF THEN

         ' ### add code here that uses the recordset RSDatabase

      ELSE

         ' # optionally add some code that lets you know the recordset is not available
 
END IF

Open in new window


Line 52 is the same error and I just showed you how to test if the recordset has data and you just need to run the test for that recordset.

It looks like you have some some nesting issues.  To help identify, please update your code where you are indenting for IF/THEN and looping.  Once you do that, post back your code although doing that may help you solve this next issue you are having.
0
 
LVL 52

Assisted Solution

by:Scott Fell, EE MVE
Scott Fell,  EE MVE earned 500 total points
ID: 41770122
>Horrific solution...

I'm not sure if you meant that for what I provided or your work around.  

What I provided worked and only uncovered another issue.  Try to avoid making workarounds because they are just short term fix's that create long term problems.  

Open your db

     create your recordset
                test if recordset is good
                       start looping
                              run code
                       end loop
                end if
     close your recordset

     open another recordset
                test if recordset is good
                       start looping
                              run code
                       end loop
                end if
     close recordset then close db.  

close db

Open in new window


Keep your logic and code in order and you will have an easier time.
0
 

Author Comment

by:micamb
ID: 41770149
My solution was/is horrific absolutely! Being a complete amateur doesn't help when you are trying to code stuff... I'm really pressed for time, so I'll appoint your solution as the actual solution since mine is more a beating-around-the-bush-kind-of-thing. Thanks for your effort!
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

I would like to start this tip/trick by saying Thank You, to all who said that this could not be done, as it forced me to make sure that it could be accomplished. :) To start, I want to make sure everyone understands the importance of utilizing p…
This demonstration started out as a follow up to some recently posted questions on the subject of logging in: http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_28634665.html and http://www.experts-exchange.com/Programming/…
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now