Looping over a structure
How do I loop over this structure to populate it with a Query
Recordset?
<cfset myStruct =
objImage.getSize("images/products/largeImages/#Recordset1.elink#")>
I really appreciate your help.
I would like to populate the structure with the image file
names that are coming from the query. The structure is built from a
java object. Here is the function to create it.
<cfcomponent>
<cffunction name="getSize" returntype="struct"
access="public" output="No">
<cfargument name="Image" required="Yes" type="string">
<cfset myImage = createObject("java",
"javax.swing.ImageIcon")>
<cfset myImage.init(expandpath(arguments.Image))>
<cfset myStruct = StructNew()>
<cfset myStruct.width = myImage.getIconWidth()>
<cfset myStruct.height = myImage.getIconHeight()>
<cfreturn myStruct>
</cffunction>
</cfcomponent>
<cfobject component="imageSize" name="objImage">
<cfset myStruct =
objImage.getSize("/images/someimage.jpg")>
<cfoutput>
width: #myStruct.width#
height: #myStruct.height#
</cfoutput>
Right now the structure only gives me the first row of the
query. I have tried using the cfquery loop to populate the
structure with now results. I suspect I am using the wrong
syntac.
Similar Messages
-
Looping over a structure of arrays
Hi Guys, I am trying to loop over a structure of simple
arrays. The structure's second column contains a 1 dimentional
array.
I can't seem to get the proper syntax for my loop.I want to be able to dynamically loop over my query and
decrypt it as I pass it into my structure. I have figured the code
out to loop over the query and pass it to the structure. My problem
now is whn I go to decrypt it I get this Error.
There has been an error while trying to encrypt or decrypt
your input string: Input length (with padding) not multiple of 16
bytes.
How can I fix this?
Here is my code could it be because my varchar columns were
not long enough. Here is my code. -
Hello,
Can someone please demonstrate how I would use a cfLoop to
loop over and output the contents of this fictious nested
structure?
Thank You!mletson wrote:
> I figured it out. If anyone has a better solution,
please let me know.
>
> <cfloop from="1" to="#structCount(student)#"
index="x">
>
> <cfset variables.studentID = "student00" & x>
>
> <tr>
>
<td><cfoutput>#student[studentID]["firstName"]#</cfoutput></td>
>
<td><cfoutput>#student[studentID]["lastName"]#</cfoutput></td>
>
<td><cfoutput>#student[studentID]["phone"]#</cfoutput></td>
> </tr>
>
> </cfloop>
>
A slightly simpler version using the structure form of the
<cfloop...>
tag. It also demonstrates both array notation, that you used,
as well
as dot notation. Finally it puts a single <cfoutput...>
block around
the entire loop. This can provide a small but accumulative
performance
improvement.
<cfoutput>
<cfloop collection="#student#" item="aStudent">
<tr>
<td>#aStudent["firstName"]# OR
#aStudent.firstName#</td>
<td>#aStudent["lastName"]# OR
#aStudent.lastName#</td>
<td>#aStudent["phone"]# OR #aStudent.phone#</td>
</tr>
</cfloop>
</cfoutput> -
Hey Guys,
I have a component that returns a structure. The structure is
called ContactQuery. ContactQuery has to elements, one called
Results, and one called Success. Results contains the data I want
to loop over. If you try looping over the ContactQuery by using
CFLoop and specify the ContactQuery as the collection, of course it
only loops twice (once for Results, once for Success). How can I
loop over the Results structure withing ContactQuery? You can see
the dump of the structure at:
http://www.digitalswordsmen.com/cfschedule/admin/Create_Tokens_Table.cfm
Attached is the code I have. I am just unsure of the syntax
for looping over the Results section of the structure.
Thank you.Nope. I am dumb and didn't really think about it. The fact
that it is a query nested in a structure threw me off. The code
that works was
<cfloop query="ContactQuery.Results">
<tr>
<td></td><td>#firstname#</td><td>#lastname#</td><td>#email#</td><td>#randrange(10000,9999 9)#</td>
</tr>
</cfloop>
Thanks for the help, sorry about that dumb question. -
Problem with Message-Mapping: Loop over Elements possible?
Hi all,
I want do create a Message-Mapping for an IDoc-to-File Scenario. In the Source Structure there are some Elements which can appear more than once (1..unbounded). I need a mechanism which loops over these elements and search for specified values. From the Element which contains an element with this specified value the mapping should write a value in the target structure.
Here a simple example (source structure) for better understanding:
<root>
<invoice>
<number> 10 </number>
<sum> 200.00 </sum>
</invoice>
<invoice>
<number> 20 </number>
<sum> 150.00 </sum>
</invoice>
<invoice>
<number> 30 </number>
<sum> 120.00 </sum>
</invoice>
</root>
Now the duty of the Mapping should be to search in the elements <invoice> for the number 30. And then the sum of the invoice with the number 30 should be written in a field of the target structure.
I tried it out with a constant togehter with an equalsS-function and an ifWithoutElse-function, but it is working only then, if the invoice with the number 30 has the first position in the root context.
Can anybody help me? Thanks
With kind regards
ChristopherHi,
Write a UDF to sum the required values and map to target node.
See while writing the UDF select the type as queue.
number -- removecontext-UDF targetnode
sum----removecontext--/
number abd sum or the two inputs
in UDF
int nsum = 0;
for(int i;i < number.length;i++){
if number(i).equals("30") then
nsum = nsum + valueOf(sum(i));
result.addValue(nsum); // convert the nsum into string
Regsrds
Chilla -
Message-Mapping: nested Loops over Elements
Hi Experts,
I have problems with my Message-Mapping in the IR. I have a source and a target structure. In the following I will give you easy examples of these structures:
<u>source structure:</u>
<E1EDP01>
<E1EDP19>
<QUALF> ... </QUALF>
<IDTNR> ... </IDTNR>
</E1EDP19>
<E1EDP19>
<QUALF> ... </QUALF>
<IDTNR> ... </IDTNR>
</E1EDP19>
</E1EDP01>
<E1EDP01>
<E1EDP19>
<QUALF> ... </QUALF>
<IDTNR> ... </IDTNR>
</E1EDP19>
<E1EDP19>
<QUALF> ... </QUALF>
<IDTNR> ... </IDTNR>
</E1EDP19>
</E1EDP01>
<u>target structure:</u>
<LineItem>
<IDTNR></IDTNR>
</LineItem>
<LineItem>
<IDTNR></IDTNR>
</LineItem>
That means:
For every <E1EDP01> in the source structure I create one <LineItem> in the target structure. One E1EDP01-Element can contain more than one E1EDP19-Elements. I have to loop over these E1EDP19-Elements, because I have to locate the Element <QUALF> with a given (fixed) value. The Mapping should put the value from the Element <IDTNR> from the source structure - where the QUALF-Element has this given value - in the IDTNR-Element of the target structure.
I tried it with a UDF, but only the first <IDTNR> in the target structure got filled.
Thanks for your help
ChristopherThank you,
but how I can set the Elements IDTNR and QUALF to the context E1EDP01?
In the splitByValue-Function do I need "each value"?
best regards
Christopher -
How to stop a while loop of event structure from a main vi
Hello;
sorry for my english
I have to stop a subvi from my main vi, the subvi contains a while loop and an event structure so I need to stop this loop while directly from my main vi I have tried global variable but it did not work
any help please or example !!!
Solved!
Go to Solution.
Attachments:
stop a while loop and event structure from main vi.png 16 KBIYED wrote:
Hello;
sorry for my english
I have to stop a subvi from my main vi, the subvi contains a while loop and an event structure so I need to stop this loop while directly from my main vi I have tried global variable but it did not work
any help please or example !!!
If this is an example of how your code looks, I'd clean it up before the developer who has to work on it next hits you over the head with his LabVIEW Style Book.
Bill
(Mid-Level minion.)
My support system ensures that I don't look totally incompetent.
Proud to say that I've progressed beyond knowing just enough to be dangerous. I now know enough to know that I have no clue about anything at all. -
Looping over fields from internal table
In a FM I have to check records of two ITABs against each other. Most fields can be checked 1:1 but some must be checked according to some business logic.
I first want to check field-by-field and then I want to deal with exceptions.
Question: How can I loop over fields in an ITAB in such a manner that I can compare fields?Hi, you can loop thru the columns(fields) of an internal table like so.
field-symbols: <fs>.
loop at itab.
do.
* Here you can use the field name instead of SY-INDEX
assign component sy-index of structure itab to <fs>.
if sy-subrc <>.
exit.
endif.
* Now that you have access to the field via field symbol, you can compare
* this value.
Write:/ <fs>.
enddo.
endloop.
Regards,
Rich Heilman -
I've got a form. The form asks the visitor their address
(first name, last name, street address, apartment number, city,
state, and zip code... each a separate text field). This form is
repeated 10 times on the page, allowing the visitor to enter
multiple addresses. I've given each form field a unique name by
just appending "_1" or "_2" after it. For example, my fields are
named...
FIRST FORM BLOCK
first_name_1
last_name_1
SECOND FORM BLOCK
first_name_2
last_name_2
Each form block (address) will be inserted into a table in my
database as a new row. Is there a quick and easy way to loop over
the insert 10 times, rather than have 10 separate INSERT statements
in my code? A CFLOOP would work just fine if not for dynamic form
field names, but I would have to take into account the "_X". I want
to say I've done this before; I'm just overthinking.<cfloop from="1" to="10" index="i">
<cfquery ...>
INSERT INTO ...
(aCol,bCol,cCol...)
<!--- The important part, accessing the form structure
with array
notation --->
#form['first_Name_' & i]#,
#form['last_Name_' & i]#
</cfquery>
</cfloop>
The array notation for a complex variables is a very powerful
concept.
Many advance techniques can be used with it. -
Hello. I am having an issue with looping over cfdirectory.
What I am trying to do here is grab the size of the files
associated with the db. So where #current.Dir.Name# = #DB Column#
update size etc.... What's happening is it is displaying the same
id about 90 something times...Nice I know. Can anyone help?
<cfloop query="qLoadFile">
<cfoutput>
<cfdirectory
directory="/test1/test2/test3/0/#qLoadFile.owner_id#" action="list"
name="currentDir">
#qLoadFile.owner_id# <!--- This does display my ids
correctly if I end the loop here but does not display anything in
my table if I end the loop here and reopen it--->
</cfoutput>
<table border="1" bordercolor="#000000" >
<tr>
<td>File Name</td>
<td>File Size</td>
<td>Directory Location</td>
<td>File Type</td>
</tr>
<cfloop query="currentDir">
<tr>
<cfoutput>
<form name="updateSize" action="
http://myURL.com/test2.cfm"
method="post">
<td><input type="text" name="name"
value="#currentDir.Name#" /></td>
<td><input type="text" name="size"
value="#currentDir.Size#" /></td>
<td>#right(currentDir.DIRECTORY, 2)#</td>
<td>#currentDir.Type#</td>
</cfoutput>
</tr>
</cfloop>
</cfloop>
</table> <br />
<input type="text" name="number_of_directories"
value="<cfoutput>#valuelist(qLoadFile.owner_id)#</cfoutput>">
<input type="submit" name="submit" value="submit"/>
</form>I just put your query into a random page of mine, changed the
query to reflect a local database and got this output (all
formatted correctly though!)
Since I dont have the directory setup that you have the
directory structures are empty, however it seems to be looping
through fine
59 File Name File Size Directory Location File Type
60 File Name File Size Directory Location File Type
61 File Name File Size Directory Location File Type
62 File Name File Size Directory Location File Type
63 File Name File Size Directory Location File Type
64 File Name File Size Directory Location File Type
65 File Name File Size Directory Location File Type
Is this what you are looking for? -
Loop over form values & insert into db
Form
prod_id prod_name prod_price prod_status
001 product 001 1.00 1
002 product 002 2.00 1
003 product 003 3.00 0
004 product 004 4.00 0
Form Dump
prod_name product 001,product 002,product 003,product 004
FIELDNAMES prod_id, prod_name, prod_price, prod_status
prod_price 1.00,2.00,3.00,4.00
prod_status 1,1,0,0
prod_id 001,002,003
I want to update a few fields, prod_price and prod_status. I submit these values to my update page but I'm not sure how to loop over these values and update by the prod_id. In my update page I'm using cfdump and I see the structure of the form, the fieldnames as well as the prod_id, prod_name, etc and their values.
My question is how do I loop over these form values so I'll be able to update by each prod_id? I've played around with looping over the form collection values but no luck.When I do stuff like this, I append the "id" value to the end of each form field. That enables me to ensure the other fields match up.
When processing the form, I generally do something like this:
<cfloop list="#form.fieldnames# index="ThisField">
<cfif left(ThisField, 9) is "prod_name">
<cfscript>
ThisID = removechars(thisfield, 9);
ThisName = form["prod_name" & ThisID];
same for other fields
Then do something with those variables. -
Value Mapping: how to loop over a nested context in a adv. user function
Hello,
i have the following source structure:
<rec> (1:1)
<field1>aaa</field1> (1:1)
<field2>bbb</field2> (1:1)
<b><struc> <u>(1:unbounded)</u>
<name>myName</name>
<value>myValue</value>
</struc></b>
</rec>
Destination structure:
<rec> (1:1)
<field1>aaa</field1> (1:1)
<field2>bbb</field2> (1:1)
<b><field3>bbb</field2> (1:1)</b>
</rec>
In order to fill the destination field3 i have to loop over the input-structure struc.
My problem is, that i don't know how to get access to the name/value pair with a
extended user-defined function. Since each occurrence in struc i not a simple string but consists of 2 fields, i guess it is not enough simply to loop over input String Array.
Please help.just like u have a loop stmt in java prgm. a simple code:
Here a and b are the strings that comes to the udf
for(int i=0;i<a.length;i++)
boolean found = false;
int j = 0;
for(j=0;j<b.length;j++)
if (a<i>.equals(b[j]))
found = true;
break;
if (found == true)
result.addValue(c[j]);
else
result.addValue("");
Message was edited by:
Prabhu S -
I have this code:
if (s == "file")
file = false;
for (int i = 0; i < treeViewMS1.SelectedNodes.Count; i++)
DeleteFile(treeViewMS1.SelectedNode.FullPath, file);
I know it's a file and it is working if it's a single file.
On the treeView i click on a file right click in the menu i select delete and it's doing the line:
DeleteFile(treeViewMS1.SelectedNode.FullPath, file);
And it's working no problems.
But i want to do that if i selected some files togeather multiple selection then to delete each file.
So i added the FOR loop but then how do i delete from the SelectedNodes each node ?
The treeView SelectedNodes dosen't have FullPath like SelectedNode also doing SelectedNodes[i] dosen't have the FullPath property.
Same as for if i want to delete a single directory or multiple selected directories:
This is the continue of the code if it"s not a "file" (else) it's null i know it's a directory and doing:
else
file = true;
RemoveDirectoriesRecursive(treeViewMS1.SelectedNode, treeViewMS1.SelectedNode.FullPath);
Also here i'm using SelectedNode but if i marked multiple directories then i how do i loop over the SelectedNodes and send each SelectedNode to the RemoveDirectoriesRecrusive method ?
My problem is how to loop over SelectedNode(multiple selection of files/directories) and send each selected file/directory to it's method like i'm doing now ?foreach (TreeNode n in treeViewMS1.SelectedNodes)
// Remove everything associated with TreeNode n here
I don't think it's any harder than that, is it?
If you can multi-select both an item and one of its descendents in the tree, then you'll have the situation that you may have deleted the parent folder and all of its children by the time you get around to deleting the descendent. But that's not such
a big deal. A file can get deleted externally to your program too - so you'll just have to deal with it having been deleted already (or externally) when you get around to deleting it yourself. -
Hello,
I have a foreach loop in SSIS (as part of Visual Studio 10 and with SQL Server 2012).
It loops over all files in a folder (ForEach File Enumerator).
I set the folder: OK
Traverse Sub folders: OK
I have set up a Variable in Variable Mappings called FileName so it shows User::FileName: OK
Index of variable is 0: OK
It almost works ok. Except that the first file it finds is never considered.
I set a breakpoint then and the first file it finds, is shown in black in the watch variable window. All subsequent files found are shown in red font. When I change the names of the files so another file is the first file found then it skips the other one
which now is the first file.
What is going on here? Why does SSIS skip the first file it finds in a foreach file loop?
Any suggestions highly appreciated.
Thank you
Andi
Andreas"red font - interesting, any example to show us (image)
It would be interesting to share with us whether you use any file masks or expressions.
Arthur
MyBlog
Twitter
It appears a variable value turns red when it changes between breakpoints. It started black for the first value (the first file, obtained BEFORE the execution reached the breakpoint), and then turned red. I was able to reproduce this behavior on a test environment.
However, it did not skip any files.
OP, please set up the test shown in the image below. Create a breakpoint in the sequence container for the "OnPreExecute" event. -
Hey Guys,
I am having a problem with cfloop. What I am trying to do is
calculate points on an Oline March Madness Pool. I need to evaluate
if the user picks are equal to the game winners. I can do it if I
manually type each pick # and each game # but I would much rather
loop over a cfset tag since there are 63 picks and games. You can
check out my code below to get a better idea of what I am trying to
do. While I know I can't include the #'s on the right side of the
cfset tag in this way I included them anyways to better illustrate
where I would like to loop it. Is there a way to do this, or will I
have to manually set each pick?<cfif getGames.game#l# EQ
userPoints[#userID#]["pick#l#"]>
I'm going to guess this is line 27 or very near it.
Your actual <cfset> line looks fine to me assuming all
the relevant keys
exist when they need to exist. I would have written it
something like:
<cfset userPoints[userID]["pick" & i] =
variables["pick" & i]>
The if statement should probably look like this:
<cfif getGames["game" & i] EQ
userPoints[userID]["pick" & i]>
All your index variables are the letter "i" and not the
number "1"
aren't they? I don't believe a singe number is a valid CF
variable name.
Maybe you are looking for
-
Dear sir, I'm using blackberry 9320.. Now the problem is facebook is not work properly in my web browser.. This problem is only for facebook site.. Other sites is work well.. When I open facebook my web browser is showing error like this ..( Destinat
-
How do I create a connection with a special character (!) in the password ?
Oracle 11.2.0.3 EE on Solaris SQL*Developer 3.1.0.6 on Windows 7 Due to security requirements our passwords contain an exclamation mark (!) but I can't get SQL*Developer to recognize it. I've tried to put it in quotes, escaping it and even swearing a
-
Do you get a blank screen like this ^^^?
-
Solaris 10 x86 - 32/64 bit question
I have a Sun X4500 running Solaris 10 x86. I am having problems installing a third party application because the vendor says their application only runs on the 64 bit platform. They say their application installer runs "uname -a" to determine the pla
-
29.0 is too slow and keeps coming back when using 28.0 Grrrrr!
29.0 was too jerky and too slow. I reinstated 28.0 and it was fine until 29 reinstalled on its own. I have checked about:config and everything everywhere was set to keep it from reverting back but it did anyway. Sorry to sound rude, but what gives? I