Converting Name field into 3 Separate Fields in Crystal Reports

My name field consists of one full name field, in this format: Last, First M.  I need to take this field and separate it into 3 different name fields: First Name Last Name and Middle Initial.  How do I do this in Crystal Reports V. 11?  Thanks for your time.
Regards
carolannpAsked:
Who is Participating?
 
GJParkerConnect With a Mentor Commented:
Try these :

//@FirstName
If Count(Split({Table.Field}, ',')) >= 1 Then
      Split({Table.Field}, ',')[1]
Else
      ''

//@LastName
If Count(Split({Table.Field}, ',')) >= 2 Then
      Split(Split({Table.Field}, ',')[2], ' ')[1]
Else
      ''

//@Initial
If Count(Split({Table.Field}, ' ')) >= 2 Then
      Split({Table.Field}, ' ')[2]
Else
      ''
0
 
mlmccCommented:
Try this

LastName formula
Split({YourNameField},",")[1]

FirstName Formula
Split(Split({YourNameField},",")[2])[1]

MiddleName Formula
Split(Split({YourNameField},",")[2])[2]

mlmcc

0
 
GJParkerCommented:
If the format you have shown is consistent then you can simply split the fields at the space i.e.

//@Lastname
Split({Table.Field}, ' ')[1]

//@FirstName
Split({Table.Field}, ' ')[2]

//@Initial
Split({Table.Field}, ' ')[3]

HTH
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
carolannpAuthor Commented:
If I try either above options to get the correct middle initial I get the following error when I actually run the report:
A subscript must be between 1 and the size of the array.  Thanks.
0
 
GJParkerCommented:
I take it you must have instances where no middle initial exists.

Try this for your initial formula
If Count(Split({Table.Field}, ' ')) >= 3 Then
      Split({Table.Field}, ' ')[3]
Else
      ''
it's probablu also a good idea to add the same test to the other 2 formulas as well, remembering to change teh test to >= 1 and >= 2

HTH
0
 
carolannpAuthor Commented:
Yes, you are correct in that some names don't have an initial, but your above example still isn't giving me the middle initial.  Example of names: Smith,John T.  There is a comma after Smith and a space after John.  Does this help?  Thanks.
0
 
carolannpAuthor Commented:
Still not quite right:
The above //@LastName and //@FirstName should be switched around.  I am getting the correct middle initial and the LastName, but the FirstName is containing the middle initial.
//@LastName
If Count(Split({staff_current_demographics.name},','))>=1 then
Split({staff_current_demographics.name},',')[1]
else
''
@FirstName
If Count(Split({staff_current_demographics.name},','))>=2 then
Split(Split({staff_current_demographics.name},',')[2],'')[1]
else
''
@Initial
if Count(Split({staff_current_demographics.name},' '))>=2 then
Split({staff_current_demographics.name}," ")[2]
else
''
Example FirstName: John T
Thanks.
0
 
GJParkerConnect With a Mentor Commented:
You misse dth espace out on the second line, where I have put the % sign should be a space

@FirstName
If Count(Split({staff_current_demographics.name},','))>=2 then
Split(Split({staff_current_demographics.name},',')[2],'%')[1]
else
''
0
 
carolannpAuthor Commented:
@FirstName I changed to:
If Count(Split({staff_current_demographics.name},','))>=2then
Split(Split({staff_current_demographics.name},",")[2])[1]
else
''
This works now.  All names are now separated correctly.  Thanks for your time.  I will close out this request.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.