How do I find out why? Error 3251

Here is a snippet of code which fails with error
3251: Operation is not supported for this type of object.

Set rstPay = db.OpenRecordset("Payments") 'open table 1 side
Set rstInv = db.OpenRecordset("Invoices") 'open table many side
rstPay.MoveFirst
rstInv.MoveFirst
With rstPay
    Do Until .EOF
        ...
        strRef = !Ref    'PK in Payments (same spelling FK in Invoices)
===>    rstInv.FindFirst "Ref = " & strRef  'find first matching invoice
        With rstInv
            Do Until .EOF
              ...
            Loop
        End With
    Loop
End With

I have used this construct to find the first match in a recordset many
times before but now I am at a loss to know where to look. Help says
method is usually valid but not in this case.

I have looked at help for OpenRecordset but this particular syntax is
not shown. I have to assume that the recordset has some default
attribute preventing finds but what is it? How do I find out?
(Access 2003)
-- 
Len
______________________________________________________
remove nothing for valid email address. 


0
Len
3/12/2010 12:41:34 AM
access 16762 articles. 2 followers. Follow

6 Replies
957 Views

Similar Articles

[PageSpeed] 27

Hi Len,

Assuming that you've defined and set db as a database object (and I'd expect 
an error earlier if you hadn't), the obvious thing is that you need to 
delimit strRef (I'm assuming from its name that it's declared as a String 
variable), thus:
    rstInv.FindFirst "Ref = '" & strRef  & "'"

If Ref in Payments table is not a string (perhaps an autonumber), then you 
need to declare the variable to match the datatype, perhaps:
    Dim lngRef as Long
    ...
    lngRef = !Ref    'PK in Payments (same spelling FK in Invoices)
    rstInv.FindFirst "Ref = " & lngRef  'find first matching
    ...

HTH,

Rob


..Len B wrote:
> Here is a snippet of code which fails with error
> 3251: Operation is not supported for this type of object.
>
> Set rstPay = db.OpenRecordset("Payments") 'open table 1 side
> Set rstInv = db.OpenRecordset("Invoices") 'open table many side
> rstPay.MoveFirst
> rstInv.MoveFirst
> With rstPay
>    Do Until .EOF
>        ...
>        strRef = !Ref    'PK in Payments (same spelling FK in Invoices)
> ===>    rstInv.FindFirst "Ref = " & strRef  'find first matching
>        invoice With rstInv
>            Do Until .EOF
>              ...
>            Loop
>        End With
>    Loop
> End With
>
> I have used this construct to find the first match in a recordset many
> times before but now I am at a loss to know where to look. Help says
> method is usually valid but not in this case.
>
> I have looked at help for OpenRecordset but this particular syntax is
> not shown. I have to assume that the recordset has some default
> attribute preventing finds but what is it? How do I find out?
> (Access 2003) 


0
Rob
3/12/2010 1:11:13 AM
I cannot believe how stupid I am. The field Ref in both tables is Long
and here I am defining a string to refer to it !!! (AutoNum in Payments)
Set db was done earlier as were other Dims and assignments etc. eg
blnDisplayMsg = Me.chkDisplay

I changed to   Dim lngRef as Long
and changed all occurrences of strRef to lngRef so that the code is as
you suggested. The code compiles without error.

HOWEVER, the error 3251 still persists.

