From: Dooza on 21 Jan 2010 06:20 Hi there, I was provided a custom com object that is on a intranet webserver, its a stocktake component that hooks into an ERP system called Streamline. The sample code that was provided as in VB, and I managed to use it in an ASP application. During single user testing we didn't run into any problems, but when in a multi-user environment we receive an occasional error. When I contacted the vendor about this error, this is what I was told: What I did in my VB program to get the error: a click button with code - dimensioned the xacstocktake object at the start of the click code (dim stocktake as xacstocktake) and called it as an early bound object (set stocktake = new xacstocktake). Then I did two updates (stocktake.UpdateStocktake). Once I hit the end of the sub, the stocktake object was terminated (since it was defined in the sub). This termination of the stocktake object shut down all tables, connections, instances and sessions in the stocktake object. When I clicked on the button again, I got the object variable error as the session for the stocktake object had been terminated. What I did in my VB program to NOT get the error: The xacstocktake object was dimensioned at the start of the program. The click button had pretty much the same code but as the xacstocktake object was not defined in the click sub, it was not terminated when the sub was completed. Next (and all subsequent) time I clicked on the button, the update by the xacstocktake object was fine. I then terminated the xacstocktake object when I unloaded the form. ----------------------------------------------------------------------- This all makes sense if we were running an application, but we are doing this via wireless barcode scanners that have IE, hence using ASP. There are 2 calls to the object, one to validate the item being scanned, and one to update the stocktake entry. I use this at the start of each page that calls the object: Dim macstocktake Set macstocktake = Server.CreateObject("xacslappsexe40.xacstocktake") And this at the end: Set macstocktake = nothing Can I put this in global.asa using Session_OnStart and Session_OnEnd? Dooza
From: Evertjan. on 21 Jan 2010 08:13 Dooza wrote on 21 jan 2010 in microsoft.public.inetserver.asp.general: > There are 2 calls to the object, one to validate the item being scanned, > and one to update the stocktake entry. > > I use this at the start of each page that calls the object: > Dim macstocktake > Set macstocktake = Server.CreateObject("xacslappsexe40.xacstocktake") > > And this at the end: > Set macstocktake = nothing > > Can I put this in global.asa using Session_OnStart and Session_OnEnd? It seems to me that session_onstart does not make an object available to individual pages, as it doesn't even make a simple variable available, and why should it? If you are too lazy to put thes three lines on each page that uses it, why not use two serverside includes? > What I did in my VB program to NOT get the error ASP dos not provide VB, only VBS, did you mean that? > There are 2 calls to the object, one to validate the item being scanned, > and one to update the stocktake entry. The second one would not need to rescan, meseems, but "validating an item" can mean lots of different things. -- Evertjan. The Netherlands. (Please change the x'es to dots in my emailaddress)
From: Dooza on 21 Jan 2010 08:34 On 21/01/2010 13:13, Evertjan. wrote: > Dooza wrote on 21 jan 2010 in microsoft.public.inetserver.asp.general: > >> There are 2 calls to the object, one to validate the item being scanned, >> and one to update the stocktake entry. >> >> I use this at the start of each page that calls the object: >> Dim macstocktake >> Set macstocktake = Server.CreateObject("xacslappsexe40.xacstocktake") >> >> And this at the end: >> Set macstocktake = nothing >> >> Can I put this in global.asa using Session_OnStart and Session_OnEnd? > > It seems to me that session_onstart does not make an object available to > individual pages, as it doesn't even make a simple variable available, and > why should it? No your right, upon closer inspection of global.asa I can define an object with a session scope to make it available throughout the application. > If you are too lazy to put thes three lines on each page that uses it, > why not use two serverside includes? Its not I am too lazy, its that the COM object doesn't like to be terminated until the session has finished. >> What I did in my VB program to NOT get the error > > ASP dos not provide VB, only VBS, did you mean that? That was the reply from the vendor, and it was VB. The vendor created this custom component for the ERP system. They provided really bad documentation and a demo VB application. They said an ASP application could easily be created using this, which I have done. They were successful at getting there VB program make the same error message that my ASP application was getting. They prevented the error from happening by not creating/closing the object for each scanned item (item being a real thing in the warehouse that is part of the stocktake) >> There are 2 calls to the object, one to validate the item being scanned, >> and one to update the stocktake entry. > > The second one would not need to rescan, meseems, > but "validating an item" can mean lots of different things. Yes, it can, and my case it checks whether the item is part of the current stocktake, is an active item, does or does not have a batch code and the batch code is correct. It also checks if this item has already been scanned for the current location, if it has, when you do part 2, the update, you tell to either update the existing count, or add to it. Its a pretty complex procedure which is why the vendor create the component for us. I guess I just need to know if my logic of having the object in global.asa is a good idea. Steve
From: Bob Barrows on 21 Jan 2010 11:25 Dooza wrote: > I guess I just need to know if my logic of having the object in > global.asa is a good idea. > Unless the object is configured to be free-threaded, then the answer is a decided "no". Using a thread-bound object in Session or Application will drastically reduce the scalability of your application. See: http://www.aspfaq.com/2053 -- Microsoft MVP - ASP/ASP.NET - 2004-2007 Please reply to the newsgroup. This email account is my spam trap so I don't check it very often. If you must reply off-line, then remove the "NO SPAM"
From: Dooza on 21 Jan 2010 12:46
On 21/01/2010 16:25, Bob Barrows wrote: > Dooza wrote: >> I guess I just need to know if my logic of having the object in >> global.asa is a good idea. >> > Unless the object is configured to be free-threaded, then the answer is a > decided "no". Using a thread-bound object in Session or Application will > drastically reduce the scalability of your application. See: > http://www.aspfaq.com/2053 Hi Bob, this is just the information I need to know. I will check with the vendor to see how they coded it. I doubt they have made it this way, and may just need to accept that we get errors every now and then. Cheers! Steve |