Aug 21 2019

ColdFusion – Creating Copy of a Structure Using CFSet, Duplicate and Structcopy

Using CFSet

Creating a copy of a Structure using CFSet will result in a new variable having a reference to the original Structure;
changes will affect the original Structure.

******************************************************

Using Duplicate

Creating a copy of a Structure using Duplicate will result in a new variable containing no reference to the original Structure but rather a snapshot of its current contents.
changes will NOT affect the original Structure.

******************************************************

Using Strcutcopy

Strcutcopy is where most people get confused.
We can say Structcopy is between CFSet and Duplicate.
When we use Structcopy, a new structure will be created; however, references to nested structures, objects, and query variables will be maintained from the original Structure.
changes will affect the original Structure.

******************************************************

Source: https://www.experts-exchange.com/articles/8971/Differences-in-Creating-Copy-of-a-Structure-Using-CFSet-Duplicate-and-Structcopy-in-ColdFusion.html


Feb 27 2019

ColdFusion – clean string from non ASCII chars

<cfset str=reReplace(str, "[^\x20-\x7E]", "", "ALL")>

source: http://shemy-coldfusion.blogspot.com/2013/04/remove-non-ascii-characters-in.html


Jan 18 2019

ColdFusion – get first or last x elements from array


<cfset FinYears = arrayNew(1)>
<cfset arrayAppend(FinYears ,2010)>
<cfset arrayAppend(FinYears ,2011)>
<cfset arrayAppend(FinYears ,2012)>
<cfset arrayAppend(FinYears ,2013)>
<cfset arrayAppend(FinYears ,2014)>
<cfset arrayAppend(FinYears ,2015)>
<cfset arrayAppend(FinYears ,2016)>
<cfset arrayAppend(FinYears ,2017)>

<cfset x = arraySlice(FinYears, 1, 3)>
<cfset y = arraySlice(FinYears, 2, 3)>
<cfset z = arraySlice(FinYears, -3, 3)>

x = 2010,2011,2012
y = 2011,2012,2013
z = 2015,2016,2017


Jan 17 2019

ColdFusion – QueryOfQueryes and union select from dynamic table names

	<cffunction name="test" access="remote">

			<cfset var Local = structNew()>

			<cfset struktura = structNew()>

			<cfset x = 1>
			<cfset struktura['q_#x#'] = queryNew("name")>
			<cfset queryAddRow(struktura['q_#x#'], 1)>
			<cfset querySetCell(struktura['q_#x#'], "name", 'pero')>
			<cfset queryAddRow(struktura['q_#x#'], 1)>
			<cfset querySetCell(struktura['q_#x#'], "name", 'mirko')>

			<cfset x = 2>
			<cfset struktura['q_#x#']  = queryNew("name")>
			<cfset queryAddRow(struktura['q_#x#'] , 1)>
			<cfset querySetCell(struktura['q_#x#'], "name", 'slavko')>
			<cfset queryAddRow(struktura['q_#x#'], 1)>
			<cfset querySetCell(struktura['q_#x#'], "name", 'mirko')>

			<cfquery name="q_data" dbtype="query">

			<cfset count = 0>

				<cfloop collection="#struktura#" item="key" >

					<cfset count = count+1>

					<cfif count gt 1 >

					UNION all

					</cfif>

					SELECT * FROM struktura.#key#

				</cfloop>

			</cfquery>

			<cfdump var="#q_data#">

		</cffunction>

Nov 20 2018

ColdFusion – Query get row

Problem: selektirati samo jedan red sa svim kolonama iz query-a.

Rješenje:

<cfset myRow = QueryGetRow(queryName, rowNumber)>

 

Rješenje radi na Cf11 +


Oct 17 2018

ColdFusion – razlike i podudarnosti u listama

Problem: kako naći elemente koji su u listama zajednički, a kako one koji su u njima različiti

Rješenje:


<cffunction name="listCommon" output="false" returnType="string">
 <cfargument name="list1" type="string" required="true" />
 <cfargument name="list2" type="string" required="true" />

  <cfset var list1Array = ListToArray(arguments.List1) />
  <cfset var list2Array = ListToArray(arguments.List2) />

  <cfset list1Array.retainAll(list2Array) />

 <cfreturn ArrayToList(list1Array) />