-- 
Len
______________________________________________________
remove nothing for valid email address.
"Rob Parker" <NOrobpparkerSPAM@optusnet.com.auFORME> wrote in message 
news:%23xQxOEYwKHA.404@TK2MSFTNGP02.phx.gbl...
| Hi Len,
|
| Assuming that you've defined and set db as a database object (and I'd 
expect
| an error earlier if you hadn't), the obvious thing is that you need to
| delimit strRef (I'm assuming from its name that it's declared as a 
String
| variable), thus:
|    rstInv.FindFirst "Ref = '" & strRef  & "'"
|
| If Ref in Payments table is not a string (perhaps an autonumber), then 
you
| need to declare the variable to match the datatype, perhaps:
|    Dim lngRef as Long
|    ...
|    lngRef = !Ref    'PK in Payments (same spelling FK in Invoices)
|    rstInv.FindFirst "Ref = " & lngRef  'find first matching
|    ...
|
| HTH,
|
| Rob
|
|
| .Len B wrote:
| > Here is a snippet of code which fails with error
| > 3251: Operation is not supported for this type of object.
| >
| > Set rstPay = db.OpenRecordset("Payments") 'open table 1 side
| > Set rstInv = db.OpenRecordset("Invoices") 'open table many side
| > rstPay.MoveFirst
| > rstInv.MoveFirst
| > With rstPay
| >    Do Until .EOF
| >        ...
| >        strRef = !Ref    'PK in Payments (same spelling FK in 
Invoices)
| > ===>    rstInv.FindFirst "Ref = " & strRef  'find first matching
| >        invoice With rstInv
| >            Do Until .EOF
| >              ...
| >            Loop
| >        End With
| >    Loop
| > End With
| >
| > I have used this construct to find the first match in a recordset 
many
| > times before but now I am at a loss to know where to look. Help says
| > method is usually valid but not in this case.
| >
| > I have looked at help for OpenRecordset but this particular syntax is
| > not shown. I have to assume that the recordset has some default
| > attribute preventing finds but what is it? How do I find out?
| > (Access 2003)
|
|



0
Len
3/12/2010 1:40:32 AM
Hi Len,

If Payments and Invoices are tables in your database (not linked tables), 
then OpenRecordset will default to opening a table-type recordset, which 
doesn't support the Findxxxx methods.

You can either use the Seek method on the Recordset as is, or force Access 
to open Dynaset recordsets thus:
Set rstPay = db.OpenRecordset("Payments", dbOpenDynaset) 'open table 1 side
Set rstInv = db.OpenRecordset("Invoices", dbOpenDynaset) 'open table many side

Caveat: Tested in A2007 only, as I don't have A2003.

Hope this helps,
Alex.


".Len B" wrote:

> Here is a snippet of code which fails with error
> 3251: Operation is not supported for this type of object.
> 
> Set rstPay = db.OpenRecordset("Payments") 'open table 1 side
> Set rstInv = db.OpenRecordset("Invoices") 'open table many side
> rstPay.MoveFirst
> rstInv.MoveFirst
> With rstPay
>     Do Until .EOF
>         ...
>         strRef = !Ref    'PK in Payments (same spelling FK in Invoices)
> ===>    rstInv.FindFirst "Ref = " & strRef  'find first matching invoice
>         With rstInv
>             Do Until .EOF
>               ...
>             Loop
>         End With
>     Loop
> End With
> 
> I have used this construct to find the first match in a recordset many
> times before but now I am at a loss to know where to look. Help says
> method is usually valid but not in this case.
> 
> I have looked at help for OpenRecordset but this particular syntax is
> not shown. I have to assume that the recordset has some default
> attribute preventing finds but what is it? How do I find out?
> (Access 2003)
> -- 
> Len
> ______________________________________________________
> remove nothing for valid email address. 
> 
> 
> .
> 
0
Utf
3/12/2010 2:09:02 AM
I'm sorry Rob. I should have thanked you for your help.
My only excuse is that I was so overcome by the realisation
of my own stupidity that I forgot.

Thanks Rob.
-- 
Len
______________________________________________________
remove nothing for valid email address.
"Rob Parker" <NOrobpparkerSPAM@optusnet.com.auFORME> wrote in message 
news:%23xQxOEYwKHA.404@TK2MSFTNGP02.phx.gbl...
| Hi Len,
|
| Assuming that you've defined and set db as a database object (and I'd 
expect
| an error earlier if you hadn't), the obvious thing is that you need to
| delimit strRef (I'm assuming from its name that it's declared as a 
String
| variable), thus:
|    rstInv.FindFirst "Ref = '" & strRef  & "'"
|
| If Ref in Payments table is not a string (perhaps an autonumber), then 
you
| need to declare the variable to match the datatype, perhaps:
|    Dim lngRef as Long
|    ...
|    lngRef = !Ref    'PK in Payments (same spelling FK in Invoices)
|    rstInv.FindFirst "Ref = " & lngRef  'find first matching
|    ...
|
| HTH,
|
| Rob
|
|
| .Len B wrote:
| > Here is a snippet of code which fails with error
| > 3251: Operation is not supported for this type of object.
| >
| > Set rstPay = db.OpenRecordset("Payments") 'open table 1 side
| > Set rstInv = db.OpenRecordset("Invoices") 'open table many side
| > rstPay.MoveFirst
| > rstInv.MoveFirst
| > With rstPay
| >    Do Until .EOF
| >        ...
| >        strRef = !Ref    'PK in Payments (same spelling FK in 
Invoices)
| > ===>    rstInv.FindFirst "Ref = " & strRef  'find first matching
| >        invoice With rstInv
| >            Do Until .EOF
| >              ...
| >            Loop
| >        End With
| >    Loop
| > End With
| >
| > I have used this construct to find the first match in a recordset 
many
| > times before but now I am at a loss to know where to look. Help says
| > method is usually valid but not in this case.
| >
| > I have looked at help for OpenRecordset but this particular syntax is
| > not shown. I have to assume that the recordset has some default
| > attribute preventing finds but what is it? How do I find out?
| > (Access 2003)
|
|



