Re: CFC Best Practices
What I'm thinking, from this thread and others I've read in the past, is that if keeping your code database-independent is priority. inserting some unique identifier and then querying for that in a second query might be the best option. Or do you folks find that you can't really stay uncoupled from your DB? On Tue, Aug 19, 2008 at 11:35 AM, Brian Kotek [EMAIL PROTECTED] wrote: While it probably won't happen often, depending on load, even the Now() logic can result in two records with the same value if they come in at the same time. And cftransaction will only work if you go all the way to serializable for isolation level, which essentially single-threads access and, again depending on how often the query is run, can be a performance issue. If this query isn't hit a lot by multiple threads none of this may be an issue, but it is definitely something that must be kept in mind. ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311511 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
Re: CFC Best Practices
If you decide to go in this direction, I would suggest not just using the 'datetime' added column. create a truly unique identifier such as: datetime (MMDDHHMMSS)+ user ip address (or username if logged in) plus a random sequence. This way you will know you can search on the unique and not get a possible duplicate. However, you can also create a separate set of functions (CFCs) for each possible database so that you only hit the database once per call, if you want to blend the need for optimized code along with database type independence. William What I'm thinking, from this thread and others I've read in the past, is that if keeping your code database-independent is priority. inserting some unique identifier and then querying for that in a second query ...might be the best option. Or do you folks find that you can't really stay uncoupled from your DB? issue, but it is definitely something that must be kept in mind. ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311512 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Re: CFC Best Practices
I've tried using the result.identitycol trick with CF8 and MSSQL and for me, it doesn't work. I just get an error. Not that it is the best approach, but the result.identitycol trick is a little 'tricky' eg. cfquery name=queryname datasource=nameddatasource if you cfdump queryname, you will see the identity col, BUT if you try to get the identitycol with queryname.identitycol, it doesn't work. Here is the tricky part: add a 'result' parameter eg. cfquery name=queryname datasource=nameddatasource result=qnvars and then refer to the identitycol through that result. cfdump var=#qnvars.identitycol# Hope this helps ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311533 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
CFC Best Practices
This is more of a how would you do it question. I have a simple set of queries that are currently inside an cfif statement, the if block inserts a record, grabs the id of the just inserted record, and there's an optional update that runs if some one else is entering there record. I know I can just dump the queries into a function and it'll work... But would I be better served by creating separate functions and call the last two from inside the insert function? -- Scott Stewart ColdFusion Developer Office of Research Information Systems Research amp; Economic Development University of North Carolina at Chapel Hill Phone:(919)843-2408 Fax: (919)962-3600 Email: [EMAIL PROTECTED] ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311252 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Re: CFC Best Practices
Separate methods might make sense if you need to do this from more than one method. If it is specific to that method it might not be worth breaking it up. Be aware though that inserting a record and then selecting the MAX id can result in an incorrect ID if more than one thread runs this code at the same time. You'd probably be better off getting the last inserted ID from the cfquery itself if you are on CF8, or looking at using a native database function like scope_identity() (the actual function varies across platforms). A bit more can be found here: http://www.forta.com/blog/index.cfm/2007/7/6/ColdFusion-8-Can-Return-Identity-Values On Tue, Aug 19, 2008 at 10:22 AM, Scott Stewart [EMAIL PROTECTED]wrote: This is more of a how would you do it question. I have a simple set of queries that are currently inside an cfif statement, the if block inserts a record, grabs the id of the just inserted record, and there's an optional update that runs if some one else is entering there record. I know I can just dump the queries into a function and it'll work... But would I be better served by creating separate functions and call the last two from inside the insert function? -- Scott Stewart ColdFusion Developer Office of Research Information Systems Research amp; Economic Development University of North Carolina at Chapel Hill Phone:(919)843-2408 Fax: (919)962-3600 Email: [EMAIL PROTECTED] ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311259 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
Re: CFC Best Practices
Be aware though that inserting a record and then selecting the MAX id can result in an incorrect ID if more than one thread runs this code at the same time. You'd probably be better off getting the last inserted ID from the cfquery itself if you are on CF8, or looking at using a native database function like scope_identity() (the actual function varies across platforms). Good point to ponder... Brian Kotek wrote: Separate methods might make sense if you need to do this from more than one method. If it is specific to that method it might not be worth breaking it up. Be aware though that inserting a record and then selecting the MAX id can result in an incorrect ID if more than one thread runs this code at the same time. You'd probably be better off getting the last inserted ID from the cfquery itself if you are on CF8, or looking at using a native database function like scope_identity() (the actual function varies across platforms). A bit more can be found here: http://www.forta.com/blog/index.cfm/2007/7/6/ColdFusion-8-Can-Return-Identity-Values On Tue, Aug 19, 2008 at 10:22 AM, Scott Stewart [EMAIL PROTECTED]wrote: This is more of a how would you do it question. I have a simple set of queries that are currently inside an cfif statement, the if block inserts a record, grabs the id of the just inserted record, and there's an optional update that runs if some one else is entering there record. I know I can just dump the queries into a function and it'll work... But would I be better served by creating separate functions and call the last two from inside the insert function? -- Scott Stewart ColdFusion Developer Office of Research Information Systems Research amp; Economic Development University of North Carolina at Chapel Hill Phone:(919)843-2408 Fax: (919)962-3600 Email: [EMAIL PROTECTED] ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311260 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
Re: CFC Best Practices
You can generally avoid the problem with a cftransaction tag if you're doing the MAX(id) thing, but the other solutions are better (especially the new CF8 goodies which, for example, are a life saver for Oracle). On Tue, Aug 19, 2008 at 11:12 PM, Scott Stewart [EMAIL PROTECTED] wrote: Be aware though that inserting a record and then selecting the MAX id can result in an incorrect ID if more than one thread runs this code at the same time. You'd probably be better off getting the last inserted ID from the cfquery itself if you are on CF8, or looking at using a native database function like scope_identity() (the actual function varies across platforms). Good point to ponder... -- mxAjax / CFAjax docs and other useful articles: http://www.bifrost.com.au/blog/ ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311261 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Re: CFC Best Practices
James Holmes wrote: You can generally avoid the problem with a cftransaction tag if you're doing the MAX(id) thing, but the other solutions are better (especially the new CF8 goodies which, for example, are a life saver for Oracle). I've tried using the result.identitycol trick with CF8 and MSSQL and for me, it doesn't work. I just get an error. So what I've stuck to is this... Before the first insert, I do cfset now = Now() Then in the insert, for my date_added value, I use #now#. Then after that, when I do my select MAX(id), I also add where date_added = '#now#' AND I also wrap the whole thing in a cftransaction... Rob ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311262 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Re: CFC Best Practices
While it probably won't happen often, depending on load, even the Now() logic can result in two records with the same value if they come in at the same time. And cftransaction will only work if you go all the way to serializable for isolation level, which essentially single-threads access and, again depending on how often the query is run, can be a performance issue. If this query isn't hit a lot by multiple threads none of this may be an issue, but it is definitely something that must be kept in mind. On Tue, Aug 19, 2008 at 11:26 AM, RobG [EMAIL PROTECTED] wrote: James Holmes wrote: You can generally avoid the problem with a cftransaction tag if you're doing the MAX(id) thing, but the other solutions are better (especially the new CF8 goodies which, for example, are a life saver for Oracle). I've tried using the result.identitycol trick with CF8 and MSSQL and for me, it doesn't work. I just get an error. So what I've stuck to is this... Before the first insert, I do cfset now = Now() Then in the insert, for my date_added value, I use #now#. Then after that, when I do my select MAX(id), I also add where date_added = '#now#' AND I also wrap the whole thing in a cftransaction... Rob ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311263 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
RE: CFC Best Practices
Rob, if you are using MSSQL why don't you use @@IDENTITY? e.g. this crappy example... cfquery name=insertLocation datasource=#mydsn# INSERT INTO tblLocations ( address1, address2, address3, town ) VALUES ( cfqueryparam cfsqltype=CF_SQL_VARCHAR value=#trim(form.address1)#, cfqueryparam cfsqltype=CF_SQL_VARCHAR value=#trim(form.address2)#, cfqueryparam cfsqltype=CF_SQL_VARCHAR value=#trim(form.address3)#, cfqueryparam cfsqltype=CF_SQL_VARCHAR value=#trim(form.town)#, ) SELECT @@IDENTITY AS locationID /cfquery #insertLocation.locationID# is then your last inserted item. (assuming tblLocations has an identity column that is) Cheers, Craig. -Original Message- From: RobG [mailto:[EMAIL PROTECTED] Sent: 19 August 2008 16:26 To: CF-Talk Subject: Re: CFC Best Practices James Holmes wrote: You can generally avoid the problem with a cftransaction tag if you're doing the MAX(id) thing, but the other solutions are better (especially the new CF8 goodies which, for example, are a life saver for Oracle). I've tried using the result.identitycol trick with CF8 and MSSQL and for me, it doesn't work. I just get an error. So what I've stuck to is this... Before the first insert, I do cfset now = Now() Then in the insert, for my date_added value, I use #now#. Then after that, when I do my select MAX(id), I also add where date_added = '#now#' AND I also wrap the whole thing in a cftransaction... Rob ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311264 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Re: CFC Best Practices
On Tue, Aug 19, 2008 at 10:44 AM, Craig Dudley [EMAIL PROTECTED] wrote: Rob, if you are using MSSQL why don't you use @@IDENTITY? Just to be clear, @@identity returns the most recent inserted id of all tables. So if you had a trigger that when a table gets an insert, another table also gets an insert, @@identity would return the triggered table ID. For SQL 2000 +, look at SELECT SCOPE_IDENTITY() or SELECT IDENT_CURRENT('tablename'). http://www.sqlteam.com/article/alternatives-to-identity-in-sql-server-2000 I've seen other good blog entries / articles about this, but couldn't locate them at the moment. -- Matt Williams It's the question that drives us. ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311267 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
RE: CFC Best Practices
Actually if you are using MSSQL 2000 or 2005 or up, you should be using VALUES(); SELECT SCOPE_IDENTITY() AS id -Original Message- From: Craig Dudley [mailto:[EMAIL PROTECTED] Sent: Tuesday, August 19, 2008 11:45 AM To: CF-Talk Subject: RE: CFC Best Practices Rob, if you are using MSSQL why don't you use @@IDENTITY? e.g. this crappy example... cfquery name=insertLocation datasource=#mydsn# INSERT INTO tblLocations ( address1, address2, address3, town ) VALUES ( cfqueryparam cfsqltype=CF_SQL_VARCHAR value=#trim(form.address1)#, cfqueryparam cfsqltype=CF_SQL_VARCHAR value=#trim(form.address2)#, cfqueryparam cfsqltype=CF_SQL_VARCHAR value=#trim(form.address3)#, cfqueryparam cfsqltype=CF_SQL_VARCHAR value=#trim(form.town)#, ) SELECT @@IDENTITY AS locationID /cfquery #insertLocation.locationID# is then your last inserted item. (assuming tblLocations has an identity column that is) Cheers, Craig. -Original Message- From: RobG [mailto:[EMAIL PROTECTED] Sent: 19 August 2008 16:26 To: CF-Talk Subject: Re: CFC Best Practices James Holmes wrote: You can generally avoid the problem with a cftransaction tag if you're doing the MAX(id) thing, but the other solutions are better (especially the new CF8 goodies which, for example, are a life saver for Oracle). I've tried using the result.identitycol trick with CF8 and MSSQL and for me, it doesn't work. I just get an error. So what I've stuck to is this... Before the first insert, I do cfset now = Now() Then in the insert, for my date_added value, I use #now#. Then after that, when I do my select MAX(id), I also add where date_added = '#now#' AND I also wrap the whole thing in a cftransaction... Rob ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311268 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
RE: CFC Best Practices
Interesting, never had a problem with @@IDENTITY though. It seems to me that unless you're using triggers, it's pretty much impossible for it to return the wrong value in a query like the example below. SCOPE_IDENTITY() certainly looks a little safer but I'm not worried about all my old code. Craig. -Original Message- From: Matt Williams [mailto:[EMAIL PROTECTED] Sent: 19 August 2008 16:57 To: CF-Talk Subject: Re: CFC Best Practices On Tue, Aug 19, 2008 at 10:44 AM, Craig Dudley [EMAIL PROTECTED] wrote: Rob, if you are using MSSQL why don't you use @@IDENTITY? Just to be clear, @@identity returns the most recent inserted id of all tables. So if you had a trigger that when a table gets an insert, another table also gets an insert, @@identity would return the triggered table ID. For SQL 2000 +, look at SELECT SCOPE_IDENTITY() or SELECT IDENT_CURRENT('tablename'). http://www.sqlteam.com/article/alternatives-to-identity-in-sql-server-2000 I've seen other good blog entries / articles about this, but couldn't locate them at the moment. -- Matt Williams It's the question that drives us. ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311269 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Re: CFC Best Practices
Sandra Clark wrote: Actually if you are using MSSQL 2000 or 2005 or up, you should be using VALUES(); SELECT SCOPE_IDENTITY() AS id Okay, I just added this to my insert function, and got this: [Macromedia][SQLServer JDBC Driver][SQLServer]'SCOPY_IDENTITY' is not a recognized built-in function name. Here's the exact line: ); select SCOPY_IDENTITY() as newuserid /cfquery Rob ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311270 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Re: CFC Best Practices
Try SCOPE_IDENTITY() instead of SCOPY_IDENTITY() Sandra Clark wrote: Actually if you are using MSSQL 2000 or 2005 or up, you should be using VALUES(); SELECT SCOPE_IDENTITY() AS id Okay, I just added this to my insert function, and got this: [Macromedia][SQLServer JDBC Driver][SQLServer]'SCOPY_IDENTITY' is not a recognized built-in function name. Here's the exact line: ); select SCOPY_IDENTITY() as newuserid /cfquery Rob ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311272 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Re: CFC Best Practices
William Seiter wrote: Try SCOPE_IDENTITY() instead of SCOPY_IDENTITY() D'OH! Man and I even went over it to be absolutely certain it wasn't something stupid. Rob ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311275 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
RE: CFC Best Practices
;) William Seiter (mobile) Have you ever read a book that changed your life? go to: http://www.winninginthemargins.com and use passcode: GoldenGrove -Original Message- From: RobG [EMAIL PROTECTED] To: CF-Talk cf-talk@houseoffusion.com Sent: 8/19/2008 9:55 AM Subject: Re: CFC Best Practices William Seiter wrote: Try SCOPE_IDENTITY() instead of SCOPY_IDENTITY() D'OH! Man and I even went over it to be absolutely certain it wasn't something stupid. Rob ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311284 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Re: CFC Best Practices
For MSSQL there's a native function to give you the id. In a CFQuery tag it works like this: cfquery name=Insert datasource=#variables.dsn# SET NOCOUNT ON INSERT into Tablename ( email, firstname, lastname ) VALUES ( cfqueryparam value=#email# cfsqltype=cf_sql_varchar/, cfqueryparam value=#firstname# cfsqltype=cf_sql_varchar/, cfqueryparam value=#lastname# cfsqltype=cf_sql_varchar/ ) SELECT Ident_Current('Tablename') as RecordID SET NOCOUNT OFF /cfquery The NOCOUNT thing prevents MSSQL returning messages that might cause the query to abort. The Ident_Current('tablename') gives you the ident of the latest insert in the current tablename. Because it's all done in a single CFQUERY, I do believe the table is automatically locked This is only a MSSQL solution but i've never had a problem with getting the ID this way, even on my highest volume sites. Cheers Mike Kear Windsor, NSW, Australia Adobe Certified Advanced ColdFusion Developer AFP Webworks http://afpwebworks.com ColdFusion, PHP, ASP, ASP.NET hosting from AUD$15/month On Wed, Aug 20, 2008 at 1:26 AM, RobG [EMAIL PROTECTED] wrote: I've tried using the result.identitycol trick with CF8 and MSSQL and for me, it doesn't work. I just get an error. So what I've stuck to is this... Before the first insert, I do cfset now = Now() Then in the insert, for my date_added value, I use #now#. Then after that, when I do my select MAX(id), I also add where date_added = '#now#' AND I also wrap the whole thing in a cftransaction... Rob ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311287 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Re: CFC Best Practices
To what CF8 goodies do you refer? I do everything in ORACLE (mostly using stored procs) but I haven't had a chance to do a deep dive into CF8 yet... Thanks! Warren Koch ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311291 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Re: CFC Best Practices
http://livedocs.adobe.com/coldfusion/8/htmldocs/Tags_p-q_17.html result_name.ROWID; Oracle only. The ID of an inserted row. This is not the primary key of the row, although you can retrieve rows based on this ID. This means we can now insert a row and then query the DB on the ROWID to get the new PK (useful if the PK came from a trigger that incremented a sequence). Even works without a transaction. If you're using stored procs you have the RETURNING INTO clause at your disposal, so it may be less useful for you. On Wed, Aug 20, 2008 at 10:31 AM, Craigsell wrote: To what CF8 goodies do you refer? I do everything in ORACLE (mostly using stored procs) but I haven't had a chance to do a deep dive into CF8 yet... -- mxAjax / CFAjax docs and other useful articles: http://www.bifrost.com.au/blog/ ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;203748912;27390454;j Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:311298 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
CFC Best practices question
If I have an object loaded in the Application scope and want to use it in another object/component ,should I pass it in as a variable or should I call it directly from the Application scope. Assume that the object will always be loaded in memory. TIA G -- As an adolescent I aspired to lasting fame, I craved factual certainty, and I thirsted for a meaningful vision of human life - so I became a scientist. This is like becoming an archbishop so you can meet girls. - M. Cartmill ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;160198600;22374440;w Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:300578 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
RE: CFC Best practices question
If I have an object loaded in the Application scope and want to use it in another object/component ,should I pass it in as a variable or should I call it directly from the Application scope. Assume that the object will always be loaded in memory. TIA G I would advise against accessing the component directly. As a general rule, you should not have any CFC access a scope outside of itself. I would suggest one of the following two approaches: 1. Use a façade to the application scope By using a façade, only one component is tied directly to the application scope. 2. Injection Using either constructor or setter injection, pass the object in as a variable. HTH, Rich Kroll ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;160198600;22374440;w Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:300579 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
RE: CFC Best practices question
Also dont forget to var your variables. Bad things happen when you don't var variables that are meant to stay private to the function and you cache your component. RUss -Original Message- From: Rich [mailto:[EMAIL PROTECTED] Sent: Wednesday, March 05, 2008 4:53 PM To: CF-Talk Subject: RE: CFC Best practices question If I have an object loaded in the Application scope and want to use it in another object/component ,should I pass it in as a variable or should I call it directly from the Application scope. Assume that the object will always be loaded in memory. TIA G I would advise against accessing the component directly. As a general rule, you should not have any CFC access a scope outside of itself. I would suggest one of the following two approaches: 1. Use a façade to the application scope By using a façade, only one component is tied directly to the application scope. 2. Injection Using either constructor or setter injection, pass the object in as a variable. HTH, Rich Kroll ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;160198600;22374440;w Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:300580 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
Re: CFC Best practices question
On Wed, Mar 5, 2008 at 3:43 PM, Gerald Guido [EMAIL PROTECTED] wrote: If I have an object loaded in the Application scope and want to use it in another object/component ,should I pass it in as a variable or should I call it directly from the Application scope. Assume that the object will always be loaded in memory. I vote for passing it in. It makes the component that will use it less couple to application scope and therefore more reusable. If several methods within the component are going to need access to various methods in the application.myCFC object, then it would make more sense to do what Rich says in step 2. Basically when the component that is dependent on app.myCFC is instantiated, it should get that instance in variables scope cfcomponent name=myDependentCFC cffunction name=init cfreturn this / /cffunction cffunction name=setAppCFC cfargument name=AppCFC / cfset variables.instance.AppCFC = arguments.AppCFC / /cffunction /cfcomponent cfset myDependentCFC = createObject('component','myDependentCFC').init() / cfset myDependentCFC.setAppCFC(application.AppCFC) / -- Matt Williams It's the question that drives us. ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;160198600;22374440;w Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:300582 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Re: CFC Best practices question
Also don't forget to var your variables. Why is it that when you ask a CFC question people assume that you aren't scoping your variables? On Wed, Mar 5, 2008 at 5:01 PM, Russ [EMAIL PROTECTED] wrote: Also don't forget to var your variables. Bad things happen when you don't var variables that are meant to stay private to the function and you cache your component. RUss -Original Message- From: Rich [mailto:[EMAIL PROTECTED] Sent: Wednesday, March 05, 2008 4:53 PM To: CF-Talk Subject: RE: CFC Best practices question If I have an object loaded in the Application scope and want to use it in another object/component ,should I pass it in as a variable or should I call it directly from the Application scope. Assume that the object will always be loaded in memory. TIA G I would advise against accessing the component directly. As a general rule, you should not have any CFC access a scope outside of itself. I would suggest one of the following two approaches: 1. Use a façade to the application scope By using a façade, only one component is tied directly to the application scope. 2. Injection Using either constructor or setter injection, pass the object in as a variable. HTH, Rich Kroll ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;160198600;22374440;w Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:300583 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Re: CFC Best practices question
I have seen it set in the init and set to the variables scope. and then called from individual functions. So if the passed object is local to *only one* function should I pass it to just that one function? Or if it used multiple times in the object I should store it as part of the object (in the init function) in the variables scope so it can be avalible to multiple functions. Does that sound right... make sense? Thanx G On Wed, Mar 5, 2008 at 5:07 PM, Matt Williams [EMAIL PROTECTED] wrote: On Wed, Mar 5, 2008 at 3:43 PM, Gerald Guido [EMAIL PROTECTED] wrote: If I have an object loaded in the Application scope and want to use it in another object/component ,should I pass it in as a variable or should I call it directly from the Application scope. Assume that the object will always be loaded in memory. I vote for passing it in. It makes the component that will use it less couple to application scope and therefore more reusable. If several methods within the component are going to need access to various methods in the application.myCFC object, then it would make more sense to do what Rich says in step 2. Basically when the component that is dependent on app.myCFC is instantiated, it should get that instance in variables scope cfcomponent name=myDependentCFC cffunction name=init cfreturn this / /cffunction cffunction name=setAppCFC cfargument name=AppCFC / cfset variables.instance.AppCFC = arguments.AppCFC / /cffunction /cfcomponent cfset myDependentCFC = createObject('component','myDependentCFC').init() / cfset myDependentCFC.setAppCFC(application.AppCFC) / -- Matt Williams It's the question that drives us. ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;160198600;22374440;w Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:300585 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Re: CFC Best practices question
I think you're starting to see where ColdSpring (or Lightwire) might come in handy :) On Wed, Mar 5, 2008 at 2:24 PM, Gerald Guido [EMAIL PROTECTED] wrote: I have seen it set in the init and set to the variables scope. and then called from individual functions. So if the passed object is local to *only one* function should I pass it to just that one function? Or if it used multiple times in the object I should store it as part of the object (in the init function) in the variables scope so it can be avalible to multiple functions. Does that sound right... make sense? Thanx G On Wed, Mar 5, 2008 at 5:07 PM, Matt Williams [EMAIL PROTECTED] wrote: On Wed, Mar 5, 2008 at 3:43 PM, Gerald Guido [EMAIL PROTECTED] wrote: If I have an object loaded in the Application scope and want to use it in another object/component ,should I pass it in as a variable or should I call it directly from the Application scope. Assume that the object will always be loaded in memory. I vote for passing it in. It makes the component that will use it less couple to application scope and therefore more reusable. If several methods within the component are going to need access to various methods in the application.myCFC object, then it would make more sense to do what Rich says in step 2. Basically when the component that is dependent on app.myCFC is instantiated, it should get that instance in variables scope cfcomponent name=myDependentCFC cffunction name=init cfreturn this / /cffunction cffunction name=setAppCFC cfargument name=AppCFC / cfset variables.instance.AppCFC = arguments.AppCFC / /cffunction /cfcomponent cfset myDependentCFC = createObject('component','myDependentCFC').init() / cfset myDependentCFC.setAppCFC(application.AppCFC) / -- Matt Williams It's the question that drives us. ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;160198600;22374440;w Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:300586 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
Re: CFC Best practices question
Yep... that light bulb just went off. thanx. On Wed, Mar 5, 2008 at 5:29 PM, Charlie Griefer [EMAIL PROTECTED] wrote: I think you're starting to see where ColdSpring (or Lightwire) might come in handy :) On Wed, Mar 5, 2008 at 2:24 PM, Gerald Guido [EMAIL PROTECTED] wrote: I have seen it set in the init and set to the variables scope. and then called from individual functions. So if the passed object is local to *only one* function should I pass it to just that one function? Or if it used multiple times in the object I should store it as part of the object (in the init function) in the variables scope so it can be avalible to multiple functions. Does that sound right... make sense? Thanx G On Wed, Mar 5, 2008 at 5:07 PM, Matt Williams [EMAIL PROTECTED] wrote: On Wed, Mar 5, 2008 at 3:43 PM, Gerald Guido [EMAIL PROTECTED] wrote: If I have an object loaded in the Application scope and want to use it in another object/component ,should I pass it in as a variable or should I call it directly from the Application scope. Assume that the object will always be loaded in memory. I vote for passing it in. It makes the component that will use it less couple to application scope and therefore more reusable. If several methods within the component are going to need access to various methods in the application.myCFC object, then it would make more sense to do what Rich says in step 2. Basically when the component that is dependent on app.myCFC is instantiated, it should get that instance in variables scope cfcomponent name=myDependentCFC cffunction name=init cfreturn this / /cffunction cffunction name=setAppCFC cfargument name=AppCFC / cfset variables.instance.AppCFC = arguments.AppCFC / /cffunction /cfcomponent cfset myDependentCFC = createObject('component','myDependentCFC').init() / cfset myDependentCFC.setAppCFC(application.AppCFC) / -- Matt Williams It's the question that drives us. ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;160198600;22374440;w Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:300587 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
Re: CFC Best practices question
I'll second this. When you use ColdSpring, you end up having it passed in as an init() parameter and then put it in the VARIABLES scope, so it's available to all methods inside your object. On Thu, Mar 6, 2008 at 7:29 AM, Charlie Griefer [EMAIL PROTECTED] wrote: I think you're starting to see where ColdSpring (or Lightwire) might come in handy :) On Wed, Mar 5, 2008 at 2:24 PM, Gerald Guido [EMAIL PROTECTED] wrote: I have seen it set in the init and set to the variables scope. and then called from individual functions. So if the passed object is local to *only one* function should I pass it to just that one function? Or if it used multiple times in the object I should store it as part of the object (in the init function) in the variables scope so it can be avalible to multiple functions. -- mxAjax / CFAjax docs and other useful articles: http://www.bifrost.com.au/blog/ ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;160198600;22374440;w Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:300588 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Re: CFC Best practices question
I think you're starting to see where ColdSpring (or Lightwire) might come in handy :) I second that - spend 30 mins getting a very basic ColdSpring setup running; you won't look back, it is a beautiful answer to this question. ColdSpring uses an XML file as a configuration for all your 'beans', here's a very rough example, reusing a component by passing it as an argument to another: bean id=datasource class=myApp.model.dao._datasource singleton=true constructor-arg name=namevalueMyDS/value/constructor-arg /bean bean id=SomeDao class=myApp.model.dao.someDao singleton=false constructor-arg name=datasource ref bean=datasource/ /constructor-arg /bean Then, with coldspring up and running you might do in your app: cfset someDaoInstance = coldSpring.GetBean(SomeDao) Hope that makes you curious. If you are looking for best design practice, the answer to your OP is to NEVER reference variables outside the scope of your component, pass it in as a variable as your instinct tells you ;) Dominic -- Blog it up: http://fusion.dominicwatson.co.uk ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;160198600;22374440;w Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:300589 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Re: CFC Best practices question
Thanx for the insight gentlemen. I am getting all wound up with the light bulbs going off at once. Prolly wont get much sleep tonight. :) On Wed, Mar 5, 2008 at 5:42 PM, Dominic Watson [EMAIL PROTECTED] wrote: I think you're starting to see where ColdSpring (or Lightwire) might come in handy :) I second that - spend 30 mins getting a very basic ColdSpring setup running; you won't look back, it is a beautiful answer to this question. ColdSpring uses an XML file as a configuration for all your 'beans', here's a very rough example, reusing a component by passing it as an argument to another: bean id=datasource class=myApp.model.dao._datasource singleton=true constructor-arg name=namevalueMyDS/value/constructor-arg /bean bean id=SomeDao class=myApp.model.dao.someDao singleton=false constructor-arg name=datasource ref bean=datasource/ /constructor-arg /bean Then, with coldspring up and running you might do in your app: cfset someDaoInstance = coldSpring.GetBean(SomeDao) Hope that makes you curious. If you are looking for best design practice, the answer to your OP is to NEVER reference variables outside the scope of your component, pass it in as a variable as your instinct tells you ;) Dominic -- Blog it up: http://fusion.dominicwatson.co.uk ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;160198600;22374440;w Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:300594 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
Re: CFC Best practices question
Thanx for the insight gentlemen. I am getting all wound up with the light bulbs going off at once. Lol best bit of being a codee geek init ;) Dominic -- Blog it up: http://fusion.dominicwatson.co.uk ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;160198600;22374440;w Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:300595 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
Re: CFC Best practices question
Lol best bit of being a codee geek init ;) yep... nothing quite like the high from intellectual discovery. It is hard to explain to non-geeks/science nerds. GF: Oh, what are you all excited about? Me: I just figured out dependency injection. GF: Huh? Me: Nothing. -- As an adolescent I aspired to lasting fame, I craved factual certainty, and I thirsted for a meaningful vision of human life - so I became a scientist. This is like becoming an archbishop so you can meet girls. - M. Cartmill ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;160198600;22374440;w Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:300597 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
Re: CFC Best practices question
Lmao, my gf would pretend to listen for a 10 minutes or more as I explained things to her. At the end of the lecture she'd say that's nice dear, what's for tea? or some such. On 05/03/2008, Gerald Guido [EMAIL PROTECTED] wrote: Lol best bit of being a codee geek init ;) yep... nothing quite like the high from intellectual discovery. It is hard to explain to non-geeks/science nerds. GF: Oh, what are you all excited about? Me: I just figured out dependency injection. GF: Huh? Me: Nothing. -- As an adolescent I aspired to lasting fame, I craved factual certainty, and I thirsted for a meaningful vision of human life - so I became a scientist. This is like becoming an archbishop so you can meet girls. - M. Cartmill ~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;160198600;22374440;w Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:300598 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
cfc best practices
Can somebody give me some cfc best practices? I'm new to them and I want to get started on the right foot. One thing that is really bothering me is how to organize my CFCs and where to put them. I've searched the web but I'm still not satisfied with every things I've found. -- Phillip B. ~| Find out how CFTicket can increase your company's customer support efficiency by 100% http://www.houseoffusion.com/banners/view.cfm?bannerid=49 Message: http://www.houseoffusion.com/lists.cfm/link=i:4:197828 Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4 Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4 Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4 Donations Support: http://www.houseoffusion.com/tiny.cfm/54
RE: cfc best practices
One common method is the domain name methodology. So, for example, if you get Raymond's Blog CFC, it will typically live under drive:\site\org\camden And be called like so: CreateObject(component,org.camden.Blog) or something like that. However, frameworks may impose their own methodology, which is no worse, and this could be adapted as well. drive:\site\model\org\camden for MachII And would be called like so: CreateObject(component,model.org.camden.Blog) - Calvin -Original Message- From: Phill B [mailto:[EMAIL PROTECTED] Sent: Tuesday, March 08, 2005 9:59 AM To: CF-Talk Subject: cfc best practices Can somebody give me some cfc best practices? I'm new to them and I want to get started on the right foot. One thing that is really bothering me is how to organize my CFCs and where to put them. I've searched the web but I'm still not satisfied with every things I've found. -- Phillip B. ~| Logware (www.logware.us): a new and convenient web-based time tracking application. Start tracking and documenting hours spent on a project or with a client with Logware today. Try it for free with a 15 day trial account. http://www.houseoffusion.com/banners/view.cfm?bannerid=67 Message: http://www.houseoffusion.com/lists.cfm/link=i:4:197830 Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4 Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4 Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4 Donations Support: http://www.houseoffusion.com/tiny.cfm/54
Re: cfc best practices
Check out the Macromedia CF coding guidelines and Mach-II development guide. http://livedocs.macromedia.com/wtg/public/ On Tue, 8 Mar 2005 10:09:04 -0500, Calvin Ward [EMAIL PROTECTED] wrote: One common method is the domain name methodology. So, for example, if you get Raymond's Blog CFC, it will typically live under drive:\site\org\camden And be called like so: CreateObject(component,org.camden.Blog) or something like that. However, frameworks may impose their own methodology, which is no worse, and this could be adapted as well. drive:\site\model\org\camden for MachII And would be called like so: CreateObject(component,model.org.camden.Blog) - Calvin -Original Message- From: Phill B [mailto:[EMAIL PROTECTED] Sent: Tuesday, March 08, 2005 9:59 AM To: CF-Talk Subject: cfc best practices Can somebody give me some cfc best practices? I'm new to them and I want to get started on the right foot. One thing that is really bothering me is how to organize my CFCs and where to put them. I've searched the web but I'm still not satisfied with every things I've found. -- Phillip B. ~| Logware (www.logware.us): a new and convenient web-based time tracking application. Start tracking and documenting hours spent on a project or with a client with Logware today. Try it for free with a 15 day trial account. http://www.houseoffusion.com/banners/view.cfm?bannerid=67 Message: http://www.houseoffusion.com/lists.cfm/link=i:4:197832 Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4 Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4 Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4 Donations Support: http://www.houseoffusion.com/tiny.cfm/54
Re: cfc best practices
Thanks you guys. I have several sites that call to the same CFCs so I just mapped them for ease of use. So what is the best way to handle errors in a CFC? On Tue, 8 Mar 2005 10:22:53 -0500, Brian Kotek [EMAIL PROTECTED] wrote: Check out the Macromedia CF coding guidelines and Mach-II development guide. http://livedocs.macromedia.com/wtg/public/ On Tue, 8 Mar 2005 10:09:04 -0500, Calvin Ward [EMAIL PROTECTED] wrote: One common method is the domain name methodology. So, for example, if you get Raymond's Blog CFC, it will typically live under drive:\site\org\camden And be called like so: CreateObject(component,org.camden.Blog) or something like that. However, frameworks may impose their own methodology, which is no worse, and this could be adapted as well. drive:\site\model\org\camden for MachII And would be called like so: CreateObject(component,model.org.camden.Blog) - Calvin ~| Logware (www.logware.us): a new and convenient web-based time tracking application. Start tracking and documenting hours spent on a project or with a client with Logware today. Try it for free with a 15 day trial account. http://www.houseoffusion.com/banners/view.cfm?bannerid=67 Message: http://www.houseoffusion.com/lists.cfm/link=i:4:197877 Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4 Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4 Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4 Donations Support: http://www.houseoffusion.com/tiny.cfm/54
RE: cfc best practices
So what is the best way to handle errors in a CFC? Throw it? That's what I've been doing... Then document what you will throw so that any calling code can catch any errors and decide what to do. Hopefully I'm on track with that one :) -- dc ~| Logware (www.logware.us): a new and convenient web-based time tracking application. Start tracking and documenting hours spent on a project or with a client with Logware today. Try it for free with a 15 day trial account. http://www.houseoffusion.com/banners/view.cfm?bannerid=67 Message: http://www.houseoffusion.com/lists.cfm/link=i:4:197885 Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4 Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4 Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4 Donations Support: http://www.houseoffusion.com/tiny.cfm/54
Re: cfc best practices
Thats what I'm trying to do but I can't get things to work the way I want them to. Lets say something gets by all my validation and a bad variable makes it to a query in a CFC method. Now I have an error. So I put a try catch around the query to control the errors in the CFC. Since I need the results from the CFC query, I'll get an error on the page calling it because the page didn't receive a query. I got a thrown error message instead. Now I need to check to see if I'm getting an error or a query and use a few more try catches. There has to be a better way of handling all this. I downloaded some apps to see how the best CFers were taking care of these sort of things and not one of them had a try catch in their code. :-| Perhaps I'm being a little paranoid with the error handling. On Tue, 8 Mar 2005 20:33:33 -, COLLIE David [EMAIL PROTECTED] wrote: So what is the best way to handle errors in a CFC? Throw it? That's what I've been doing... Then document what you will throw so that any calling code can catch any errors and decide what to do. Hopefully I'm on track with that one :) -- dc ~| Logware (www.logware.us): a new and convenient web-based time tracking application. Start tracking and documenting hours spent on a project or with a client with Logware today. Try it for free with a 15 day trial account. http://www.houseoffusion.com/banners/view.cfm?bannerid=67 Message: http://www.houseoffusion.com/lists.cfm/link=i:4:197901 Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4 Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4 Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4 Donations Support: http://www.houseoffusion.com/tiny.cfm/54
RE: cfc best practices
Lets say something gets by all my validation and a bad variable makes it to a query in a CFC method. Now I have an error. So I put a try catch around the query to control the errors in the CFC. Since I need the results from the CFC query, I'll get an error on the page calling it because the page didn't receive a query. I got a thrown error message instead. Now I need to check to see if I'm getting an error or a query and use a few more try catches. Just an opinion this... But that kind of error I don't want to catch... I'd rather throw it or rethrow it all the way up to my global cferror type=exception exception=any / handler and get it to email me the details rather than display a nice message to the user saying the database insert failed (obv they would still get a nice display tho). Would that not be an application error at that point and not a user error? That's the way I am doing it the now. There are exceptions to this rule I imagine but none that I come across in my code. I just figure if it got past my (paranoid) validation, then I want to know about the error cos there is a hole in my code! Obviously everything is protected against injection attacks and the likes with cfqueryparam and variable scrubbing... Not sure if this is best practise but working for me at the moment. Always open to suggestions tho :) Cheers -- dc ~| Find out how CFTicket can increase your company's customer support efficiency by 100% http://www.houseoffusion.com/banners/view.cfm?bannerid=49 Message: http://www.houseoffusion.com/lists.cfm/link=i:4:197906 Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4 Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4 Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4 Donations Support: http://www.houseoffusion.com/tiny.cfm/54
CFUN-04 interviews 3 - CFC Best Practices, Tips and Ticks with Ray Camden
In the third part of our CFUN-04 interview series, Michael Smith interviews Raymond Camden, co-founder of the CFLib.org amd CFCzone.org sites, who will be presenting on CFCs at CFUN-04. Michael Smith: Ray, I am intrigued about your CFC Best Practices, Tips and Tricks talk at CFUN-04. Why should a programmer be interested in CFCs? Ray Camden: ColdFusion has always provided methods to help encapsulate code. However, CFCs (ColdFusion Components) are an extremely powerful new way of doing so. Being so powerful - they are a bit complex - and therefore not always as easy to use. I want my session to focus on things that the docs do not cover extremely well. I also want to show some interesting examples of CFCs in action. Basically, I assume you know the syntax but need help starting to use CFCs in real projects. MS: I always like to learn about things not covered by documentation! When you mention encapsulating code what exactly do you mean? And what are others ways than CFCs to do that? RC: ... [the rest of the interview is at http://www.cfconf.org/CFUN-04/news.cfm and in Fusion Authority, the House of Fusion Technical Magazine (www.fusionauthority.com). CFUN-04 is Saturday 6/26/04 - Sunday 6/27/04 in the Washington DC area. It costs $199 until 3/31/04 then $269. For more information on CFUN see http://www.cfconf.org/cfun-04/. --- This year's conference has 33 nationally known speakers including Charlie Arehart, Steve Drucker, Raymond Camden, Hal Helms, Michael Smith, Michael Dinowitz, Simon Horwith and Shlomy Gantz. CFUN-04 Washington DC area 6/26 - 6/27/04: * Learn CF MX, Flash and more! * Network with your peers and top national speakers * Have fun exploring what is new from Macromedia Tracks: * Advanced Topics - for gurus, XML, CFCs, SQL * MX Integration - Flash, Java, Flex, .Net, Webservices * Empowered Programming - OO, Fusebox, PM, Testing, Debug * CF Bootcamp - for beginners in CF and Flash * Accessibility - making sites that disabled people can use, section 508 Pricing schedule - register today to save! * Just $199 Early Bird Price from 1/1/04 - 3/31/04 * Ok$269 Regular Price 4/1/04 - 6/15/04 * Opps $299 Late Registration 6/15/03 - 6/25/03 * Onsite $350 Register today http://www.cfconf.com/CFUN-04/ -- -- Vote for TeraTech in CFDJ awards http://www.teratech.com/vote.cfm Michael Smith, TeraTech, Inc 405 E Gude Dr Ste 207, Rockville MD 20850 CF , VB, SQL, Math custom programming Voice: +1-301-424-3903 x110, 800-447-9120Fax:301-762-8185 Web: http://www.teratech.com/sig/ Email:mailto:[EMAIL PROTECTED] ICQ: 66057682 [Todays Threads] [This Message] [Subscription] [Fast Unsubscribe] [User Settings]