TEMPLATE ONE:
<!--- Get many rows of data --->
<cfquery name="qryCustomer" datasource="aquatrac">
Select *
From tblCustomer
</cfquery>
<!--- Start a form out side a loop --->
<form action="rma.cfm" method="post">
<!--- Set a hidden variable with the amount of records shown --->
<cfoutput><input type="Hidden" name="RecordCount" value="#qryCustomer.RecordCount#"></cfoutput>
<!--- Start output INSIDE form tags. Lets say we have three form fields: ID, Desc, Status.
We name the form fields based off of what row they are in. If we have three rows, our fields would be:
id1, Desc1, Status1
id2, Desc2, Status2
id3, Desc3, Status3
--->
<cfoutput query="qryCustomer">
<input type="Hidden" name="id#CurrentRow#" value="#id#">
<input type="text" name="Desc#CurrentRow#" value="#Desc#">
<input type="text" name="Status#CurrentRow#" value="#Status#">
</cfoutput>
<!--- Have a single submit button outside the loop --->
<input type="Submit" value="Save All">
</form>
TEMPLATE TWO (Insert or Update Records):
<!--- Run loop: one for every row outputed earlier --->
<cfloop index="i" from="1" to="#form.RecordCount#">
<!---
Now all we need to do is create variables within the loop that is composed of a prefix ("form.formfield"

and a suffix (i).
It is important to note that the prefix is a static string value (Notice in the code it is wrapped in quotes. This means that the
variable is assigned a literal value of form.whatever. The suffix however is a dynamic value. The value will be equal to the loop number.
So the first time that this loop is fired, the locID variable will be given the value of form.ID1. The possible confusing part at this point is
that locID is simply equal to the string form.ID1. But that string value happens to be the name of the form field that we are trying to evaluate.
So all we have to do at this point is use the evaluate function to give us the value of the form field form.ID1.
The main 'trick' in this script is assigning a literal string value that is the same as the form field that you want to evaluate.
--->
<cfset locID = "form.ID" & i>
<cfset locDesc = "form.Desc" & i>
<cfset locStatus = "form.Status" & i>
<!--- Note: All dynamic form variables are here evaluated. --->
<cfquery name="qryAddList#i#" datasource="aquatrac">
INSERT INTO tblList
(ID, Desc, Status)
VALUES
('#Evaluate(locID)#', '#Evaluate(locDesc)#', '#Evaluate(locStatus)#')
</cfquery>
<!--- Loop to next row --->
</cfloop>