0
Len
3/12/2010 2:40:23 AM
Thanks Alex,
That appears to have done the trick; at least until my stupidity 
sabotages me again.
-- 
Len
______________________________________________________
remove nothing for valid email address.


"Tokyo Alex" <TokyoAlex@discussions.microsoft.com> wrote in message 
news:7499E01D-3B5D-49FC-9555-C4D99653BA20@microsoft.com...
| Hi Len,
|
| If Payments and Invoices are tables in your database (not linked 
tables),
| then OpenRecordset will default to opening a table-type recordset, 
which
| doesn't support the Findxxxx methods.
|
| You can either use the Seek method on the Recordset as is, or force 
Access
| to open Dynaset recordsets thus:
| Set rstPay = db.OpenRecordset("Payments", dbOpenDynaset) 'open table 1 
side
| Set rstInv = db.OpenRecordset("Invoices", dbOpenDynaset) 'open table 
many side
|
| Caveat: Tested in A2007 only, as I don't have A2003.
|
| Hope this helps,
| Alex.
|
|
| ".Len B" wrote:
|
| > Here is a snippet of code which fails with error
| > 3251: Operation is not supported for this type of object.
| >
| > Set rstPay = db.OpenRecordset("Payments") 'open table 1 side
| > Set rstInv = db.OpenRecordset("Invoices") 'open table many side
| > rstPay.MoveFirst
| > rstInv.MoveFirst
| > With rstPay
| >     Do Until .EOF
| >         ...
| >         strRef = !Ref    'PK in Payments (same spelling FK in 
Invoices)
| > ===>    rstInv.FindFirst "Ref = " & strRef  'find first matching 
invoice
| >         With rstInv
| >             Do Until .EOF
| >               ...
| >             Loop
| >         End With
| >     Loop
| > End With
| >
| > I have used this construct to find the first match in a recordset 
many
| > times before but now I am at a loss to know where to look. Help says
| > method is usually valid but not in this case.
| >
| > I have looked at help for OpenRecordset but this particular syntax is
| > not shown. I have to assume that the recordset has some default
| > attribute preventing finds but what is it? How do I find out?
| > (Access 2003)
| > -- 
| > Len
| > ______________________________________________________
| > remove nothing for valid email address.
| >
| >
| > .
| >



0
Len
3/12/2010 2:42:47 AM
".Len B" <gonehome@internode0.on0.net> wrote in message 
news:OqCyIzXwKHA.3896@TK2MSFTNGP02.phx.gbl...
> Here is a snippet of code which fails with error
> 3251: Operation is not supported for this type of object.
>
> Set rstPay = db.OpenRecordset("Payments") 'open table 1 side
> Set rstInv = db.OpenRecordset("Invoices") 'open table many side
> rstPay.MoveFirst
> rstInv.MoveFirst
> With rstPay
>    Do Until .EOF
>        ...
>        strRef = !Ref    'PK in Payments (same spelling FK in Invoices)
> ===>    rstInv.FindFirst "Ref = " & strRef  'find first matching invoice
>        With rstInv
>            Do Until .EOF
>              ...
>            Loop
>        End With
>    Loop
> End With
>
> I have used this construct to find the first match in a recordset many
> times before but now I am at a loss to know where to look. Help says
> method is usually valid but not in this case.
>
> I have looked at help for OpenRecordset but this particular syntax is
> not shown. I have to assume that the recordset has some default
> attribute preventing finds but what is it? How do I find out?
> (Access 2003)
> -- 
> Len
> ______________________________________________________
> remove nothing for valid email address.
>
> 