</cffunction>

 <cffunction name="listCompare" output="false" returnType="string">
  <cfargument name="list1" type="string" required="true" />
  <cfargument name="list2" type="string" required="true" />

   <cfset var list1Array = ListToArray(arguments.List1) />
   <cfset var list2Array = ListToArray(arguments.List2) />

   <cfset list1Array.removeAll(list2Array) />

  <cfreturn ArrayToList(list1Array) />

 </cffunction>

 <cfset list1 = "1,2,3,4,5">

 <cfset list2 = "1,4,5,6,7">

 <!--- vraća brojeve elemente liste koji su u obje liste --->
 <cfset zajednicko = listCommon(list1,list2)>

 <!--- miče zajedničko i ostavlja samo ono što je u listi 1 --->
 <cfset samo_u_listi_1= listCommon(list1,zajednicko)>

 <!--- miče zajedničko i ostavlja samo ono što je u listi 2 --->
 <cfset samo_u_listi_2= listCommon(list2,zajednicko)>

http://www.isummation.com/blog/list-common-and-list-compare-in-coldfusion/


Oct 11 2018

ColdFusion – Početak i kraj ovog, prošlog i sljedećeg mjeseca

Problem: Kako saznati početni i završni datum ovog, prošlog i sljedećeg mjeseca

Rješenje:


<cfset today = now()>

<cfset firstOfThisMonth = createDate(year(today), month(today), 1)>

<cfset lastOfThisMonth = dateAdd("d", -1, dateAdd("m", 1, firstOfThisMonth))>

<cfset firstOfNextMonth = dateAdd("m", 1, firstOfThisMonth)>

<cfset lastOfNextMonth = dateAdd("d", -1, dateAdd("m", 2, firstOfThisMonth))>

<cfset firstOfPreviousMonth = dateAdd("m", -1, firstOfThisMonth)>

<cfset lastOfPreviousMonth = dateAdd("d", -1, firstOfThisMonth)>

Sep 7 2018

ColdFusion – forsiranje teksta kao formata kod inserta broja koristeći spreadsheetSetCellValue

Problem: ubaciti string “012345″ u čeliju koristeći spreadsheetSetCellValue. Dobiveni excel dokument sadrži vrijednost 12345, dakle izgubio je nulu.

Rješenje: ubaciti podatak, formatirati polje i ubaciti podatak opet.


<cfset var sprSht = spreadsheetNew("mojFile", true)>

<cfset var format_values = structNew()>

<!--- format as text --->
<cfset format_values.dataformat = "@">

<!--- insert value --->
<cfset spreadsheetSetCellValue(sprSht, '012345', 1, 1)>

<!--- format cell --->
<cfset spreadsheetFormatCell(sprSht, format_values, 1, 1)>

<!--- insert value again--->
<cfset spreadsheetSetCellValue(sprSht, '012345', 1, 1)>

Jun 8 2018

ColdFusion – FTP access using JAVA


<cfset var Local = structNew()>

<!--- create instance of edtftpj.jar custom FTP --->
<cfset Local.ftp = createObject( "java", "com.enterprisedt.net.ftp.FileTransferClient" ) />

<cfset Local.ftp.setRemoteHost( "test.com" ) />
<cfset Local.ftp.setUserName( "mirko" ) />
<cfset Local.ftp.setPassword( "*************" ) />
<cfset Local.ftp.connect() />

<cfset Local.ftp.changeDirectory('/mojfolder') />
<cfset Local.aFiles = ftp.directoryList(".") />
<!--- Proceed only if folder has contents --->
<cfif arrayLen(Local.aFiles)>
 <!--- Loop through ftp directory contents (files and folders) --->
<cfloop from="1" to="#arrayLen(Local.aFiles)#" step="1" index="Local.index">
 <!--- Download only files and not folders --->
<cfif Local.aFiles[Local.index].isFile()>
 <!--- Set the local file name and download to it --->
<cfset Local.cFileName = aFiles[Local.index].getName() />
<cfset Local.cLocalFile = Local.cLocalFolder & Local.cFileName />
<cfset Local.ftp.downloadFile( Local.cLocalFile, Local.cFileName ) />
 </cfif>
</cfloop>
</cfif>

<!--- Disconnect --->
<cfset Local.ftp.disconnect() />

https://stackoverflow.com/questions/19688365/coldfusion-cfftp-action-listdir-returns-nothing


Jun 7 2018

ColdFusion – ListQualify

ListQualify “oblači” elemente liste u neki znak ispred i iza elementa

Uvo dodaje jednostruki navodnik ispred i iza svakog elementa liste:

<cfset temp = ListQualify(myList,"'",",","CHAR")>

https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-l/listqualify.html