Print a message inside while loop
Hi, I want to track the iteration of the loop while loop run. So I print a message for each iteration.
But print message appears only after the loop completes , it does not print values for each iteration.
I also tried to use the following workaround by going through one article but it doesn't work, Please help:
declare
@countint=1
while
(@count<10)
begin
print
'iteration'+convert(varchar(10),@count)
raiserror
('just
to raise an error',10,1)
waitfor
delay'00:00:01'
set
@count+=1
end
You could try using a temp table instead and capture the results that way.
e.g.
declare
@countint=1
create table #temp (IterationText (nvarchar(255))
while
(@count<10)
begin
Insert into #temp (IterationText) select (‘iteration'+convert(varchar(10),@count)
raiserror
('just to raise an error',10,1)
waitfor
delay'00:00:01'
set
@count+=1
Select * from #Temp
end
Please click "Mark As Answer" if my post helped. Tony C.
Similar Messages
-
How to set error message inside the loop...module pool
Dear all,
Am creating Table Control without wizard. In that i am looping the values, that is, Once if i entered 5 digit values means, 12345-08... the values should be stored in z-table like this 12345,12346,12347,12348 . That is 5-8 it as to update in z table. for this i createdloop at itab and inside that i written a code to count the value and all. and also its clearly updating the value in ztable too. now i want to know, if once again i entered the same value means, like 12345-08.. it as to show error messge.I dont know how to set the condition with error message inside the single loop .... Its all comes under module pool program.
Thanks,
Santhosh.RIf i understood your doubt, here goes the answer.
LOOP AT itab INTO wa_itab. " This is your loop
l_tabix = sy-tabix. "l_tabix receives the line of the loop
READ TABLE itab WITH KEY itab = wa_itab. "itab is the same tab of your loop
IF sy-subrc EQ 0 AND l_tabix NE sy-tabix. "Here the sy tabix have the value of the read table.
* Here you do your error treatment.
ENDIF.
ENDLOOP.
Explanation: When you are looping your internal table, you use a READ TABLE to see the already recorded registers. If the read table finds one register (sy-subrc EQ 0) and the this register is not the one of the current line (l_tabix NE sy-tabix). It means you have a duplicated register.
Maybe there is someway easier to do this, but this is what i thought now.
I hope this was your doubt hehe.
Thales Schmidt -
Stop/ abort execution in case when the task inside while loop can not be completed
I am using Count digital events example from LabVew. This VI is using DAQmx Read vi. If I press Stop button before this DAQ gets required amount of samples VI does not stop. I tried to change amount of samples on a fly with stop button but it did not work either.
Please help.This is directly related to the way LV handle the data. Your question is similar to "How can I stop a For-Next loop before completion ?". The answer is : No way, except changing the loop for a while loop (ie: change the algorithm) or stop the whole vi.
Attached is an example of stopping an infinite running loop. It uses a parallel loop, with a Stop node (see how to handle the stop button in order to reset it to false at the next vi run).
If you only want to stop the DAQ, whithout halting everything else, the solution is trickier : you will have to run your DAQ loop in a dynamically loaded vi, then use the vi server functions to halt the vi if the run period is excessive. But that is worth another discussion...
Give some feedback !..
CC
Chilly Charly (aka CC)
E-List Master - Kudos glutton - Press the yellow button on the left...
Attachments:
Stop_infinite_loop.vi.zip 9 KB -
How to print a messages inside pl/sql functions
I have this function whihc is very similar to a number of my other functions:
DECLARE
check_if_set VARCHAR2 (50);
BEGIN
FOR c IN (SELECT proposal_id
FROM student_current_project
WHERE student_id = :p4_student_id
AND second_reader_type != 'Confirmed')
LOOP
check_if_set := c.proposal_id;
END LOOP;
IF check_if_set IS NOT NULL
THEN
UPDATE student_current_project
SET second_reader_id = :p4_request_reader, second_reader_type = 'Request'
WHERE student_id = :p4_student_id;
HTP.print ('Request Reader sent.');
ELSE
HTP.print ('Reader Already Confirmed.');
END IF;
END;
The problem is with the printing to the screen. I basically want it to print like the process sucess message does but obviously there is two out comes listed above that it can print so i cant use the process sucess message. What is missing from the HTP.print statments above?
Thanks for your helpHey Dan,
I think you can do this with the Display-Only-Items.
So when you have a Display-Only-Item :P4_Message then your Process can be:
DECLARE
check_if_set VARCHAR2 (50);
BEGIN
FOR c IN (SELECT proposal_id
FROM student_current_project
WHERE student_id = :p4_student_id
AND second_reader_type != 'Confirmed')
LOOP
check_if_set := c.proposal_id;
END LOOP;
IF check_if_set IS NOT NULL
THEN
UPDATE student_current_project
SET second_reader_id = :p4_request_reader, second_reader_type = 'Request'
WHERE student_id = :p4_student_id;
:P4_Message := 'Request Reader sent.';
ELSE
:P4_Message := 'Reader Already Confirmed.';
END IF;
END;
Regards,
Tim -
How to pass a value from inside a while loop outside the loop
Hello to everybody, I have been searching through the forum but I have not found a certain answer for my problem. I would try to explain my problem as breefly as posible:
I have to send by a BNC2120 two signals and acquire an other one thats comes from a preassure sensor. That part is done by introducing simulating and acquiring DAQmx inside while loops.It is sycronized by my self, proving such diferent values (is not the optimum, but is only the first prototype) and works as I expected. Well, then I want to sample some of the values of these signals, that is done with relays and local variables to get the value in the instant I want to sample. Here begin my problems: I want to extract the sample values out of the while loops without restarting them, I mean: I do not want to stop the while loops because the acquisition and the generation of the signal must be continuous, but I do not know if it is posible to put the while loops in "standby" until I operate with the values I have sampled and then the signal generator and the acquiere continues from when it has stoped before. Particulary I want to obtain the value of the top while loop (inside a case) when the counter arrives at 15.
I have proved to do with local variables, global variables, making a state machine, with event cases, with flat secuences...I have been reading about and proving diferent posible solutions for this week and the whole past week and I have not found the solution.
If any of you know how I can do this thing, I would be loved to listen your opinions. My proyect is above:
Thank you a lot in advance.
Sinceresly,
Miguel.
Attachments:
maq_estados_event_case.vi 239 KBIt definately sounds like what you really want is a Producer/Consumer. It is an architecture that uses Queues to pass data from a data generation loop (producter, your DAQ loop) and a data processor (consumer).
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines -
How can I opearate indicator outside while loop?
I do small program, I have many while loops and I want to connect wire (in my application) from each loop to AND gate then to another while loop, but how can I operate these wires to agree with the change of my application inside while loops.
If not clear :
In another words, suppose I want to operate indicator ouside the while loop. How can I operate indicator outside while loop, so when my application become TRUE (inside while loop) the indicator will be ON (outside while loop) and when my application become FALSE(inside while loop) the indicator will be OFF (outside while loop).
Help me if you have any idea please..........................Hi Rammo,
For the wire to carry the boolean condition from the while loop to an 'and' gate outside, the while loop must stop running
If you want the while loop to keep on running and still pass a boolean value to a destination outside the while loop, use any one of these: property nodes, global or local variables.
i am still not clear as to what you intend to say by this sentence
" I want the wire that comes out from the while loop will become TRUE if it in my application is TRUE inside while loop and the opposite is true. Because I want to connect the wire that comes out from while loop to AND gate than to another application"
plz tell me if the first part of this mail of mine answers your doubt or do you need more information?
regards
Dev -
Making a connector in while loop
I want to make a subvi with a while loop.
For example, there is a indicator inside while or for loop as my attachment.
Actually, the indicator will be used as a progress bar which need to be updated in realtime in main vi.
In my first thinking, the subvi is used in a simple event-driven structure(main vi) to start by a button (for user interface).
But I realized this method is not suitable for updating the indicator in realtime after pushing the start button.
How to make a subvi for the indicator and use it?
That is, how to extract the value inside while loop to outside the loop in realtime?.
Lee
메시지가 08-12-2007 07:30 PM에 labmaster에 의해 편집되었음
Attachments:
aaa.jpg 13 KBtrivial example attached, two vis in labview 8.2.1
Paul <--Always Learning!!!
sense and simplicity.
Browse my sample VIs?
Attachments:
mainVi.vi 7 KB
subviThatUpdatesMainProgess.vi 10 KB -
ReadUTF() and exiting a server while loop
What I want to do is simple.. I want to be able to type "exit" into a client and send that message to the server... And exit the server while loop as a result.. Here is what I tried.
//server code
while(true)
//bla bla bla
//bla bla bla
String message = socket.readUTF();
if( message == "exit" )
break;
// bla bla bla
however, when I type exit and send the message, this while loop doesn't break.. I'm new to java so I'm wondering if I'm messing up syntax somewhere.. It seems like it should work fine, whats going on?if(message.equals("exit"))
-
I have a while loop (outside) and a for loop (inside) and a control button within the for loop. I want to stop the program by click the botton without finishing the for loop. How can I do that?
Thank you in advance.HI Please find attached snapshot Regards, Santosh
Message Edited by SanRac on 12-17-2009 05:12 AM
Message Edited by SanRac on 12-17-2009 05:13 AM
Attachments:
Snap1.png 4 KB -
Unxepected behaviour with clusters inside of while loop with shift register
Colleagues,
I just would like to post here small, but important bug (I guess this is the bug), which was found by coworker today morning. Just would like to share knowledge, and probably this will save some debugging time for you...
So, the problem that you can get wrong content of the cluster in some cases. The cluster used inside of while loop with shift register (we using this construction for functional globals), and after bundle operation you can get data, which are not expected:
See also attached code for details (LabVIEW 8.6.1, WinXP Prof SP3).
best regards,
Andrey.
PS
Bug report already sent to NI.
Message Edited by Andrey Dmitriev on 10-16-2008 12:30 PM
Attachments:
BugwithClusters.png 15 KB
BugwithClusters.zip 10 KBThanks Andrey for brining this to our attention!
The "Show Buffer Allocations" reveals that LV is not processing the code in the right order.
Under ideal conditions, all of the data should be manipulated using the buffer "A". But as this demo shows the data is being processed in the wrong order.
The previously posted workaround get around this by forcing the array operation to happen first, but this resluts in two additional buffers "C" and "D" and then copy this back into "B".
Using an "Always Copy" is another workaround that uses a seperate buffer "F" to hold the data being moved from the first cluster to the second inside "E".
I think you won a shinny new CAR* Andrey!
Ben
CAR = Corrective Action Report
Message Edited by Ben on 10-16-2008 08:05 AM
Ben Rayner
I am currently active on.. MainStream Preppers
Rayner's Ridge is under construction
Attachments:
Cluster_Bug.PNG 57 KB -
Event controll: How to stop a running while loop inside a event structure
Hello,
I have some problems with controlling a while loop inside a event structure (see attached VI).
I habe 3 buttons ("Start Measurement, Stop Measurement, Quit Program"). When a measurement is running, it should be possible to stop the measurement by clicking on "Stop Measurement", but this does not work.
Has anyone an idea?
Thanks a lot and best regards,
Michael
Message Edited by MichaGue_01 on 04-23-2010 04:37 AM
Solved!
Go to Solution.
Attachments:
Event_Controll.vi 27 KBHello,
Try not to use while loops inside a Event structure.
My approach is using two While loops (one will have only the Event structure).
I had to use to Flag buttons that make it a bit more complicated but i am sure somebody will come up with a better idea, or you might want to have a think about it yourself.
Have a look on the modified version on the attachment.
Once you are happy how it works then you can Hide the 2 flag buttons from the Front Pannel by going to Block diagram right-click the indicators and choose option "Hide Indicators/Controls"
I did it in LV 8.6 so i hope you can open it on your PC if not i can downgrade it.
If you have any problem let us know.
Regards
Dimitrios
Test Systems Computing Engineer
Cummins Turbo-Technologies
Attachments:
Event_Controll[1]_modified.vi 18 KB -
Error -50103 occured with timed loop inside a while loop
Hello everyone,
i wrote an application to sample analog voltage from DAQ6024E card (see the attachments).
I have a big while loop in the VI because a I want to add some other functions later.
In the "WHILE_Cont Acq&Graph Voltage-Int Clk.vi" I use a while loop inside the big while loop to read the samples. It's working properly.
but when I use a timed loop inside the big while loop (see "TIMED_LOOP_Cont Acq&Graph Voltage-Int Clk.vi"), I get an error -50103 from the timed loop. It seems that the first cycle is ok, but after the first cycle the error occurs.
I don't know what happens with the timed loop, anyone can help me? what does the error -50103 mean? thanks a lot!
PS: I am using LabVIEW 8.0
Message Edited by molo511 on 10-22-2006 05:21 AM
Message Edited by molo511 on 10-22-2006 05:23 AM
Attachments:
TIMED_LOOP_Cont Acq&Graph Voltage-Int Clk.vi 143 KB
WHILE_Cont Acq&Graph Voltage-Int Clk.vi 75 KBhi molo511,
I tested your program but only with simulated devices. I had to delete the wire to the timing, so that the timed while loop runs with 1kHz. Did you already try this? Because this works on my PC.
I also found a link in our database that might be interesting for you.
http://digital.ni.com/public.nsf/websearch/04BEDD9E9E91ED3486256D180048116D?OpenDocument
Greets
Philipp N.
NI Application Engineer -
Can't we use while loop inside a fn
i am using a while loop inside a fn
it is showing error
the code is
while (a=1) loop
some condition
end loop;
the error is
PLS-00103: Encountered the symbol "WHILE" when expecting one of
the following:
* & = - + < / > at in is mod not rem then <an exponent (**)>
<> or != or ~= >= <= <> and or like between overlaps || year
DAY_
The symbol "*" was substituted for "WHILE" to continue.
PLS-00103: Encountered the symbol "LOOP" when expecting one of
the following:
. ( * % & = - + < / > at in is mod not rem then
<an exponent (**)> <> or != or ~= >= <= <> and or like
between ||
what is the errorIt looks like the OP misskeyed the assignment operator and got compilations errors, and from that assumed that you can't use WHILE loops in functions on a Tuesday.
Message was edited by:
William Robertson
I was thinking of his is it possible to increment a value in a function, though I suspect the problem is similar. -
How can I update cluster items from inside a while loop that does not contain the cluster?
I have a VI that contains front panel clusters and two while loops. The main cluster contains items such as a doubles "distance" and "stepsize" and boolean "step" (a whole buch of this type stuff). The first loop contains an event structure to detect front panel changes and the second contains code and sub VIs to perform operations based on detected events.
The operator can enter data into either double or click the boolean. If distance is changed the second loop does what is required to process the change. The same happens with stepsize. If step is clicked the ±stepsize value is added to distance and the result is processed. In each case the front panel should track the result of the input and subsequent processing.
Because the clusters are outside the while loop, they are not updated unless I click 'highlight execution' which seems to allow updating each time the execution highlight is updated. There are other issues if I move the clusters into one of the loops.
I've tried referencing the clusters and using local variables and nothing works. It looks like overkill to use shared variables for this.
Any ideas would be greatly appreciated.
Thanks,
FrankHi Ben,
Thank you for the response. I followed the link and tried reading everything you posted on AEs but I'm afraid that I didn't understand it all. It seems that each AE example had a single input and a single output (e.g. a double). Is this the case?
What I have is a couple of front panel clusters containing (approximately) 18 control doubles, 8 indicator doubles, 5 boolean radio button constructs and 26 boolean control discretes. I clusterized it to make it readable. In addition I'll eventually have a cluster of task references for hardware handles.
All I want to do is update the front panel values like I would do in a C, VB or any other language. I've tried referencing the cluster and using the reference from inside the loops. I've tied using local variables. Neither works. I'm experimenting with globals but it seems that I have to construct the front panel in the gloabal and then I wouldn't know how to repoduce that on the front panel of the main VI. Sometimes it seems that more time is spent getting around Labview constructs than benefitting from them.
I hope the 'Add Attachment' function actuals puts a copy of the VI here and not a link to it.
Thanks again for the suggestion,
Frank
Attachments:
Front Panel Reference.vi 33 KB -
Open and close visa inside a while loop
Hi,
I need to read a position from a control unit device continuously or even by click a button, for this I have to put "visa configure serial port" and" "visa close" inside a while loop. Dose it make any problem?You shouldn't need the VISA Event nodes. Get rid of those.
Why are you using Concatinate String just to build up a constant. Just create a single string constant. It is a lot cleaner.
Is the antenna constantly sending data to you or only when you request it?
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
Maybe you are looking for
-
Is there any way at all to install Windows 7 32 bit onto a MacBook Pro 13 in Retina Late 2013? The windows software I need won't run on Windows 7 64 bit.
-
"Work offline" button went away from taskbar and cannot recovered after performing CSC cache clear
Hi All, Some Windows 7 Pro users reported DFS folder mapping issue, CSC cache was cleared by following below KB article. - On a Windows Vista-based or Windows 7-based client computer, you can still access offline files even though the file server is
-
How do you make photo books in iphoto on ipad?
How do you make photo books in iphoto on ipad?
-
having problems trying to install Leopard on a newly partioned drive iMac 2Ghz Intel Core 2 1GB667 DDR2SDRAM 149 GB HD computer was have major problems and had only one user account. Backed up on FW drive that boots fine, planned to install clean sys
-
Hi, I am working on a scenario where we are supposed to extract data from a legacy system using a web service, and then send it using XI as a file to some file server. So in that case what steps should be taken to configure the scenario? In this case