0
De
3/13/2010 5:24:26 PM
Reply:

Similar Artilces:

'the operation failed' error window in outlook 2003?
Every time when I open Outlook I get an error message 'the operation failed' that goes away after a second but the progam does not open either. I have to click on the icon a second time and the program opens right away. I have all the latest updates including servicepack 2 Does anybody have any suggestions? Any help would be appreciated. Heidi <Heidi@discussions.microsoft.com> wrote: > Every time when I open Outlook I get an error message 'the operation > failed' that goes away after a second but the progam does not open > either. I have to click on the i...

I need to compare 3 numbers and find the one in the middle
I have three numbers in a single row and would like to identify the middle number enter that number in another cell. Example: 1st # 2nd # 3rd # result 628 678 720 678 655 625 700 655 748 720 725 725 is there a function in excel that can do this? Thanks, Eddie Try =LARGE(A1:C1,2) VBA Noo -- VBA Noo ----------------------------------------------------------------------- VBA Noob's Profile: http://www.excelforum.com/member.php?action=getinfo&userid=3383 View this thread: http://www.excelforum.com/showthread.php?threadid=56811 fasteddie wrote.....

Find Duplicate names and delate
Dear experts, I have a small doubt could you clarify that??? That is I find duplicate name but I want to delete one name only, if I filter DUPLICATE….. both names are showing… 1. Select the range of data including the header. You need to have headers for these columns 2. From menu Data>Filter>Advanced Filter>Copy to another location 3. In 'copy to' specify the target cell and check 'Unique records only' 4. Click OK will give you the unique list -- Jacob "Find Duplicate names and delate" wrote: > Dear experts, > I have a small ...

run-time error 2147467259 (80004005)
i have a store that is getting the run time error above only when they have a transaction involving the members of one matrix, and then they are kicked out of the system. if they try to sell one of these items, transfer it to another store, receive it, etc, it will kill the program and give this error. the rest of the information given in the error is "could not find the index entry for RID '1600002bd2765100' in index page (1:42599), index ID 8, database GFANC03. Does anyone have any ideas on the cause of this problem and possible solutions? We are using version 1.2, sin...

Finding a Median
I'm trying to write a query that will return a median for various values taken from a previous query. I've seen some suggestions in my searching, but I haven't been able to get them working. They are also all from before 2003 and refer to Access 97 and 2000. Has any functionality been added to 2003 for this? Or is there a non- code-based way to do it? I've seen it suggested to write a code to open the query, sort it, find the total number of records, divide it in half, then seek out the middle record using that value. I'm still very green when it comes to code, though...

Find a Value the first Time It Occurs
I have a row of values that shows the total cumulative number of sales of items by month. Occasionally, there may be no sales in a month for an item so the cumulative value would stay the same for more than one month. I want to select a number in the row the first time it occurs and not select it if it repeats. What are you wanting to do with the info? To return position (column number) of number 1234 within row 2: =MATCH(1234,2:2,0) A formula that signals it's the first occurence: =COUNTIF($A2:A2,A2)=1 This could be used in a helper row, or as a conditional format f...

Find/Replace in RichEdit 2.0
I'm using Windows ME and I've switched from RichEdit 1.0 to 2.0 for my CRichEditDoc/View application so that I can use the ITextDocument interface and can do things such as suspend/resume the Redo buffer. Problem is, now the Find/Replace dialogs don't seem to do anything. If I revert back to RichEdit 1.0 they do! What's going on? BUMP! adriangibbons@yahoo.co.uk (Adrian Gibbons) wrote in message news:<34a2acd5.0404130713.123dbaab@posting.google.com>... > I'm using Windows ME and I've switched from RichEdit 1.0 to 2.0 for my > CRichEditDoc/View application...

Find (but not find)
My program takes a name from sheet3 goes to sheet1 to Find the name. If it cannot find name, how do you do an If/End to Exit Do while or find out if name has been founf? I have "On Error Resume Next" in program. Thanks again for all your help Gordon As ALWAYS, post your code for comments & suggestions. -- Don Guillett Microsoft MVP Excel SalesAid Software dguillett1@austin.rr.com "Gordon" <gwelch1938@yahoo.com> wrote in message news:1184612089.486737.144020@n60g2000hse.googlegroups.com... > My program takes a name from sheet3 goes to sheet1 to Find the na...

