Jim Lawrence (AccessD)
accessd at shaw.ca
Mon May 12 04:38:54 CDT 2003
Hi Marcus: I have been using code like: Dim rsExpiredCards As New ADODB.Recordset Set rsExpiredCards = ExpiredCards().Clone With rsExpiredCards .... Public Function ExpiredCards() As ADODB.Recordset Set ExpiredCards = New ADODB.Recordset ..... fill recordset End function HTH Jim -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com]On Behalf Of Marcus Tewksbury Sent: Sunday, May 11, 2003 9:22 PM To: accessd at databaseadvisors.com Subject: RE: [AccessD] Classes, Recordsets, and problems inbetween - SOME PROGRESS Well - figured out how to get a recordset in, but now, how to get user defined classes? Public Sub Load_byInvoiceDetail(ByRef msrst As Variant) Dim sstrSQL As String Dim sflgNotFirst As Boolean Dim xInvoiceDetail As ADODB.Recordset Set xInvoiceDetail = msrst Ok - so now I can pass in a recordset as a variant and then cast (sort of) a local variable to it. The calling routine looks like... Dim oOrderDetail As New OrderDetail oOrderDetail.Load_byInvoiceDetail (oInvoiceDetail.mrstGet()) <- mrstGet returns the underlying recordset for the class While Not oOrderDetail.EOF oOrderDetail.FilledFlag = False oOrderDetail.MoveNext Wend Dim oInventory As New Inventory oInventory.Load_byOrderDetail (oOrderDetail.mrstGet()) So, while this will work for recordsets - it doesn't for user defined classes - I still get the same error. So, should I be making the switch to VB.net? >From: "Marcus Tewksbury" <tewksbum at hotmail.com> >Reply-To: accessd at databaseadvisors.com >To: accessd at databaseadvisors.com >Subject: RE: [AccessD] Classes, Recordsets, and problems inbetween >Date: Sun, 11 May 2003 23:11:45 -0500 > >In this case it seems to be something specifically with recordsets - with >InvoiceDetail I am only passing in an integer - and I;ve tried New'ing the >recordset in the initialize - I'll give a look into referencing, but I >haven't had a problem with any other ADO issue until now! > >Ugh - this is frustrating! > > >>From: "Haslett, Andrew" <andrew.haslett at ilc.gov.au> >>Reply-To: accessd at databaseadvisors.com >>To: "'accessd at databaseadvisors.com'" <accessd at databaseadvisors.com> >>Subject: RE: [AccessD] Classes, Recordsets, and problems inbetween >>Date: Mon, 12 May 2003 13:32:56 +0930 >> >>lol - we've only finally got overloading and inheritance into VB.Net! >>Very >>doubtful we can do that in VBA. >> >>I was about to ask if you've tried passing byRef so that ones out the >>door. >> >>Another wild stab -> but I suppose this is still worth asking. Haven't >>forgot the references to ADO?? >> >>Perhaps try declaring mrst with a NEW instance: >> >>Private mrst As *NEW* ADODB.Recordset >> >>...but why would it work for InvoiceDetail and not OrderDetail?? >> >>Cheers, >>A >> >>-----Original Message----- >>From: Marcus Tewksbury [mailto:tewksbum at hotmail.com] >>Sent: Monday, 12 May 2003 1:28 PM >>To: accessd at databaseadvisors.com >>Subject: Re: [AccessD] Classes, Recordsets, and problems inbetween >> >> >>Yeap >> >>mrst has been declared... >> >>Option Compare Database >>Option Explicit >> >>Private mlngInvoiceDetailID As Long >>Private mlngInvoiceID As Long >>Private mlngOrderDetailID As Long >>Private mlngProductID As Long >>Private mintShipped As Integer >>Private mintCanceled As Integer >>Private mintBackOrdered As Integer >>Private mcurExtendedPrice As Currency >>Private mflgSubstituteFlag As Boolean >>Private mdteDateAdded As Date >>Private mdteLastUpdated As Date >>Private mflgActiveFlag As Boolean >> >>Private mrst As ADODB.Recordset <- Here >>Private mflgAddFlag As Boolean >>Private mflgDirtyFlag As Boolean >> >>The problem seems to be directly related to passing a recordset into the >>class - through a sub or function. I've tried making >> >>Public Function Load_byInvoiceDetail >> >>a sub and function - and have tried passing byVal and ByRef. For testing >>I >>changed the paramter to (xrst as ADODB.recordset) and then passed in a >>newly >> >>created, plain recordset and it still bombs. >> >>Of course, another question that stems from this - if you look at what my >>code is trying to accomplish - can you overload the initialize method? >>That >> >>would be helpful! >> >>Thanks a million, >> >>- Tewks >> >> >> >> >> >> >From: "Michael R Mattys" <michael.mattys at adelphia.net> >> >Reply-To: accessd at databaseadvisors.com >> >To: <accessd at databaseadvisors.com> >> >Subject: Re: [AccessD] Classes, Recordsets, and problems inbetween >> >Date: Sun, 11 May 2003 23:09:37 -0400 >> > >> >Marcus, >> > >> >Has mrst been set = to an ADO recordset >> >in the Declarations section? >> > >> >Mike Mattys >> > >> >----- Original Message ----- >> >From: "Marcus Tewksbury" <tewksbum at hotmail.com> >> >To: <accessD at databaseadvisors.com> >> >Sent: Sunday, May 11, 2003 10:48 PM >> >Subject: [AccessD] Classes, Recordsets, and problems inbetween >> > >> > >> > > Hi everyone, >> > > >> > > Ok - here is my issue - I thought I'd be really fancy and start >> > > encapsulating my tables in data classes - using properites and all >>that >> >good >> > > stuff. One issue that I am having is trying to pass in recordsets >>(or >> >other >> > > classes that also contain recordsets) into a class always gives me a >> >Type >> > > Mismatch or 438 error. >> > > >> > > The class files and code behind all reside in the same project. >> > > >> > > Any thoughts? I'm stumped! >> > > >> > > >> > > Here are 2 snippets >> > > >> > > Dim oInvoiceDetail As New InvoiceDetail >> > > oInvoiceDetail.Load_byInvoiceID (Me.InvoiceID) >> > > >> > > Dim oOrderDetail As New OrderDetail >> > > oOrderDetail.Load_byInvoiceDetail (oInvoiceDetail) <-CRASHES HERE >> > > >> > > While Not oOrderDetail.EOF >> > > oOrderDetail.FilledFlag = False >> > > oOrderDetail.MoveNext >> > > Wend >> > > >> > > and ... >> > > >> > > Public Function Load_byInvoiceDetail(ByVal xInvoiceDetail As >> >InvoiceDetail) >> > > >> > > Dim sstrSQL As String >> > > Dim sflgNotFirst As Boolean >> > > >> > > sstrSQL = "SELECT * FROM OrderDetail" >> > > >> > > While Not xInvoiceDetail.EOF >> > > If Not sflgNotFirst Then >> > > sstrSQL = sstrSQL + " WHERE OrderDetailID = " & >> > > xInvoiceDetail!OrderDetailID & ")" >> > > sflgNotFirst = True >> > > Else >> > > sstrSQL = sstrSQL + " OR (OrderDetailID = " & >> > > xInvoiceDetail!OrderDetailID & ")" >> > > End If >> > > xInvoiceDetail.MoveNext >> > > Wend >> > > >> > > With mrst >> > > .CursorLocation = adUseClient >> > > .CursorType = adOpenDynamic >> > > .LockType = adLockBatchOptimistic >> > > .Source = sstrSQL >> > > .Open >> > > End With >> > > >> > > Call Scatter >> > > >> > > End Function >> > > >> > > _________________________________________________________________ >> > > MSN 8 helps eliminate e-mail viruses. Get 2 months FREE*. >> > > http://join.msn.com/?page=features/virus >> > > >> > > _______________________________________________ >> > > AccessD mailing list >> > > AccessD at databaseadvisors.com >> > > http://databaseadvisors.com/mailman/listinfo/accessd >> > > Website: http://www.databaseadvisors.com >> > >> >_______________________________________________ >> >AccessD mailing list >> >AccessD at databaseadvisors.com >> >http://databaseadvisors.com/mailman/listinfo/accessd >> >Website: http://www.databaseadvisors.com >> >>_________________________________________________________________ >>The new MSN 8: smart spam protection and 2 months FREE* >>http://join.msn.com/?page=features/junkmail >> >>_______________________________________________ >>AccessD mailing list >>AccessD at databaseadvisors.com >>http://databaseadvisors.com/mailman/listinfo/accessd >>Website: http://www.databaseadvisors.com >> >>IMPORTANT - PLEASE READ ******************** >>This email and any files transmitted with it are confidential and may >>contain information protected by law from disclosure. >>If you have received this message in error, please notify the sender >>immediately and delete this email from your system. >>No warranty is given that this email or files, if attached to this >>email, are free from computer viruses or other defects. They >>are provided on the basis the user assumes all responsibility for >>loss, damage or consequence resulting directly or indirectly from >>their use, whether caused by the negligence of the sender or not. >>_______________________________________________ >>AccessD mailing list >>AccessD at databaseadvisors.com >>http://databaseadvisors.com/mailman/listinfo/accessd >>Website: http://www.databaseadvisors.com > >_________________________________________________________________ >MSN 8 with e-mail virus protection service: 2 months FREE* >http://join.msn.com/?page=features/virus > >_______________________________________________ >AccessD mailing list >AccessD at databaseadvisors.com >http://databaseadvisors.com/mailman/listinfo/accessd >Website: http://www.databaseadvisors.com _________________________________________________________________ MSN 8 with e-mail virus protection service: 2 months FREE* http://join.msn.com/?page=features/virus _______________________________________________ AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com