September 27, 2009 - 1:17 PM (GMT)
Category: Coldfusion,tech notes
Author: Charles
Here's another item that I am note sure I knew before, but now I do. When you are running a query of queries and trying to do a sort on it, the one thing you have to remember is that the field names are case sensitive.
So what you need to do is cfdump the query you are using in the query of queries and copy the field names that show up exactly as shown. Then it should run just fine.
July 25, 2009 - 3:22 AM (GMT)
Category: Coldfusion,tech notes
Author: Charles
I was recently adding some features to my CMS system and came accross a feature of cfqueryparam that I had not used in a while but is really nice when you need it. When doing an insert or update query for an integer field you can specify the Null attribute of the cfqueryparam tag.
Here is an example:
<cfqueryparam cfsqltype="cf_sql_integer" value="#form.duration#" NULL="#NOT len(form.duration)#">
So what this is doing is testing if there is any value in the form.duration field, and if there is nothing there, insert a NULL. If there is something there is just inserts the field value normally.
June 27, 2009 - 1:22 PM (GMT)
Category: Coldfusion,tech notes
Author: Charles
I am currently redoing the help files for coreforms. I have to totally redo them because I have added a bunch of new features, and I don't think the current version is that useful. You kind of know that your documentation needs changing when the author of whatever you are trying to document has a hard time figuring them out.
So the solution I am working on needs a database so I can organize the documentation better. The problem is that I do not want to require that people who want to view the documentation need to have a database connection and load a bunch of tables onto their server. So I am trying some static ways to create coldfusion datasources.
The first way is to manually build out the query using coldfusion's queryNew, queryAddRow and querySetCell tags.
<cfset get_format = queryNew("name,description,status,attributes")>
<cfset queryAddRow(get_format)>
<cfset querySetCell(get_format,"name","text")>
<cfset querySetCell(get_format,"description","general text field, same features as an html text field")>
<cfset querySetCell(get_format,"status","A")>
<cfset querySetCell(get_format,"attributes","3")>
<cfset queryAddRow(get_format)>
<cfset querySetCell(get_format,"name","textarea")>
<cfset querySetCell(get_format,"description","general textarea field, same features as an html text field")>
<cfset querySetCell(get_format,"status","A")>
<cfset querySetCell(get_format,"attributes","4")>
This is ok for a small amount of rows, but I have another query that will hold all the attributes. For this one I am going to use the basic concepts as the one above but build out a comma delimeted file first then loop through the data to create the query.
<cfsavecontent variable="theData">
1,fieldname,Yes,put the name of the query field,A,A
2,required,No,enter a Y if you need the field filled out,A,A
3,max,No,enter the total number of characters for a text field or a maximum date for a date field,A,S
4,cols,No,enter the number of columns for a textarea field just like the html attribute,A,S
</cfsavecontent>
<cfset theFields = "id,attributename,required,description,status,scope">
<cfset get_attributes = queryNew("#theFields#")>
<cfloop list="#theData#" delimiters="#chr(10)##chr(13)#" index="ii">
<cfset queryAddRow(get_attributes)>
<cfset loopcounter = 1>
<cfloop list="#thefields#" index="jj">
<cfset querySetCell(get_attributes,"#jj#","#listgetat(ii,#loopcounter#)#")>
<cfset loopcounter = loopcounter + 1>
</cfloop>
</cfloop>
Then all I have to do to get the query onto my page is to cfInclude the files that I put the above code on.