Host unknown error
Have exchange 5.5 with sp4 OS win2000 sp4 some of the domain mails are bounced with NDR "host unknown" and some time the same domain mails are able to sent . Kindly solution Sounds like a problem with DNS. "nainar" <nainar@ctd.hcltech.com> wrote in message news:837701c4853c$c3cfe450$a501280a@phx.gbl... > Have exchange 5.5 with sp4 > OS win2000 sp4 > some of the domain mails are bounced with NDR "host > unknown" > and some time the same domain mails are able to sent . > Kindly solution ...

OutLook in XP Office Pro producing this error:
After upgrading from Office 2k to Office XP Pro, I am getting the following error message. I imported my "old" archive and it had/has a folder called "BladePro". Each time my archive runs, I get this message. I have searched my entire hard drive and there are no other archive folders so where is it finding a second "BladePro" folder? This is irritating, to say the least. Error while archiving folder "BladePro" in store "Archive Folders". A folder by this name already exists. If possible, please send your suggestions to: rweeks@cableon...

Finding an event
Hello, I am developing an app that uses a single worksheet to enter data. When user double clicks a button, a new window (in same workbook) opens with a new sheet. My problem is that excel does not seem to have any events for close of window if there are multiple windows in a workbook. Can someone help Peter Peter, That triggers the Workbook_WindowActivate event, you can use that. HTH Bob "Peter Ostermann" wrote in message news:i9m5v8$7bv$02$1@news.t-online.com... Hello, I am developing an app that uses a single worksheet to enter data. When user double clicks a button...

Find value in a column and insert rows above
The set up looks like this: ColU ColV ColW ColX Y N N N Y N N N N Y N N N N Y N N N Y N N N Y N N N Y N N N Y Y Columns will always be U through X and will always be sorted in this order. I need to find the first Y in each column and insert 2 rows above that row. On the blank row above the first Y, I need to highlight in yellow and put title in the first cell, such as New, Old, Existing, Deleted. Any help would be greatly appreciated. Thanks for your time, Dee If desired, send your file to my address below. I will only look if: 1. You send a copy of this ...

Sum if Condition is Equal in Range Date and find column
I want to make a sum if Range is a week number and if style is Equal to CONC-92 or CONC-45 Week# 49 Week# 50 CONC-92= 27 CONC-92= 30 CONC-45= 27 CONC-45= 30 Datas are in a pivot table and... Pivot table looks like this: Date CONC-92 CONC-45 CONC-92 CONC-45 12/7 5 5 10 10 12/8 2 2 10 10 12/9 5 5 10 10 12/10 5 5 10 10 please help -- Lorenzo Díaz Cad Technician ...

Error when configuring Resource Scheduling
We are using Exchange 2003 with Outlook 2003 as the Exchange client. I have created a mailbox that will be used as a resource. When I open Outlook and go to Calendar Options > Resource Scheduling, I get the following error: The Operation Failed. An Object Could Not Be Found This happens on every client with every account. Any ideas? Thanks ...

cannot find database
I have an excel spreadsheet that is supposed to update a access db. Whenever I try to save the .xls I get an error stating cannot find db. Even when I open the db with access, I get the error and the db opens anyway?????? This only happens on 2 out of 20 pc's and I cannot figure out why???????? Thanks ...

