Multivalued Look up
The source file we are working contains multiple values as A,B,C
In destination i have created that field as Lookup multivalued where we can select more than one value of A,B,C we seek your assistance in how to map this to my Loolup multivalued field.
thanks in advance.
Hi Aditya,
Say your Source file is
Material Number | Category
100 | A; B
200 | B
300 | B; C
Before importing the above file you need to populate the lookup table i.e. category table.
After populating lookup table map Material Number with Material Number field present in the repository and Category field with the Category field of the main table.
In Value Mapping simply press Automap it automatically map the values, import the records and check the output in Data Manager.
Note: There is a space between the Values after delimiter like A; B otherwise it will not recognise the multiple values.
Regards,
Jitesh Talreja
Similar Messages
-
Multivalued lookup field validation not working
Hi Experts ,
I have a scenario where one of my table is looking to a multivalued look up table .
I have placed a validation on the main table , which works fine if the first value is selected properly , but if i select a wrong record (which should fail according to the vlidation ) it does not fail .
Eg : For a multivalued field first value i have slected as "TRUE" (which is correct ) - No validation error (as expected)
again if i seltect another value "FALSE" (WHICH IS WRONG) - No validation error ( Not as expected)
on the other hand if i select the wrong value in the first attampt the validation fails (which is as expected) .
Please let me know what has to be done .
Regards,
VigneshHi,
Can you please explain in details whats your requirement is?
Many thanks
Regards,
Kiran -
Restrict Certain Values seen in Portal
Hi all,
We have MDM/Portal integreation where i want to Resrtict certain Values which is seen Portal I-Views
Suppose I have some values like in my MDM lookup Table
Name Number
a 1
b 3
c 4
I don't want allow b and 3 to seen in Portal.How can I acheive in MDM.
Thanks,
MadhuHi,
As per your requirement, It seems like Masks and Named Searches would not help in this case.
Since Mask and Named searches work for Table of TYPE MAIN only. You don't have this option when you select any other table rather than Main table in record mode of MDM Data Manager.
I mean to say, In Data Manager Record mode when you select Main table as your current table, if you not select Name(B) and Number(3) from Drill down search for that look-up tables then correspondingly all main table records associated with this look-up field value too would not display for the user who is assigned to this mask or Named search.
So, I feel you want to display all the records in Portal ( you have there i-view of Record details and detail view) but for look-up field only (legal value of entries) you want to restrict the values from main table .
So, only using look-up table constraints option you can achieve when you unload your repository ->go to Roles--> Tables and Fields-> constraints , assign that role to user for who you want to restrict the limited no. of look-up values. Here corresponding to your look-up table under constraint column you need to add only those values for that look-up table using Available to selected values(Don't add here b).
Note: Constraints enabled when a field from main table is look up to Single-valued look-up sub-table( say Flat table, Hierarchy table, Taxonomy table) but not multivalued look-up table(e.g. Qualified Flat etc). Further if you select Flat table as also Multi-valued then constraint would not work.
Thanks and Regards,
Mandeep Saini -
#Multivalue error in BO webi.
Hi
We are having a webi report based on two Bex queries. One query on top of a multiprovider and another on a DSO. The DSO contains rate category information and mutiprovide contains customer deatils. "Rate Category" is the common field between the two sources. So we have a merged dimension on top of Rate Category.
In the report we need to display the winter and summer rates used for a particular customer based on his recent rate category in seperate cells outside the table. Based on the recent meter reading date, we are picking the value of rate category using the below formulas.
[recent MR date] = max(meter reading date) // measure variable
[recent rate category] = if (meter reading date = recent MR date) then [customer].[rate category] //dimension variable.
Once the recent rate category is got, using the below formula we are doing a look up on the another bex query(which is built on DSO)
[recent winter rate] = if (recent rate category = [DSO].[rate category]) then [winter rate] //measure variable.
Upon using these formulas we are getting #multivalue error.
Please suggest some solution for the above issue.Hi Vinayak Gole,
Check the following Property.
Right click on the table and check the “Avoid duplicate rows aggregation” option.
Then save it and reopen the report .
Regards,
Anish -
Bex Percentage Indicator in the WebI report (# Multivalue)
Hi All!
I'm having a difficulty to produce a Bex percentage indicator to a WEB I report.
This is the result of my query:
Cycles
Qty1
Qty2
(Qty1%AQty2)
1
100
200
50%
2
200
200
100%
3
300
300
100%
4
400
400
100%
So far the report remains perfect.
When I remove Cycles dimension report, but let the cycles 1,2,3 and 4 in the Query filter, the result is # Multivalue for Qty1%AQty2) measure.
We tried all kinds of aggregation in BO or in Bex query, and The Sum aggregation results the sum of the percentages, when need is that the formula is made again with the totals.
What we need is it looks like this:
Qty1
Qty2
(Qty1%AQty2)
800
1100
72%
Is there any way to make this in Bex and then translate to BO? The formula should be Sum (qte1) / Sum (qty2) *100?
Or some syntax, that the bo understands what he need to regroup and give the right percentage?
The final user needs the indicator create in the Universe, not in the report. (In the report works, but not in the Universe measure ).
I donu2019t know if you get the idea, but I am available for any doubts.
Specification:
SAP BO XI r3
SAP BW 7.0
Tks a lot!
LiviaHave you tried:
= ( sum([Qty1]) / sum ([Qty2]) ) * 100
or...
= ( sum([Qty1]) ForAll [Cycles] / sum ([Qty2])ForAll [Cycles] ) * 100
You could create some global CKF (creating CKF as local structure formula will not work) in BEx. Go to properties, calculation, Calculate Results As... Sum. You may need to use exception aggregation. Find a characteristic that is the same value for all cycles and use that as the exception aggregation reference characteristic. Using BEx may be the best idea if you have a high volume of records since Webi performance on high volumes is not great. -
#MULTIVALUE error in some cells only
I am getting #MULTIVALUE error in few cells in a cross-tab report whereas the rest of the cells show correct results. What can be the reason for this.
My cross tab report consists of : Physician(Dimension) as a Section, Metrics(dimension) in the rows and Month(dimension) as columns.
The body contains measures- Rate and Scale. Each Metric has got a defined scale of 0-4 based upon a range of the Rate.
Scale ia a variable created by me as =[Rating Scale] In ([Provider] Where([Rate] Between([Lower Target Pct];[Upper Target Pct]))
The report looks like:
Jan Feb Mar
Rate Scale
Metric1
Metric2
When i try to include the Rate of YTD, the data in the Rate shows correct results wheares the Scale certain cells are appropriate but rest of them throughs #MULTIVALUE error.
I am not able to comprehend whats going wrong in here.
Can anyone pls resolve this issue.Actually , there is no formula for Scale. Its in-built dimension but to get the correct result in the cross-tab( No irregularities are found for teh results in the horizontal and the vertical report format), I created the variable for scale as follows:
=Scale ForEach(Provider) Where(Rate Between Lower Target AND Upper Target). After using this variable, I got correct results for the monthly/quarterly data wheareas for the YTD it gives #MULTIVLAUE for few cells, where the scale is different for the every months./quarters. It gives correct result where the rate falls in teh same scale zone for all the months/quarters for a certain Metric.
For .Ex.
Metric Q1 Q2 Q3 YTD
Rate Scale
Tetanus 94 3 92 3 91 3 93 3
BRC 71 2 91 3 98 4 83 #MULTIVALUE
I am not able to fathom that why its not taking the YTD into consideration even though I created a different variable for the scale of YTD in which I used the YTD(rate) instead of the actual(Rate). -
Multivalue error when using the previous() function
I am getting a multivalue error when using the previous() function on a dimension object in the report. I thought that the previous function was supposed to look at the current report and then look at the previous record's contents. How could this possibly give me a multivalue error when the value is clearly output in the previous row? Anyone have any ideas?
By the way, this is a valuable function for the types of reports that I design. The next() function would be even more valuable.
Thanks for your help.Hi Michael,
Could you please test the following solutions it might help you to resolve the issue.
Solution1:
Use slice and dice to reset all the tables that have #multivalue in it. The only problem with this workaround is they have to do the formatting manually.
Solution2:
Also, test the issue by changing the object to dimension if it is a measure or to measure if it is a dimension.
Regards,
Sarbhjeet Kaur -
Post Author: Adrin
CA Forum: WebIntelligence Reporting
On Web Intelligence report I have encountered this problem. In some queries, if there is more than one value in database for some of the fields of query, the report can't display all values in different rows. It returns the data with the value of "#MULTIVALUE" for some fields.Post Author: jsanzone
CA Forum: WebIntelligence Reporting
Adrin,
#Multivalue is a tricky item to navigate around, but let me explain a little bit of why it happens in a WebI environment.
If you create a section on two items, then your two items must synchronized properly, otherwise your second item (the typical culprit) will show up as a #Multivalue entry. Let me give you a "for instance".
You have an ID field and a reference (or description field): A/Dog; A/Cat.
Both IDs are A, however, the reference one time shows as "Dog", then again as "Cat". If you put the ID and Reference in a Section but on two lines (or two cells), the Reference will show #Multivalue because WebI is seeing two items that can go into one space, and boom, you get #Multivalue. The solution is to go back and look at your data for consistency, if there are any inconsistency then you'll need to fix it and that should clear up the problem. I'm not very familiar with DeskI, so I'm not sure why you get different results, but when you see the problem in WebI, it normally means that something has not gone along with plan, so you need to regroup. -
Hi,
Is there a way to set multivalued selection list (set more than one value in the list)? I am using remote API EDK.
Thanks
AvishayHi Subbu,
Even I have got the same error. I'm working on the standard repository SP3_VENDOR so that it will be easier to understand my scenario.
Main table --> Vendors. Field in the Vendors --> Phone Number. Qualified look-up table --> Phone Numbers.
Now, Phone Numbers table has 5 qualifies field
1. Telephone
2. Standard No.
3. Sequence No.
4. Extension
5. Complete No.
and non-qualifier field --> Country.
Hope the scenario is clear.
I have found out both the record ID for "Vendors" and "Phone Numbers" and changestamp for the main table record.
But after the same procedure suggested by you, I'm getting "StringException: ModifyQualifiedLinks error".
Code snippet,
<b>QualifiedLinkArray qualifiedLinkArray = new QualifiedLinkArray();
QualifiedLink qualifiedLink = new QualifiedLink();
//set non-qualifier
//get the record id of the lookup table for the non qualifier
int lookupRecordID = getRecordID(<Lookup table name>,<Lookup DF>,<value>);
qualifiedLink.SetLookupID(lookupRecordID); //set qualifier value</b>
//for all qualifier fields
<b>Value val = new Value(rec_value);
A2iField field1 = new A2iField(<FieldName>,val);
qualifiedLink.GetQualifiers().Add(field1); </b>
and then the addition to Array and catalogdata.AddQualifiedLinks();
I would like to ask if values for all the qualifier fields needs to be specified(none of them are "required" field). Am I doing something wrong here.
Please suggest,
Thanks and Regards,
Mausam -
Incorrect Sender value when 'mail' attribute is multivalued
hi,
i've just upgraded Sun messaging server 2005Q4 from IMS 5.2 and noted some behavioural difference in the reverse_url operations.
I've noted that reverse_url operations on the 'mail' attribute for ims5.2 seems to ignore subsequent values of this attribute if it's multivalued.
Sun Messaging 2005Q4, however, seems to have taken into account the multiple values of the 'mail' attribute.
This is resulting the mail's "From:" field to be using the subsequent values.
Setup
Account: mailtes1 (with multivalued 'mail' attribute)
mail: [email protected]
[email protected] (Not a configured mail domain handled by Sun messaging. Used by other applications)
mailhost: mailsit.portnet.com.sg (for Sun messaging 2005q4)
pnsasit1app1.portnet.com (for ims52)
test mails are sent to the same accounts.
Results of ./imsimta test -rewrite -debug mailtes1 on Sun Messaging 2005q4 as follows:
*** Debug output from rewriting a forward header address:
00:07:53.03: Rewriting: Mbox = "mailtes1", host = "portnet.com.sg", domain = "$*", literal = "", tag = ""
00:07:53.03: Rewrite: "$*", position 0, hash table -
00:07:53.03: Found: "$E$F$U%[email protected]$V$H"
00:07:53.03: Rewrite failed, not envelope.
00:07:53.03: Rewrite: "$*", position 1, hash table -
00:07:53.03: Failed.
00:07:53.03: Rewrite: "$*", position 0, rewrite database -
00:07:53.03: Failed
00:07:53.03: Rewriting: Mbox = "mailtes1", host = "portnet", domain = "portnet.com.sg", literal = "", tag = ""
00:07:53.03: Rewrite: "portnet.com.sg", position 0, hash table -
00:07:53.03: Found: "$U%[email protected]"
00:07:53.03: New mailbox: "mailtes1".
00:07:53.03: New host: "portnet.com.sg".
00:07:53.03: New route: "png1app1-mail.portnet.com.sg".
00:07:53.03: New channel system: "png1app1-mail.portnet.com.sg".
00:07:53.03: Looking up host "png1app1-mail.portnet.com.sg".
00:07:53.03: - found on channel l
00:07:53.03: Routelocal flag set; scanning for % and !
00:07:53.03: Rewrite rules result: [email protected]
00:07:53.03: Checking reverse URL cache for: [email protected]
00:07:53.03: Applying reverse URL pattern ldap:///$V?mail?sub?$Q to: [email protected]
00:07:53.05: Resulting URL: ldap:///l%3DSGSIN%2Co%3Dportnet.com?mail?sub?(|([email protected])([email protected]))
00:07:53.05: mmc_open_url called to open ldap:///l%3DSGSIN%2Co%3Dportnet.com?mail?sub?(|([email protected])(mailAlternateAddress=mailtes1@portnet.
com.sg)), flags = 384
00:07:53.05: URL with quotes stripped: ldap:///l%3DSGSIN%2Co%3Dportnet.com?mail?sub?(|([email protected])(mailAlternateAddress=mailtes1@portnet.
com.sg))
00:07:53.05: LDAP URL identified
00:07:53.05: URL context #1 will be used
00:07:53.05: Performing URL search on: ldap:///l%3DSGSIN%2Co%3Dportnet.com?mail?sub?(|([email protected])(mailAlternateAddress=mailtes1@portnet.
com.sg))
00:07:53.05: mmc_read_url result: [uid=mailtes1,ou=People,ou=ZZZ,ou=Customers, l=SGSIN, o=portnet.com]
00:07:53.05: URL resolution returned: [uid=mailtes1,ou=People,ou=ZZZ,ou=Customers, l=SGSIN, o=portnet.com]
00:07:53.05: mmc_read_url result: [mail] [email protected]
00:07:53.05: URL resolution returned: [mail] [email protected]
00:07:53.05: Attribute index: 16
00:07:53.05: LDAP URL produced address [email protected]
00:07:53.05: mmc_read_url result: [mail] [email protected]
00:07:53.05: URL resolution returned: [mail] [email protected]
00:07:53.05: Attribute index: 16
00:07:53.05: LDAP URL produced address [email protected]
00:07:53.05: No more result to return
*** Debug output from rewriting a forward envelope address:
00:07:53.05: Rewriting: Mbox = "mailtes1", host = "portnet.com.sg", domain = "$*", literal = "", tag = ""
00:07:53.05: Rewrite: "$*", position 0, hash table -
00:07:53.05: Found: "$E$F$U%[email protected]$V$H"
00:07:53.05: Match, pattern = "portnet.com.sg", current = "(*domaincheck*)"
00:07:53.05: old state = not checked.
00:07:53.05: Domain check on portnet.com.sg.
00:07:53.05: Added domain result 1 to cache for portnet.com.sg.
00:07:53.05: new state = succeeded.
00:07:53.05: New mailbox: "mailtes1".
00:07:53.05: New host: "portnet.com.sg".
00:07:53.05: New route: "png1app1-mail.portnet.com.sg".
00:07:53.05: New channel system: "png1app1-mail.portnet.com.sg".
00:07:53.05: Looking up host "png1app1-mail.portnet.com.sg".
00:07:53.05: - found on channel l
00:07:53.05: Routelocal flag set; scanning for % and !
forward channel = l
channel description =
channel user filter =
dest channel filter =
source channel filter =
channel flags #0 = BIDIRECTIONAL MULTIPLE IMMNONURGENT NOSERVICEALL
channel flags #1 = NOSMTP DEFAULT
channel flags #2 = COPYSENDPOST COPYWARNPOST POSTHEADONLY HEADERINC NOEXPROUTE
channel flags #3 = LOGGING NOGREY NORESTRICTED RETAINSECURITYMULTIPARTS
channel flags #4 = EIGHTBIT NOHEADERTRIM NOHEADERREAD RULES
channel flags #5 = SLAVE_DEBUG
channel flags #6 = LOCALUSER REPORTNOTARY
channel flags #7 = NOSWITCHCHANNEL NOREMOTEHOST DATEFOUR DAYOFWEEK
channel flags #8 = NODEFRAGMENT EXQUOTA REVERSE NOCONVERT_OCTET_STREAM
channel flags #9 = NOTHURMAN INTERPRETENCODING USEINTERMEDIATE RECEIVEDFROM VALIDATELOCALSYSTEM NOTURN
defaulthost = portnet.com.sg portnet.com.sg
linelength = 1023
channel env addr type = SOURCEROUTE
channel hdr addr type = SOURCEROUTE
channel official host = png1app1-mail.portnet.com.sg
channel queue 0 name = LOCAL_POOL
channel queue 1 name = LOCAL_POOL
channel queue 2 name = LOCAL_POOL
channel queue 3 name = LOCAL_POOL
channel after params =
channel user name =
urgentnotices = 1 2 4 7
normalnotices = 1 2 4 7
nonurgentnotices = 1 2 4 7
channel rightslist ids =
local behavior flags = %x7
expandchannel =
notificationchannel =
dispositionchannel =
saslswitchchannel =
tlsswitchchannel =
backward channel = l
header To: address = [email protected]
header From: address = [email protected]
envelope To: address = [email protected] (route (png1app1-mail.portnet.com.sg,png1app1-mail.portnet.com.sg)) (host portnet.com.sg)
envelope From: address = [email protected]
name =
mbox = mailtes1
Results of ./imsimta test -rewrite -debug mailtes1 on ims52 as follows:
*** Debug output from rewriting a forward header address:
00:09:58.97: Rewriting: Mbox = "mailtes1", host = "portnet.com.sg", domain = "$*", literal = "", tag = ""
00:09:58.97: Rewrite: "$*", position 0, hash table -
00:09:58.97: Found: "$E$F$U%[email protected]$V$H"
00:09:58.97: Rewrite failed, not envelope.
00:09:58.97: Rewrite: "$*", position 1, hash table -
00:09:58.97: Failed.
00:09:58.97: Rewrite: "$*", position 0, rewrite database -
00:09:58.97: Failed
00:09:58.97: Rewriting: Mbox = "mailtes1", host = "portnet", domain = "portnet.com.sg", literal = "", tag = ""
00:09:58.97: Rewrite: "portnet.com.sg", position 0, hash table -
00:09:58.97: Found: "$U%[email protected]"
00:09:58.97: New mailbox: "mailtes1".
00:09:58.97: New host: "portnet.com.sg".
00:09:58.97: New route: "pnsasit1app1.portnet.com".
00:09:58.97: New channel system: "pnsasit1app1.portnet.com".
00:09:58.97: Looking up host "pnsasit1app1.portnet.com".
00:09:58.97: - found on channel l
00:09:58.97: Routelocal flag set; scanning for % and !
00:09:58.97: Rewrite rules result: [email protected]
00:09:58.97: Checking reverse URL cache for: [email protected]
00:09:58.97: Applying reverse URL pattern ldap:///$V?mail?sub?$Q to: [email protected]
00:09:58.99: Resulting URL: ldap:///l%3Dsgsin%2Co%3Dportnet.com?mail?sub?(|([email protected])([email protected]))
00:09:58.99: mmc_open_url called to open ldap:///l%3Dsgsin%2Co%3Dportnet.com?mail?sub?(|([email protected])(mailAlternateAddress=mailtes1@portnet.
com.sg)), flags = 256
00:09:58.99: URL with quotes stripped: ldap:///l%3Dsgsin%2Co%3Dportnet.com?mail?sub?(|([email protected])(mailAlternateAddress=mailtes1@portnet.
com.sg))
00:09:58.99: LDAP URL identified
00:09:58.99: URL context #1 will be used
00:09:58.99: Performing URL search on: ldap:///l%3Dsgsin%2Co%3Dportnet.com?mail?sub?(|([email protected])(mailAlternateAddress=mailtes1@portnet.
com.sg))
00:09:58.99: mmc_read_url result: [email protected]
00:09:58.99: URL resolution returned: [email protected]
forward channel = l
channel description =
channel user filter =
dest channel filter =
source channel filter =
channel flags #0 = BIDIRECTIONAL MULTIPLE IMMNONURGENT NOSERVICEALL
channel flags #1 = NOSMTP DEFAULT
channel flags #2 = COPYSENDPOST COPYWARNPOST POSTHEADONLY HEADERINC NOEXPROUTE
channel flags #3 = LOGGING NOGREY NORESTRICTED RETAINSECURITYMULTIPARTS
channel flags #4 = EIGHTBIT NOHEADERTRIM NOHEADERREAD RULES
channel flags #5 = SLAVE_DEBUG
channel flags #6 = LOCALUSER REPORTHEADER
channel flags #7 = NOSWITCHCHANNEL NOREMOTEHOST DATEFOUR DAYOFWEEK
channel flags #8 = NODEFRAGMENT EXQUOTA REVERSE NOCONVERT_OCTET_STREAM
channel flags #9 = NOTHURMAN INTERPRETENCODING USEINTERMEDIATE RECEIVEDFROM VALIDATELOCALSYSTEM NOTURN
defaulthost = portnet.com.sg portnet.com.sg
linelength = 1023
channel env addr type = SOURCEROUTE
channel hdr addr type = SOURCEROUTE
channel official host = pnsasit1app1.portnet.com
channel queue 0 name = LOCAL_POOL
channel queue 1 name = LOCAL_POOL
channel queue 2 name = LOCAL_POOL
channel queue 3 name = LOCAL_POOL
channel after params =
channel user name =
urgentnotices = 1 2 4 7
normalnotices = 1 2 4 7
nonurgentnotices = 1 2 4 7
channel rightslist ids =
local behavior flags = %x7
backward channel = l
header To: address = [email protected]
header From: address = [email protected]
envelope To: address = [email protected] (route (pnsasit1app1.portnet.com,pnsasit1app1.portnet.com)) (host portnet.com.sg)
envelope From: address = [email protected]
name =
mbox = mailtes1
emails sent to mailtes1 using the Sun messaging 2005q4 service will be en-queued as '[email protected]' for sender but de-queued to mail store with '[email protected]' as sender.
09-Dec-2007 21:00:47.38 tcp_intranet ims-ms E 1 [email protected] rfc822;[email protected] mailtes1@ims-ms-daemon
09-Dec-2007 21:00:48.19 ims-ms D 1 [email protected] rfc822;[email protected] mailtes1@ims-ms-daemon
Physical message file will show '[email protected]' as sender.
Return-path: <[email protected]>
Received: from portnet.com.sg (pnsgsit1app2.portnet.com [10.106.65.36])
by mailsit.portnet.com.sg
(Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
with ESMTP id <[email protected]> for
[email protected]; Sun, 09 Dec 2007 21:00:47 +0800 (SGT)
Received: from [10.106.65.101] (Forwarded-For: 10.10.140.109)
by mailsit.portnet.com.sg (mshttpd); Sun, 09 Dec 2007 21:00:47 +0800
Date: Sun, 09 Dec 2007 21:00:47 +0800
From: [email protected]
Subject: test
To: [email protected]
Message-id: <[email protected]>
MIME-version: 1.0
X-Mailer: Sun Java(tm) System Messenger Express 6.2-8.04 (built Feb 28 2007)
Content-type: text/plain; charset=us-ascii
Content-language: en
Content-transfer-encoding: 7bit
Content-disposition: inline
X-Accept-Language: en
Priority: normal
Original-recipient: rfc822;[email protected]
test
Action tried.
1) Re-order values of mail attribute as follows:
mail: [email protected]
[email protected]
results from ./imsimta test -rewrite -debug mailtes1 on Sun messaging 2005q4:
*** Debug output from rewriting a forward header address:
00:21:45.57: Rewriting: Mbox = "mailtes1", host = "portnet.com.sg", domain = "$*", literal = "", tag = ""
00:21:45.57: Rewrite: "$*", position 0, hash table -
00:21:45.57: Found: "$A$E$F$U%[email protected]"
00:21:45.57: Rewrite failed, not envelope.
00:21:45.57: Rewrite: "$*", position 1, hash table -
00:21:45.57: Failed.
00:21:45.57: Rewrite: "$*", position 0, rewrite database -
00:21:45.57: Failed
00:21:45.57: Rewriting: Mbox = "mailtes1", host = "portnet", domain = "portnet.com.sg", literal = "", tag = ""
00:21:45.57: Rewrite: "portnet.com.sg", position 0, hash table -
00:21:45.57: Found: "$U%[email protected]"
00:21:45.57: New mailbox: "mailtes1".
00:21:45.57: New host: "portnet.com.sg".
00:21:45.57: New route: "mailsit.portnet.com.sg".
00:21:45.57: New channel system: "mailsit.portnet.com.sg".
00:21:45.57: Looking up host "mailsit.portnet.com.sg".
00:21:45.57: - found on channel l
00:21:45.57: Routelocal flag set; scanning for % and !
00:21:45.57: Rewrite rules result: [email protected]
00:21:45.57: Checking reverse URL cache for: [email protected]
00:21:45.57: Applying reverse URL pattern ldap:///$V?mail?sub?$Q to: [email protected]
00:21:45.58: Resulting URL: ldap:///l%3DSGSIN%2Co%3Dportnet.com?mail?sub?(|([email protected])([email protected]))
00:21:45.58: mmc_open_url called to open ldap:///l%3DSGSIN%2Co%3Dportnet.com?mail?sub?(|([email protected])(mailAlternateAddress=mailtes1@portnet.
com.sg)), flags = 384
00:21:45.58: URL with quotes stripped: ldap:///l%3DSGSIN%2Co%3Dportnet.com?mail?sub?(|([email protected])(mailAlternateAddress=mailtes1@portnet.
com.sg))
00:21:45.58: LDAP URL identified
00:21:45.58: URL context #1 will be used
00:21:45.58: Performing URL search on: ldap:///l%3DSGSIN%2Co%3Dportnet.com?mail?sub?(|([email protected])(mailAlternateAddress=mailtes1@portnet.
com.sg))
00:21:45.59: mmc_read_url result: [uid=mailtes1,ou=People,ou=PSA,ou=Customers, l=SGSIN, o=portnet.com]
00:21:45.59: URL resolution returned: [uid=mailtes1,ou=People,ou=PSA,ou=Customers, l=SGSIN, o=portnet.com]
00:21:45.59: mmc_read_url result: [mail] [email protected]
00:21:45.59: URL resolution returned: [mail] [email protected]
00:21:45.59: Attribute index: 16
00:21:45.59: LDAP URL produced address [email protected]
00:21:45.59: mmc_read_url result: [mail] [email protected]
00:21:45.59: URL resolution returned: [mail] [email protected]
00:21:45.59: Attribute index: 16
00:21:45.59: LDAP URL produced address [email protected]
00:21:45.59: No more result to return
*** Debug output from rewriting a forward envelope address:
00:21:45.59: Rewriting: Mbox = "mailtes1", host = "portnet.com.sg", domain = "$*", literal = "", tag = ""
00:21:45.59: Rewrite: "$*", position 0, hash table -
00:21:45.59: Found: "$A$E$F$U%[email protected]"
00:21:45.59: Match, pattern = "portnet.com.sg", current = "(*domaincheck*)"
00:21:45.59: old state = not checked.
00:21:45.59: Domain check on portnet.com.sg.
00:21:45.59: Added domain result 1 to cache for portnet.com.sg.
00:21:45.59: new state = succeeded.
00:21:45.59: New mailbox: "mailtes1".
00:21:45.59: New host: "portnet.com.sg".
00:21:45.59: New route: "mailsit.portnet.com.sg".
00:21:45.59: New channel system: "mailsit.portnet.com.sg".
00:21:45.59: Looking up host "mailsit.portnet.com.sg".
00:21:45.59: - found on channel l
00:21:45.59: Routelocal flag set; scanning for % and !
forward channel = l
channel description =
channel user filter =
dest channel filter =
source channel filter =
channel flags #0 = BIDIRECTIONAL MULTIPLE IMMNONURGENT NOSERVICEALL
channel flags #1 = NOSMTP DEFAULT
channel flags #2 = COPYSENDPOST COPYWARNPOST POSTHEADONLY HEADERINC NOEXPROUTE
channel flags #3 = LOGGING NOGREY NORESTRICTED RETAINSECURITYMULTIPARTS
channel flags #4 = EIGHTBIT NOHEADERTRIM NOHEADERREAD RULES
channel flags #5 = MASTER_DEBUG SLAVE_DEBUG
channel flags #6 = LOCALUSER REPORTNOTARY
channel flags #7 = NOSWITCHCHANNEL NOREMOTEHOST DATEFOUR DAYOFWEEK
channel flags #8 = NODEFRAGMENT EXQUOTA REVERSE NOCONVERT_OCTET_STREAM
channel flags #9 = NOTHURMAN INTERPRETENCODING USEINTERMEDIATE RECEIVEDFROM VALIDATELOCALSYSTEM NOTURN
defaulthost = portnet.com.sg portnet.com.sg
linelength = 1023
channel env addr type = SOURCEROUTE
channel hdr addr type = SOURCEROUTE
channel official host = mailsit.portnet.com.sg
channel queue 0 name = LOCAL_POOL
channel queue 1 name = LOCAL_POOL
channel queue 2 name = LOCAL_POOL
channel queue 3 name = LOCAL_POOL
channel after params =
channel user name =
urgentnotices = 1 2 4 7
normalnotices = 1 2 4 7
nonurgentnotices = 1 2 4 7
channel rightslist ids =
local behavior flags = %x7
expandchannel =
notificationchannel =
dispositionchannel =
saslswitchchannel =
tlsswitchchannel =
backward channel = l
header To: address = [email protected]
header From: address = [email protected]
envelope To: address = [email protected] (route (mailsit.portnet.com.sg,mailsit.portnet.com.sg)) (host portnet.com.sg)
envelope From: address = [email protected]
name =
mbox = mailtes1
emails sent to mailtes1 using the Sun messaging 2005q4 service will be en-queued as '[email protected]' for sender and de-queued to mail store with '[email protected]' as sender.
10-Dec-2007 00:20:00.88 tcp_intranet ims-ms E 1 [email protected] rfc822;[email protected] mailtes1@ims-ms-daemon
10-Dec-2007 00:20:01.63 ims-ms D 1 [email protected] rfc822;[email protected] mailtes1@ims-ms-daemon
Physical message file will show '[email protected]' as sender.
But this time the recipient is '[email protected]'
Return-path: <[email protected]>
Received: from portnet.com.sg (pnsgsit1app2.portnet.com [10.106.65.36])
by mailsit.portnet.com.sg
(Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007))
with ESMTP id <[email protected]> for
[email protected]; Mon, 10 Dec 2007 00:20:00 +0800 (SGT)
Received: from [10.106.65.101] (Forwarded-For: 10.10.140.109)
by mailsit.portnet.com.sg (mshttpd); Mon, 10 Dec 2007 00:20:00 +0800
Date: Mon, 10 Dec 2007 00:20:00 +0800
From: [email protected]
Subject: test mail from ims62
To: [email protected]
Message-id: <[email protected]>
MIME-version: 1.0
X-Mailer: Sun Java(tm) System Messenger Express 6.2-8.04 (built Feb 28 2007)
Content-type: text/plain; charset=us-ascii
Content-language: en
Content-transfer-encoding: 7bit
Content-disposition: inline
X-Accept-Language: en
Priority: normal
Original-recipient: rfc822;[email protected]
test
Questions:
1) How do i retain the functionality of using 1st value of the mail attribute as the address to be used?
I need the address reversing to retain '@portnet.com.sg' value.
2) I've not encountered the same problem when using ims52.
Is there a functional diffences here?Hi Shane,
Thank you for the reply.
We tried adding a mailequivalentaddress attribute, eg [email protected] but the From field still have the value from the mail attribute, eg [email protected]. Do we still need to configure anything to make this to work?
Besides we tried another option by doing the following:
a. Changing the following lines in options.dat file:
REVERSE_URL=ldap:///$V?mail?sub?$Q
to
REVERSE_URL=ldap:///$V$N?sub?$R
b. We ensure that '@portnet.com.sg' is the 1st value
c. adding a 'noreverse' keyword for the 'ims-ms' channel
And it works without the need for the mailequivalentaddress, is this a proper implementation?
any implications with putting 'noreverse' for ims-ms channel?
We're now considering changing of primary address attribute used.
Need your advise on the following:
1) Please advise how go about configuring another attribute to store the primary address.
2) Can we use mailAlternateAddress as the new primary address attribute?
If a totally new attribute is needed, please advise on the requirements for the creation of this attribute to be usable by Sun Messaging 2005Q4.
This change was mentioned in the administration guide.
Chapter 9 The Direct LDAP Algorithm and Implementation
Seeding the Reversal Cache
Next the primary address and any aliases attached to the user entry are considered. This information is used to seed the address reversal cache. It plays no part in the current address translation process. First, the primary address, personal name, recipient limit, recipient cutoff, and source block limit attributes are considered. The primary address is normally stored in the �mail� attribute; another attribute can be specified by setting the LDAP_PRIMARY_ADDRESS MTA option appropriately. (The primary address reverses to itself, of course.) There is no default attribute for any of the other attributes. If you want to use them, you must specify them with the LDAP_PERSONAL_NAME, (see Vacation Autoreply Attributes) LDAP_RECIPIENTLIMIT, LDAP_RECIPIENTCUTOFF, (see Limiting Message Recipients) and LDAP_SOURCEBLOCKLIMIT (see Specifying Absolute Message Size Limits) MTA options. The corresponding domain-level recipient limit, recipient cutoff, and source block limit attributes are also considered at this point. User-level settings completely override any domain-level setting.
Next, any secondary addresses are considered and a cache entry is made for each one. There are two sorts of secondary addresses: Those that undergo address reversal and those that do not. Both must be considered in order to properly seed the address reversal cache because of the need to check for message capture requests in all cases.
Secondary addresses that undergo reversal are normally stored in the mailAlternateAddress attribute. Another attribute can be specified by setting the LDAP_ALIAS_ADDRESSES MTA option. Secondary addresses that do not undergo reversal are normally stored in the mailEquivalentAddress attribute. Another attribute can be specified with the LDAP_EQUIVALENCE_ADDRESSES MTA option.
Edited by: sheeyong on Dec 10, 2007 5:25 AM -
AD group in multivalue attribute in OIA
Hi,
I am trying to load AD groups into OIA via csv feed using schema files. I have created a multivalue attribute adgroup in OIA, but when i am entering multiple AD groups in the csv feed file for one user as "ou=abc,dc=abc ; ou=def,dc=ab", so instead of getting separated into two groups it is getting split into 4 different values at commas, is there any way to handle this type of values in the feed file or OIA cannot handle this kind of multiple values.
Any pointers would be really helpful.Hi there abhishek,
By default the seperator char is a comma, that's why OIA splits it up into the "wrong pieces".
If you would like to use a different separator, you'll have to make a config adjustment in the database.
Find the NAMESPACES table and look for the AD resource you created (resource has to be created first). One of the other fields is the 'multivalue_separator' field, if you change this to a semicolon (;) it should work alright. You might want to restart the application for it to work and re-import the accounts.
I'm still looking for a more gentle way to commit the change instead of restarting OIA.
Hope this helps you!
Best regards,
Jeff -
Creating MultiValued Taxonomy Attributes using API
Hi All,
I'm trying to create an attribute in the taxonomy table that has text/multivalued type. I am able to create the attribute and set the type to text/multivalued, but I am not sure how to create the actual value set for it.
For example, a "Color" attribute would have a value set consisting of a list of possible colors, i.e. blue, green, yellow, etc...
In the AttributeInfo class, I see no methods to accomplish this.
Please let me know if you have any ideas!
Thanks!
Roman D.Hi Roman,
Please have a look at the AttributeInfo.GetFeatures() method. This returns an instance of FeatureDomain which holds an array/collection of FeatureValue instances. In your case it will be empty and you must add the FeatureValue instances.
Hope this helps,
Richard -
Error when updating a multivalued property that contains nested types
we cannnot update a CMS content that contains a multivalued property composed of nested types.
our CMS content is made of a custom type "t4" and contains the following properties :
- titre of type "String"
- compose of type "t1" where t1 is a CMS type containing the property titre of type "String" and doc of type "Binary".
we get the following stack trace when updating the "compose" property on the CMS document :
com.bea.content.RepositoryRuntimeException: Error retrieving multivalued nested property via given beginning of indexedName: compose, please check for the complete and correct indexedName on the Property in question. at com.bea.content.Node.getProperty(Node.java:454) at com.bea.content.federated.internal.NodeManagerImpl.getStream(NodeManagerImpl.java:669) at com.bea.jsptools.content.node.properties.editor.BinaryEditor.getValues(BinaryEditor.java:134) at com.bea.jsptools.content.node.properties.editor.NestedPropertyEditor.getValues(NestedPropertyEditor.java:90) at com.bea.jsptools.content.node.properties.editor.NestedPropertyEditor.getValues(NestedPropertyEditor.java:90) at content.node.nodeSelected.properties.NodePropertiesController.saveProperty(NodePropertiesController.java:1018) at content.node.nodeSelected.properties.NodePropertiesController.saveProperties(NodePropertiesController.java:973) at content.node.nodeSelected.properties.NodePropertiesController.saveProperties(NodePropertiesController.java:768) at sun.reflect.GeneratedMethodAccessor524.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.beehive.netui.pageflow.FlowController.invokeActionMethod(FlowController.java:854) at org.apache.beehive.netui.pageflow.FlowController.getActionMethodForward(FlowController.java:793) at org.apache.beehive.netui.pageflow.FlowController.internalExecute(FlowController.java:463) at org.apache.beehive.netui.pageflow.PageFlowController.internalExecute(PageFlowController.java:290) at org.apache.beehive.netui.pageflow.FlowController.execute(FlowController.java:338) at org.apache.beehive.netui.pageflow.internal.FlowControllerAction.execute(FlowControllerAction.java:51) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.access$201(PageFlowRequestProcessor.java:96) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor$ActionRunner.execute(PageFlowRequestProcessor.java:2025) at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors.wrapAction(ActionInterceptors.java:90) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processActionPerform(PageFlowRequestProcessor.java:2096) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInternal(PageFlowRequestProcessor.java:550) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcessor.java:838) at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServlet.java:634) at org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlowActionServlet.java:156) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) at org.apache.beehive.netui.pageflow.PageFlowUtils.strutsLookup(PageFlowUtils.java:1177) at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.executeAction(ScopedContentCommonSupport.java:622) at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.processActionInternal(ScopedContentCommonSupport.java:140) at com.bea.portlet.adapter.scopedcontent.PageFlowStubImpl.processAction(PageFlowStubImpl.java:107) at com.bea.portlet.adapter.NetuiActionHandler.raiseScopedAction(NetuiActionHandler.java:99) at com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedAction(NetuiContent.java:177) at com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedAction(NetuiContent.java:165) at com.bea.netuix.servlets.controls.content.NetuiContent.handlePostbackData(NetuiContent.java:219) at com.bea.netuix.nf.ControlLifecycle$2.visit(ControlLifecycle.java:179) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:351) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:361) at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:128) at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:361) at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:339) at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:330) at com.bea.netuix.nf.Lifecycle.runInbound(Lifecycle.java:162) at com.bea.netuix.nf.Lifecycle.run(Lifecycle.java:137) at com.bea.netuix.servlets.manager.UIServlet.runLifecycle(UIServlet.java:370) at com.bea.netuix.servlets.manager.UIServlet.doPost(UIServlet.java:229) at com.bea.netuix.servlets.manager.UIServlet.service(UIServlet.java:183) at com.bea.netuix.servlets.manager.SingleFileServlet.service(SingleFileServlet.java:240) at com.bea.netuix.servlets.manager.PortalServlet.service(PortalServlet.java:574) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:273) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) at com.bea.jsptools.servlet.PagedResultServiceFilter.doFilter(PagedResultServiceFilter.java:82) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) at com.bea.p13n.servlets.PortalServletFilter.doFilter(PortalServletFilter.java:292) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3191) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1979) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1886) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1317) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) at weblogic.work.ExecuteThread.run(ExecuteThread.java:181) Caused by: com.bea.content.RepositoryException: Error retrieving multivalued nested property via given beginning of indexedName: compose, please check for the complete and correct indexedName on the Property in question. at com.bea.content.internal.client.common.NestedHelper.getContainerIndex(NestedHelper.java:243) at com.bea.content.internal.client.common.NestedHelper.loopNested(NestedHelper.java:278) at com.bea.content.internal.client.common.NestedHelper.getNestedProperty(NestedHelper.java:162) at com.bea.content.internal.client.common.NestedHelper.getProperty(NestedHelper.java:102) at com.bea.content.internal.client.common.NestedHelper.getProperty(NestedHelper.java:126) at com.bea.content.Node.getProperty(Node.java:451) ... 98 moreI was able to reproduce this issue in the beta also. The issue has since been fixed. For the time being, it looks like you can just clear (delete) that particular value and re-add it w/ the updated binary.
-
Passing input for Multivalue command parameter
Hi All,
Currently we are on SAP Crystal Reports 2008 SP2 , We are building reports with command prompts.
Issue is when we have string Multivalue parameter like {?Country Name} , user has to enter inputs with single quotes as 'Mexico' , 'USA'..
However, is there anyway so that user can give input without single quotes? like : Mexico, USA
Regards
Guruprem
P.S : We are restricted to use only VARCHAR paramterOK. What this is what works for me in Oracle:
1) Create a blank report
2) Create a String prompt and call it 'Country'
3) Create a formula with this code:
stringvar array s;
numbervar i;
stringvar fin_s;
s := (Split({?Country},","));
for i := 1 to ubound(s) do
fin_s := fin_s + "'" + trim(s[i]) + "'" + if i = ubound(s) then "" else ",";
"("& fin_s &")";
4) Insert the report in question that contains the Command Object as a Subreport and place it on the Report Header
5) Right-click the Subreport > Change Subreport Links > Move the formula created in Step 3 to the pane on the right > Look for an option towards the bottom left that says 'Subreport parameter field to use' > Choose the Country prompt from the dropdown
6) Suppress all the sections of the Main Report except the Report Header
7) Run the report and type in the values as:
Mexico, USA, France, England and so on...
8) If you do not wish to use the Subreport method, create a Stored Proc that accepts a comma delimited string as the prompt value and handles the additional tasks like splitting the values by comma and adding single quotes and brackets.
-Abhilash -
Looking for CURSOR replacement, please suggest!
Hello Experts,
I having some master tables "#ACTION_MASTER" & "#RPT_MILE_MASTER" and a link table "#ACTION_MILE_RPT_LINK" showing their relationship.
And again I having a derive table "#TBL" to finally update the master table ''#ACTION_MASTER".
I am able to do the task with below approach and I would like to know how to optimize it, please suggest and let me know for any other information. Thanks!
CREATE TABLE #ACTION_MASTER (UID INT, ACTION_ID INT, IS_ACTV BIT)
INSERT INTO #ACTION_MASTER VALUES (1, 102, 1), (2, 103, 1)
--SELECT * FROM #ACTION_MASTER
CREATE TABLE #RPT_MILE_MASTER (UID INT, RPT_ID INT, MILE_ID INT, MILE_STATUS INT)
INSERT INTO #RPT_MILE_MASTER VALUES (1, 12, 1, 5), (2, 13, 2, 2)
--SELECT * FROM #RPT_MILE_MASTER
CREATE TABLE #ACTION_MILE_RPT_LINK (LINK_ID INT, ACTION_ID INT, RPT_ID INT, MILE_ID INT)
INSERT INTO #ACTION_MILE_RPT_LINK VALUES (1, 102, 12, 1), (2, 102, 13, 2), (3, 103, 13, 2)
--SELECT * FROM #ACTION_MILE_RPT_LINK
CREATE TABLE #TBL (RPT_ID INT, MILE_ID INT, MILE_STATUS INT)
INSERT INTO #TBL VALUES (13, 1, 5), (13, 2, 5)
--SELECT * FROM #TBL
DECLARE @ACTION_ID INT
DECLARE DB_CURSOR CURSOR FOR
SELECT DISTINCT ACTION_ID FROM #ACTION_MILE_RPT_LINK WHERE MILE_ID IN (SELECT MILE_ID FROM #TBL WHERE MILE_STATUS = 5)
OPEN DB_CURSOR
FETCH NEXT FROM DB_CURSOR INTO @ACTION_ID
WHILE @@FETCH_STATUS = 0
BEGIN
IF EXISTS(
SELECT * FROM #ACTION_MILE_RPT_LINK
WHERE MILE_ID IN (SELECT MILE_ID FROM #TBL WHERE MILE_STATUS = 5)
AND RPT_ID NOT IN (SELECT DISTINCT RPT_ID FROM #TBL)
AND ACTION_ID = @ACTION_ID)
BEGIN
DECLARE @COMPARE TABLE (RPT_ID INT, MILE_ID INT, MILE_STATUS INT)
INSERT INTO @COMPARE
SELECT RPT_ID, MILE_ID, 5 'MILE_STATUS' FROM #ACTION_MILE_RPT_LINK
WHERE MILE_ID IN (SELECT MILE_ID FROM #TBL WHERE MILE_STATUS = 5)
AND RPT_ID NOT IN (SELECT DISTINCT RPT_ID FROM #TBL)
AND ACTION_ID = @ACTION_ID
IF NOT EXISTS(
SELECT RPT_ID, MILE_ID, MILE_STATUS FROM #RPT_MILE_MASTER WHERE RPT_ID IN (SELECT RPT_ID FROM @COMPARE)
EXCEPT
SELECT RPT_ID, MILE_ID, MILE_STATUS FROM @COMPARE)
BEGIN
UPDATE #ACTION_MASTER SET IS_ACTV = 0 WHERE ACTION_ID = @ACTION_ID
END
END
ELSE
BEGIN
UPDATE #ACTION_MASTER SET IS_ACTV = 0 WHERE ACTION_ID = @ACTION_ID
END
FETCH NEXT FROM DB_CURSOR INTO @ACTION_ID
END
CLOSE DB_CURSOR
DEALLOCATE DB_CURSOR
--SELECT * FROM #ACTION_MASTER
DROP TABLE #ACTION_MASTER
DROP TABLE #RPT_MILE_MASTER
DROP TABLE #ACTION_MILE_RPT_LINK
DROP TABLE #TBLI don't understand the values in #TBL. Why are the manually inserted? Shouldn't they be the same as in #RPT_MILE_MASTER?
Further more I don't understand the condition in the cursor. Both tables have RPT_ID and MILE_ID in common. Either this is a real multivalued relationship, then why do you only filter by MILE_ID? It looks wrong.
You can rewrite your cursor internals without IF's to
WITH Compare ( RPT_ID, MILE_ID, MILE_STATUS )
AS ( SELECT RPT_ID ,
MILE_ID ,
5
FROM #ACTION_MILE_RPT_LINK
WHERE MILE_ID IN ( SELECT MILE_ID
FROM #TBL
WHERE MILE_STATUS = 5 )
AND RPT_ID NOT IN ( SELECT DISTINCT
RPT_ID
FROM #TBL )
AND ACTION_ID = @ACTION_ID
UPDATE #ACTION_MASTER
SET IS_ACTV = 0
WHERE ACTION_ID = @ACTION_ID
AND NOT EXISTS ( SELECT RPT_ID ,
MILE_ID ,
MILE_STATUS
FROM #RPT_MILE_MASTER
WHERE RPT_ID IN ( SELECT RPT_ID
FROM Compare )
EXCEPT
SELECT RPT_ID ,
MILE_ID ,
MILE_STATUS
FROM Compare )
AND EXISTS ( SELECT *
FROM #ACTION_MILE_RPT_LINK
WHERE MILE_ID IN ( SELECT MILE_ID
FROM #TBL
WHERE MILE_STATUS = 5 )
AND RPT_ID NOT IN ( SELECT DISTINCT
RPT_ID
FROM #TBL )
AND ACTION_ID = @ACTION_ID );
UPDATE #ACTION_MASTER
SET IS_ACTV = 0
WHERE ACTION_ID = @ACTION_ID
AND NOT EXISTS ( SELECT *
FROM #ACTION_MILE_RPT_LINK
WHERE MILE_ID IN ( SELECT MILE_ID
FROM #TBL
WHERE MILE_STATUS = 5 )
AND RPT_ID NOT IN ( SELECT DISTINCT
RPT_ID
FROM #TBL )
AND ACTION_ID = @ACTION_ID );
You can now remove the cursor and JOIN the cursors SELECT into both UPDATEs.
Maybe you are looking for
-
Stuck in recovery mode. Keep getting (-1) error when trying to update.
I have problems every single time I update my phone. This is getting ridiculous. Apple needs to step there god **** game up. My phones stuck in recovery mode and I use it for extremely important things. Any suggestions?
-
ITunes Version 7.7.1 is available
Download now to fix your bugs.
-
I had to change my email account as it had been hacked; once I did this I was not able to delete my icloud account on my ipad, because the old password doesn't work, and it can't be sent to the old email address. I need to change the icloud account
-
I am working on a project that has two camera angles. I named the camera angles, created a multicam clip, and sychronized the two angles manually in the event browser. Up to this point, everything works perfectly. The problem starts when I attempt to
-
Why is the help centre never available
When I access the Help Centre and select a topic, I always get the error message advising topic not available, check your network settings or try again later. I am a new user of a MacBook and wondering if anyone elkse has had this problem and how di