Hi JM. See answer at bottom. . .
> I have a table that contains the components for a receipt.
> Each row contains 3 columns :
>
> Receipt TEXT (8)
> Component TEXT (8)
> Weight_Percentage DOU
>
> I am looking for a rule able to prevent user to enter new rows or change
> existing rows such as the sum of Weight-Percentage stay less or equal to
> 100 %
>
> I tryed :
> RULES 'Receipt incorrect' FOR composition SUCCEEDS +
> WHERE (100 -Weight_Percentage) >= (SELECT SUM(Weight_Percentage)
FROM
> composition T1 +
> WHERE T1.Receipt = composition.Receipt)
This is almost the answer. The problem is that you need to have a primary
key on this table, so you can exclude the current row from the SUM if the
row has already been added. Assuming the key is CompID, try the rule like
this:
RULES 'Receipt incorrect' FOR composition SUCCEEDS +
WHERE (100 -Weight_Percentage) >= +
(SELECT SUM(Weight_Percentage) FROM composition T1 +
WHERE T1.Receipt = composition.Receipt AND +
T1.CompID <> Composition.CompID)
I did a quick test with this rule using both insert and update (from the
browser) and it appears to give the results you want.
--
Larry
_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com
================================================
TO SEE MESSAGE POSTING GUIDELINES:
Send a plain text email to [EMAIL PROTECTED]
In the message body, put just two words: INTRO rbase-l
================================================
TO UNSUBSCRIBE: send a plain text email to [EMAIL PROTECTED]
In the message body, put just two words: UNSUBSCRIBE rbase-l
================================================
TO SEARCH ARCHIVES:
http://www.mail-archive.com/rbase-l%40sonetmail.com/