Trapping a NO FIND after a find
I use the code below to store a row number to a variable after a find. I would like to trap a NO FIND if the find is unsuccessfull Any ideas. FSt1 provided the code below Sub macfindrow() dim rn as string dim rng as range dim therow as long rn = inputbox("enter something to find") if rn <> "" then Set rng = nothing Set rng = range("A1:IV65536").Find(what:=rn, _ After:=Range("A1"), _ Lookin:=xlformulas, _ Lookat:=xlpart, _ ...

How do I find the out of office reply?
My out of office reply is missing from tools. How can I retrieve it? Out of Office reply <Out of Office reply@discussions.microsoft.com> wrote: > My out of office reply is missing from tools. How can I retrieve it? Unless you are using an Exchange server, you will not have the Out of Office Assistant. See this: http://www.slipstick.com/rules/autoreply.htm -- Brian Tillman ...

Ignore DIV/0 Errors in Array?
Hi all... I've got a spreadsheet that looks something like this: Score1 Score2 AvgScore 1 1 1 2 1 1.5 NULL NULL #DIV/0 The spreadsheet takes two scores we enter an averages them. The trick is that the spreadsheet is being fed from our database and people who haven't been 'scored' yet get a NULL. On a separate form, I am trying to run a =PERCENTILE function on the AvgScore column to see what our top x% score is, etc. The problem is, so long as the NULLs are in the data, there are DIV/0 cells in the array a...

Finding numbers in rows and highlighting them
Hi everybody :) I need help. This is a lotto system. I have a spreadsheet with 508 rows and 45 columns. In each row there are 45 numbers mixed (1 to 45). I need a script or some other way to find where particular (drawn) numbers are in each of the 508 rows. If my explanation is not clear please ask for farther clarification. Thank you in advance for your help. Joh -- Johncobb4 ----------------------------------------------------------------------- Johncobb45's Profile: http://www.excelforum.com/member.php?action=getinfo&userid=1658 View this thread: http://www.excelforum.com/showt...

How do I find data from a list (or table) and insert it in a row?
I used to use a spreadsheet program (2 years ago) that allowed me to lookup an item and insert it into the worksheet. I know the program was at least a year old at that time (2002). How do I create a list, reference it , and then insert an item into a row of my choice? Example: Make of item, item description, and cost. Does the data go on one worksheet and then get referenced and inserted into the list of another worksheet? If so, how? I can't seem to get any answers by reading books on the subject. I no longer have access to the old workbook from which to study. Maybe that ...

Access2000: An error when any event does exist
Hi I started with a new project after some days not using acces, and something very weird happened. I got an error: "The expression On Open you entered as the Event Property setting produced the following error: A problem occurred while Microsoft Access was communicating with the OLE server or ActiveX Control" At start I suspected that some control on form was cause (an unbound form), but I deleted all controls from form, and the error message pops up whenever I create any event which fires when form is opened (OnOpen, OnCurrent, etc.) (My OS is WindowsXP, antivirus is F-Secu...

Advanced Find not finding all
"Advanced Find" in Outlook 2007 is not finding all email messages which match the criteria. It finds between 30 and 200 and then stops. I then have to work with those (e.g., delete them) and then click "Find Now" again to find another batch, dozens of times! What is wrong? How do I fix this and find all messages that match the criteria? My typical application is to split the entire contents of my .pst files by date. Do do this I make a copy of the file. In one I delete all messages older than the cutoff date (e.g., 1/1/2007), and in the other I delete all messages yo...

How to: find reason for rejected messages?
I'm trying to find the reason, why certain messages get rejected by our exchange 2000 server. Is there a way to find out? Scenario: pullmail gets mails from pop3 mailboxes from, let's say "internetmailserver.com" and puts it in our exchange server "intranet.com". For most mails it works marvellous but for some mails it just fails and I can only see (output of pullmail command): .... 1 messages waiting << +OK 8488322 octets Message from: some.user@validdomain.com to: user@intranet.com SMTP message rejected, reply OK Unexpected response rsion:...

"You cannot open two documents with the same name" problem and how to trap the error in VBA.
Hi All, I am wondering if anyone has a solution on this. There is a Word 2007 file (docx) that has links to an Excel file. They are both resided in the same folder. When the files are moved to another folder, the link path does not get updated =96 which I understand. But when the Word file is first opened, the following message came up: A document with the name "xxx.xlsm" is already open. You cannot open two documents with the same name, even if the documents are in different folders. To open the second documents, either close the document that's currently ope...

Newbie problem: Compile error: expected =
Hi, I get this error whenever I try to call a sub. The sub is in a class module. I have all the arguments in the correct order, one long and 5 strings but I get the compile error as soon as I finish typing the line. The editor clearly recogises the sub because it shows me the arguments as I type. Other functions and subs in that lass module are called without problem. I am completely stumped. Can anyone offer any clues please? Thanks Deryck Deryck, It would be very helpful if you posted the code that is causing the compiler error. -- Cordially, Chip Pearson Microsoft MVP - Excel Pea...