Function to perform subsequent subtraction in BEx
Hello Experts,
I want to build following standard deviation formula in BEx.
std = R-Bar/D2, R-Bar defined as the sum of the absolute values of the differences between the value and the value before it divided by the number of values (the number of values will be the count minus 1 since the first value does not have a value to take a difference from). D2 is a contant 1.128.
I don't get any function to perform subsequent subtraction.
, in spreadsheet it is something like this.
Column D : Actual Test Results of Lot 'L1' for each sample (A to G)
Now I need to calculate its standard deviation using above formula.
Column F : E3-E2, E4-E3 and so on. In E2, value will be Zero as it's the first record.
Column G : Absolute of Values in Column F.
Cell G10 : Sum of all absolute values (60 in this example)
Cell G12 : Sum/ (Count-1) i.e. 60/(7-1) in this example. A to G are 7 samples, so count is 7.
G14 : G12/1.128
So, G14 holds the desired result of standard deviation.
When I remove Sample column from my report I should get this result in standard deviation cell.
Lot Number
Standard Dev
L1
7.598784195
Appreciate your help.
Thanks.
Hi There
So you want to play with designer, then you have to create a lot key figure selections and formulas, you have to create as much as samples you may have. If the max number of samples can be seven then you have to create seven key figure selections and restrict each one of them with samples characteristic value. You will create also six formulas.
An example:
KYF 1: Test Result , restrict Samples : A
KYF 2: Test Result , restrict Samples : B
KYF 3: Test Result , restrict Samples : C
KYF 4: Test Result , restrict Samples : D
and so on...
Formula 1: KYF 2 - KYF 3
Formula 2: KYF 3 - KYF 4
Since samples will not be in the analysis then you won't have any issue with the results.
Thank you
Yiannis
Similar Messages
-
Performance Issue Executing a BEx Query in Crystal Report E 4.0
Dear Forum
I'm working for a customer with big performance issue Executing a BEx Query in Crystal via transient universe.
When query is executed directly against BW via RSRT query returns results in under 2 seconds.
When executed in crystal, without the use of subreports multiple executions (calls to BICS_GET_RESULTS) are seen. Runtimes are as long as 60 seconds.
The Bex query is based on a multiprovider without ODS.
The RFC trace shows BICS connection problems, CS as BICS_PROV_GET_INITIAL_STATE takes a lot of time.
I checked the note 1399816 - Task name - prefix - RSDRP_EXECUTE_AT_QUERY_DISP, and itu2019s not applicable because the customer has the BI 7.01 SP 8 and it has already
domain RSDR0_TASKNAME_LONG in package RSDRC with the
description: 'BW Data Manager: Task name - 32 characters', data
type: CHAR; No. Characters: 32, decimal digits: 0
data element RSDR0_TASKNAME_LONG in package RSDRC with the
description 'BW Data Manager: Task name - 32 characters' and the
previously created domain.
as described on the message
Could you suggest me something to check, please?
Thanks en advance
Regards
RosaHi,
It would be great if you would quote the ADAPT and tell the audience when it is targetted for a fix.
Generally speaking, CR for Enteprise isn't as performant as WebI, because uptake was rather slow .. so i'm of the opinion that there is improvements to be gained. So please work with Support via OSS.
My onlt recommendations can be :
- Patch up to P2.12 in bi 4.0
- Define more default values on the Bex query variables.
- Implement this note in the BW 1593802 Performance optimization when loading query views
Regards,
H -
Oracle 9i function to perform data manipulation
Hi everyone,
I have two scenarios. I would like to write one Oracle 9i function that can accommodate both these scenarios, using PL/SQL developer. I intend passing a varchar2 parameter to this function. Within the function, I perform a select on a table and see if this value sent has a parent record.
If it does not have a parent record (null or blank) then I take this value, join with another table, perform some processing and return one varchar2 value.
If it has a parent record (not null or not blank) then I need to retrieve all the other children records associated with this same parent record, take this value, join with another table,perform some processing and return one varchar2 value.
I have two simple queries that I wrote: one for record with null/blank parent, and the other for record with same parent and other children. These two queries work individually, when I combine them is where I run into problems. Sample table:
TABLE XYZ data: (note: if there is a parent, parent shows up in both parent and child field in the table)
child parent
1234
5107 3167
6259 3652
5678 9754
3167 3167
3652 3652
1649
2306 9754
4657 3652
9754 9754
8753 3652
passing record 1234 into the function.
SELECT A.child, A.parent, C.field1
FROM OTHERTABLE C,
(SELECT TableA.child, TableA.parent
FROM XYZ TableA
WHERE TableA.child ='1234')A
WHERE A.child = C.field2
----(output of this query is 1 record with 3 fields 1234 and null/blank and 987654321. I place this output into a cursor and then take 987654321 and place into a variable and return this value)
passing record 4657 into the function
SELECT c.CHILDfield, c.PARENTfield, TableOther.field1
FROM OTHERTABLE TableOther,(
(SELECT B.CHILDfield, B.PARENTfield FROM
(SELECT A.PARENTfield, i.CHILDfield FROM TableB,
(SELECT TableA.CHILDfield, TableA.PARENTfield
FROM XYZ TableA
WHERE TableA.CHILDfield ('4657' ))A
-- pass 4657 and then get the parent
WHERE A.PARENTfield = TableB.PARENTfield)B
-- gets associated children with the parent from previous query.
-- note: parent can exist in the parent and child fields
WHERE B.CHILDfield <> B.PARENTfield))C
--strips off the parent and gets child/children only as I don't need
--the parent when it is also a child
WHERE C.CHILDfield = TableOther.field1
--(output of this query is 3 records
4657 3652 912345671
6259 3652 945362798
8753 3652 934274857)
I place this output into a cursor and then have a CASE statement that goes thru each record, and appends the third value into a variable, the ultimate return value of this will be as follows:
912345671;945362798;934274857)
The dilemma is writing a generic query to accommodate both these situations. My current function can handle each of these situations individually, but not both. For testing purposes, I change the select statement depending on whether I have a record that has a parent on not!
Any help is greatly appreciated.You want one function to handle two cases? This is the best opportunity to use the IF STATEMENT.
FUNCTION MyFunc (p_input IN VARCHAR2) RETURN VARCHAR2 IS
ReturnValue VARCHAR2;
BEGIN
IF <blank or null test> THEN
SELECT ... -- Blank or null select statement
... -- Blank or null data processing
RETURN ReturnValue;
ELSE
SELECT ... -- Other select statement
... -- Other data processing
RETURN ReturnValue;
END IF;
END MyFunc; -
No interface driver connected - Function not performed
Can some one please help me. I am a new user of Oracle, and I am trying to logon using SQl plus 8.0. (system/manager @ODBC:POLITE. But I get an error message saying "No interface driver connected - Function not performed" Where on the machine is the interface driver usually stored. I also have SQL plus 8.0 on the same machine, and it works when I log on using scott/tiger.
null<BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Uche Ubani ([email protected]):
Can some one please help me. I am a new user of Oracle, and I am trying to logon using SQl plus 8.0. (system/manager @ODBC:POLITE. But I get an error message saying "No interface driver connected - Function not performed" Where on the machine is the interface driver usually stored. I also have SQL plus 3.3 on the same machine, and it works when I log on using scott/tiger.<HR></BLOCKQUOTE>
null -
SQL User Defined Functions for performing statistical calculations
Hi!
I hope you can help. I just wasn’t sure where to go with this question, so I’m hoping you can at least point me in the right direction.
I’m writing a SQL Server stored procedure that returns information for a facility-wide scorecard-type report. The row and columns are going to be displayed in a SQL Server Reporting Services report.
Each row of information contains “Current Month” and “Previous Month” numbers and a variance column. Some rows may compare percentages, others whole numbers, others ratios, depending on the metric they’re measuring. For each row/metric the company has specified whether they want to see a t-test or a chi-squared statistical test to determine whether or not there was a statistically significant difference between the current month and the previous month.
My question is this: Do you know where I can find a set of already-written user defined functions to perform statistical calculations beyond the basic ones provided in SQL Server 2005? I’m not using Analysis Services, so what I’m looking for are real SQL User Defined Functions where I can just pass my data to the function and have it return the result within a stored procedure.
I’m aware that there may be some third-party statistical packages out there we could purchase, but that’s not what I’m looking for. And I’m not able to do anything like call Excel’s analysis pack functions from within my stored procedure. I’ve asked. They won’t let me do that. I just need to perform the calculation within the stored procedure and return the result.
Any suggestions? Is there a site where people are posting their SQL Server UDF’s to perform statistical functions? Or are you perhaps aware of something like a free add-in for SQL that will add statistical functions to those available in SQL? I just don’t want to have to write my own t-test function or my own chi-squared function if someone has already done it.
Thanks for your help in advance! Oh, and please let me know if this should have been posted in the TSQL forum instead. I wasn't entirely sure.
Karen GrubeSTATS_T_TEST_
docs.oracle.com/cd/B19306_01/server.102/b14200/functions157.htm
STATS_T_TEST_ONE: A one-sample t-test
STATS_T_TEST_PAIRED: A two-sample, paired t-test (also known as a crossed t-test)
STATS_T_TEST_INDEP: A t-test of two independent groups with the same variance (pooled variances)
STATS_T_TEST_INDEPU: A t-test of two independent groups with unequal variance (unpooled variances) -
How the Drill down functionality works if the source is Bex Query
Dear All,
How the Drill down functionality works if the source is Bex Query through the query browser in Dashboard 4.1
Please let me know process.
Thanks
Regards,
SaiHi sai,
Drill down can be done by two ways.
1. you need to bring all the data in one shot to the spreadsheet and then by using the components you can achieve it. Below given link explains in detailed about that.
Filtering Through Combo Box
2. you can use different set of query to pass the value from one set to another to fetch the data using the prompt. please check the below which explain them.
Difference between "When value Becomes & When value Changes"
Revert any clarification required on this.
--SumanT -
Hi,
Does a function increase performance instead of a nested decode/case while handling huge data?
example:
select decode('6','1','0',decode('6','2','3',decode('6','4','5','6'))) from dual
select get_code('6') from dual;
get_code(m_code)
is return varchar2
begin
if m_code = '1' then return '0'
elsif m_code = '2' then return '3'
elsif m_code ='4' then return '5'
else return '6'
end;No. PL inside SQL is never fast. Check this out.
SQL> create or replace function my_fn(pInput1 integer, pInput2 integer) return integer
2 as
3 begin
4 if pInput1>pInput2
5 then
6 return 1;
7 else
8 return 0;
9 end if;
10 end;
11 /
Function created.
SQL> create table t
2 as
3 select dbms_random.value(1,9999) no1, dbms_random.value(1,9999) no2
4 from dual
5 connect by level <= 100000
6 /
Table created.
SQL> exec dbms_stats.gather_table_stats(user,'T')
PL/SQL procedure successfully completed.
SQL> set autotrace traceonly
SQL> set timing on
SQL>
SQL> select no1,
2 no2,
3 case when no1>no2 then 1 else 0 end val
4 from t
5 /
100000 rows selected.
*Elapsed: 00:00:46.03*
Execution Plan
0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=159 Card=100000 By
tes=4300000)
1 0 TABLE ACCESS (FULL) OF 'T' (TABLE) (Cost=159 Card=100000 B
ytes=4300000)
Statistics
*1 recursive calls*
0 db block gets
7355 consistent gets
0 physical reads
0 redo size
5830943 bytes sent via SQL*Net to client
73826 bytes received via SQL*Net from client
6668 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
100000 rows processed
SQL> select no1,
2 no2,
3 my_fn(no1,no2)
4 from t
5 /
100000 rows selected.
*Elapsed: 00:00:49.04*
Execution Plan
0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=159 Card=100000 By
tes=4300000)
1 0 TABLE ACCESS (FULL) OF 'T' (TABLE) (Cost=159 Card=100000 B
ytes=4300000)
Statistics
*18 recursive calls*
0 db block gets
7374 consistent gets
0 physical reads
0 redo size
5830954 bytes sent via SQL*Net to client
73826 bytes received via SQL*Net from client
6668 SQL*Net roundtrips to/from client
5 sorts (memory)
0 sorts (disk)
100000 rows processedThanks,
Karthick. -
Functional and performance testing on Forms 6.0 and higher
I want to make functional tests on GUI Oracle Forms ver. 6.0 and higher.
I'm thinking in a IBM tool called Rational Robot but it's seems not very good. HP also has this type of tool with forms support but I haven't tested it, yet.
Does Oracle have some tool like this ?
Thanks !Hi..
Following is the information that you need to know about how rules are used in Financial
Management. You use rules to automate the calculations of data within an application. You can
use rules for these purposes:
● Calculate data entry level amounts for a specific entity, scenario, and period.
● Prevent data entry for a specific cell in a specific entity, scenario, and period.
● Allow input at the Parent entity level.
● Calculate data that cannot be calculated through a hierarchical aggregation, such as ratios
or variance analysis.
● Perform allocations from a parent entity to a list of base entities.
● Perform complex currency conversions, calculate exchange rate differences, or perform
other calculations necessary for your consolidation.
● Define formulas to dynamically calculate accounts.
● Specify the accounts in the application that support intercompany transactions.
You can write rules in a text editor, or you can use the Financial Management Rules Editor to
create rules.
For more information on rules pls refer hfm_admin.pdf
Best Regards
Edited by: Naveen Vasa on Jul 9, 2010 10:10 AM -
Forms and Reports: Automated Test tools - functionality AND performance
All,
I'm looking to get a few leads on an automated test tools that may be used to validate Oracle forms and reports (see my software configuration below). I'm looking for tools that can automate both functional tests and performance. By this I mean;
Functional Testing:
* Use of shortcut keys
* Navigation between fields
* Screen organisation (filed locations)
* Exercise forms validation (bad input values)
* Provide values to forms and simulate user commit, and go and verify database state is as expected
Performance Testing:
* carry out tests for fixed user load
* carry out tests for scaled step increase in user load
* automated collection of log files and metrics during test
So far I have:
http://www.neotys.com/
Thanks in advance for your response.
Mathew Butler
Configuration:
Red Hat Enterprise Linux x86-64 architecture v4.5 64 bit
Oracle Application Server 10.1.2.0.2 ( with patch 10.1.2.3 )
Oracle Developer Suite (Oracle Forms and Reports) V10.1.2.0.2 ( with patch 10.1.2.3 )
Oracle JInitiator 1.3.1.17 or later
Microsoft Internet Explorer 6are there any tools for doing this activity like oracle recommended tools?
Your question is unclear. As IK mentioned, the only tool you need is a new version of Oracle Forms/Reports. Open your v10 modules in a v11 Builder and select Save. You now have a v11 module. Doing a "Compile All PL/SQL" before saving is a good idea, but not required. The Builders and utilites provided with the version 11 installation are the only supported tools for upgrading your application. If you are trying to do the conversion of many Forms files in a scripted manner, you can use the Forms compiler in a script. Generating new "X" files will also update the source modules (fmb, mmb, pll). See MyOracleSupport Note 955143.1
Also included in the installation in the Forms Migration Assistant. Although it is more useful to people coming from older versions, it can also be used to move from v10 to 11. It allows you to select more than one file at a time. Documentation for this utility can be found in the Forms Upgrade Guide.
Using the Oracle Forms Migration Assistant -
How to Measure Function Module Performance?
Please can you tell me how I can measure the performance and trace the actions of a Function Module in R/3?
The function module in R/3 is run when a user calls a WebDynpro action from a WebDynpro screen within the SAP Portal.
I have tried running a trace on a user (ST05) but that only shows table actions (e.g. reads/fetch etc.). Also it does not appear in ST04 or ST03N. I would like to know how long the program actually takes to run.
Thanks.
PaulHi,
if I want to measure the runtime required to run some Abap, I use SE30. However i used it only for normal Dynpro application, not WebDynpro.
The detail level of the created trace can be configured. The aggregation level should be set to "Full" or "By call" at the beginning. Disabling aggregation leads to huge trace files.
You can select which statements should be traced. If you disable an option it's runtime is not lost but add to the traced action in the next level. If for example "Open SQL" is disabled, the time used by it is added into the net time of the method, function module of subroutine. Otherwise if "Open SQL" is enabled the net time of a function module does not include SQL time. SQL time is then listed separately.
Greetings -
Function Modules for time subtraction.
Hello abapers..
I want two function modules...
1) to subtract 1 hour from time and date.
for eg if the date entered is 23.3.08 and time is 00:00:00
then the function module should give the result as
22.3.08 and 23:00:00.
or if the date is 21.03.08 and time is 12:00:00.
The result should be 21.03.08 and time 11:00:00.
2) the second one is for validation..i am not sure if there is
a function module for that.
I want to validate whether the date entered by the user
in the select option for type sy-datum is in the correct format.
I mean the user should not enter anything except a date.
For eg:
If the user enters 97898jjjj then it should also invalidate this
as well as if the user enters 34.07.08 then also the FM should invalidate this..
Points will be rewarded for helpful answer.Try this
DATA : diff TYPE i.
PARAMETERS :
iv_stime TYPE t,
iv_sdate TYPE d,
iv_atime TYPE t.
ev_endtime = iv_stime - iv_atime.
diff = ev_endtime - iv_stime.
IF diff > 0.
ev_enddate = iv_sdate - 1.
ELSE.
ev_enddate = iv_sdate.
ENDIF.
WRITE : ev_endtime.
WRITE : ev_enddate. -
Function Module performance in Crystal Reports - Best practices
Hi all,
We are following a function module based approach for our crystal reporting needs. We tried to follow an infoset approach, but found that most of the critical fields required for reports were retrieved from function modules and bapis.
Our reports contain some project filters/parameter fields based on which the task reports would be created. I was wondering what would be the best approach/best practices to be considered while designing the FM so as not to impact the crystal report performance?
We created a sample FM in our test system with just the table descriptions ( without the input parameters) which would retrieve all the projects and found that crystal reports crashed while trying to retrieve all the records. I am not sure if this is the right approach since this is our project in using FMs for crystal reports.
Thank you
Vinnieyes. We did try following the infoset approach against the tables however since our project reports contain long text fields and status texts ( retrieved via FMs), we opted for the FM approach. Do you know how texts can be handles from ABAP to Crystal reports?
-
Calling nested function to perform DML and wait for commit
Hi everybody,
I would like to do some DML -- an insert statement, to be specific -- in a function and have the function then return the numeric key of the newly added row. I call this function from another context and woud then be able to use the newly added data to do some stuff.
More specifically, what I am going to do is this: I have a graph consisting of source, destination and distance triplets in a table. A user should now be able to
1.) add a node 'A' to the graph,
2.) add a node 'B' to the graph
3.) get the shortest path from A to B through the graph.
I have an inner function function INSERT_NEW_NODE(node_in in sdo_geometry, graph_in in integer) return integer
is
pragma autonomous_transaction;
cursor node_cur is
select
source,
source_geom
from graph
cursor edge_cur is
select
source,
destination,
distance,
edge_geom
from
graph
where
sdo_geom.relate(edge_geom, 'anyinteract', node_in, .005) = 'TRUE';
begin
-- check if identical with any existing node
for node_rec in node_cur loop
if sdo_geom.relate(node_rec.source_geom, 'EQUAL', node_in, .005) = 'EQUAL' then
return node_rec.source;
end if;
end loop;
-- get edges
for edge_rec in edge_cur loop
-- new_node-->edge.destination and vice versa
insert into
graph
ID,
GRAPH,
SOURCE,
DESTINATION,
DISTANCE,
SOURCE_GEOM,
DESTINATION_GEOM,
EDGE_GEOM
values
graph_id_seq.nextval, --id
graph_in, --graph
morton(node_in.sdo_point.x, node_in.sdo_point.y), -- source morton key
edge_rec.source, -- destination morton key
sdo_geom.sdo_distance(edge_rec.source_geom_marl2000, node_in, .005, 'unit=M'), -- distance
node_in, -- source geom
edge_rec.source_geom, -- dest geom
split_line(edge_rec.edge_geom_marl2000, node_in).segment1 -- edge geom
commit;
--new_node-->edge.source and vice versa
insert into
gl_graph
ID,
GRAPH,
SOURCE,
DESTINATION,
DISTANCE,
SOURCE_GEOM,
DESTINATION_GEOM,
EDGE_GEOM
values
graph_id_seq.nextval, --id
graph_in, --graph
edge_rec.source, -- source morton key
morton(node_in.sdo_point.x, node_in.sdo_point.y), -- destination morton key
sdo_geom.sdo_distance(edge_rec.source_geom, node_in, .005, 'unit=M'), -- distance
edge_rec.source_geom, -- source geom
node_in, -- dest geom
split_line(edge_rec.edge_geom, node_in).segment2 -- edge geom
commit;
end loop
return(morton(node_in.sdo_point.x, node_in.sdo_point.y));
end insert_new_node;, which adds the new nodes to the graph, connects, calculates distances etc. and returns a handle to the newly added node. I call this function twice from another, outer function function get_path (line_in in sdo_geometry, graph_in in integer) return sdo_geometry
is
source number;
destination number;
source_geom mdsys.sdo_geometry;
destination_geom mdsys.sdo_geometry;
begin
source := insert_new_node(get_firstvertex(line_in), graph_in);
destination := insert_new_node(get_lastvertex(line_in), graph_in);
-- source := insert_new_node(get_firstvertex(line_in), graph_in);
-- destination := insert_new_node(get_lastvertex(line_in), graph_in);
return(get_path_geom(source, destination)); --returns a geometry which is the shortest path between source and destination
end get_path;; and I think, I have to use automous transaction in the inner function, so that the outer function can see any change performed by the inner one. However, this only works, when I call the inner function twice (i.e. remove the comment signs in front of the last two lines of code right before the return statement in the outer function.
So here's my questions: 1.) Why do I have to call the function twice to see the transaction complete? and 2.) How can I avoid that? Is there a way to wait with the execution of the return statement in the inner function until the insert is committed and can be seen by the outer function?
Cheers!Tanks, everybody, for your replies! Let me go through them one by one
smon asked: if you remove the pragma statement, does it work then?No, it does not, at least not, if I call the function from the outer function. In this case the insert statements in the inner function are not committed.
If I call the inner function like thisDECLARE
NODE_IN SDO_GEOMETRY;
GRAPH_IN NUMBER;
v_Return NUMBER;
BEGIN
NODE_IN := MDSYS.SDO_GEOMETRY(2001,<srid>,MDSYS.SDO_POINT_TYPE(<x>,<y>,<z>),NULL,NULL);
GRAPH_IN := 3;
v_Return := INSERT_NEW_NODE(
NODE_IN => NODE_IN,
GRAPH_IN => GRAPH_IN
DBMS_OUTPUT.PUT_LINE('v_Return = ' || v_Return);
:v_Return := v_Return;
END;, it works without autonomous transaction, but then again like this I do not use the handle to access the newly inserted data immediately to perform some other task with it.
sb92075 said:COMMIT inside LOOP is sub-optimal implementation (increases elapsed time) & can result in ORA-01555 error.Thanks, that was very helpful; I changed my code to commit outside of the loop, just before the return statement and it performs a lot faster now.
user1983440, regarding my statement I think, I have to use automous transaction in the inner function, so that the outer function can see any change performed by the inner one. asked: Are you certain that this is true? No, anything but certain. I should have said "It +seems+, I have to use autonomous transaction". I wish it would work without autonomous transaction, I think it actually should and I wonder why it does not. However, if I do not use autonomous transaction, the outer function seems to try to access the data that I have inserted in the inner function before it is committed, throws a no-data-found-exception, hence a rollback is performed.
davidp 2 said:The outer function will see whatever the inner function has done, without commit or autonomous transaction [...] In PL/SQL, the default commit is COMMIT WRITE NOWAIT, which I think does mean the transaction might not be instantly visible to the outside transaction, because the call returns before the commit really finishes. Yes, that is my notion, too. However, without autonomous transaction the inner function completes without error, then the outer uses the handles returned by the inner function to call the function <font face="courier">get_path_geom()</font> which cannot find the handles in the graph-table which raises an exception and causes a rollback.
Let me summarize: The inner function completes fine, without and with autonomous transaction and returns the handle. The inner function commits, if called directly, without and (of course) with autonomous transaction. The outer function does not see the data inserted by the inner function immediately, whether without or with autonomous transaction. If I let the outer function call the inner function twice (4 times, to be specific, but twice for each newly inserted row) from the outer function and do not use autonomous transaction, I get a no-data-found exception. If I let the outer function call the inner function twice and do use autonomous transaction, it works.
I agree with everything that was said about not using autonomous transaction in this case and I still want to solve this the right way. Any ideas are welcome! -
Function to perform onSubmit - validation widget
Ok, Ussually, when a form takes time to load the destination
page (event that I will call
form submission delay), the user tends to press again the
submit button. Every time the button is pressed, the information is
sent again. In spite of that the user will, of course only be sent
once to the page specified in the action attribute of the form. So,
the user may think he did right by pressing the button many times,
but we end up with multiple copies of the same information.
The solution I came up with, was to modify the validation
widget javascript file as follows:
function realizarAlRemitir()
if (!Spry.Widget.Form.onSubmit) {
Spry.Widget.Form.onSubmit = function(e, form)
if (Spry.Widget.Form.validate(form) == false) {
return false;
realizarAlRemitir()
return true;
I created a wildcard function "realizarAlRemitir()" to be
performed only when, having pressed the submit button, there is no
incorrect or empty required field to fill.
Then, in the html page containig the form, Iredefined the
"realizarAlRemitir()" function as follows:
<script language="JavaScript" type="text/javascript">
<!--
function realizarAlRemitir()
ratioGrow = 0.68;
Spry.Effect.GrowShrink('enviando', {duration:300, from:
'1px', to: '559px', toggle: true, growCenter:false});
Spry.Effect.AppearFade('enviando',
{duration:300,from:1,to:100,toggle:true});
// -->
</script>
This function "draws" using a modified spry effect a div tag
that effectively blocks the whole form so that the user cannot
modify the information or press again the submit button, while
giving her or him appropriate feedback that indicates that the
submission is being performed correctly.
This is the sample page:
http://192.168.10.2/nuevawebdesarrollo/eventos/conferencia.aspx?id=mbatc
Finnally, my question is whether or not there is a less
intrusive way to do such a thing, meaning, not having to touch the
javascript files code. I didn't find one, for instance, so will
some functionality like this be added to the framework? And,
lastly, once the framework is embedded inside Dreamweaver, will we
still be able to make such changes, without generating some trouble
that will cause the framework to stop working correctly with
dreamweaver.Hello Marin,
Thanks a lot for your reply. I´m really sorry I made the
mistake of giving you our internal address. I'm used to just
copy/pasting it and sending the link to be reviewed. In spite of
that, you seem to have gotten the idea, perfectly fine, so thanks
again for making the effort to reply to a flawed question.
This is the public link, so It should work well for you:
http://www.esan.edu.pe/nuevawebdesarrollo/eventos/conferencia.aspx?id=mbatc
It's in spanish, but I don't think language matters to
understand how it works. Your solution is perfect, as it
effectively stops the user from pressing the submit button more
than once.
Still, the final part of my question holds. We are inserting
an event, after the submit button has been pressed and,
consequently, after we've got your javascript files running. So,
the only way to insert such an event is messing with the files. Or
can it be done with our own scripts? Will there be a less intrusive
way to do such a thing, meaning, not having to touch the javascript
code of your source files to add events or functionality? I didn't
find a way but that doesn't mean that there isn't one, right? I'm
worried that now that we have dreamweaver CS3, if anybody needs to
do such a thing, dreamweaver will no longer recognize the files and
it will look like in the preview window, that we didn't insert it,
even if it still works perfectly in the browser.
Thanks again,
DANTESAENZ -
Where to put a function to perform only once?
Question #1: I am writing an applet, and as part of it I have created a custom canvas class which extends the canvas class... When this is created I would like to perform a custom calculation of the size that it should be. Where is the best place to put this function? Right now I have put it in getPreferredSize(), but I'm afraid it might be called everytime i scroll or resize or whatever?
Question #2: When I load my IE browser and go to the page with my applet, then call the applet.getSize() function it works. When I hit the refresh button on IE, getSize returns 0. Is there a workaround to this? I have the getSize() in the init of the applet...
Thank you!
RustyHi
About #1 question, the best place is at constructor class, "once a time" right? but getPreferredSize really is called so many time as needed, you know the reason. The simple workaround for #2 question is to store applet dimension at the very first call, also at applet construction.
Regards.
Maybe you are looking for
-
i am needing to do a total reformat and reinstall of os x on my wifes ibook. she is the only user account on her puter, so, if i boot her ibook in target disk mode and connect it to my macbook pro, dragging and droping her user folder should get ever
-
Presentation Director allows only max 1024 x 768
Hi, I have a T42 and recently purchased a 22" LCD monitor to connect through my dock station. When I dock my thinkpad I can only see in 1024*768 resolution and would like to configure it to 1280*1024. When I do it manually and undock the Thinkpad its
-
Two System cluster panics due to SCSI reservation
We have two E2900's configured as a fail-over cluster. They use a Sun Store Edge JBOD as a storage device and a quorum device (running ZFS). Sometimes, when we reboot the offline server (using init 6 or init 5 or reboot or shutdown), the online serve
-
JavaHelp installer is broken!
Ok, I've noticed a few other posts on this topic, so I can only conclude that there are problems with the JavaHelp installer, as I'm experiencing them as well. I'm running windows 2000, and have downloaded the file "javahelp1_1-win-no_rt.exe". When I
-
CD/DVD not recognized when booted in OS 9
Hi, I have a PB G4 667 titanium (the gigabite ethernet model) that can boot into OS 9. I normally run OS 10.4.5. I recently re-installed OS 9.2.2 using a generic install disk (not the one that came with this specific model). It boots fine into OS 9,