Friday, December 21, 2012

Delete Triggers and Classes from Production in Salesforce using Eclipse IDE

In order to remove a class or trigger from production using the force.com ide you can do the following:

1. Pull up the XML file associated to the class/trigger, it will look something like this:

<?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>21.0</apiVersion>
    <packageVersions>
        <majorNumber>1</majorNumber>
        <minorNumber>3</minorNumber>
        <namespace>households</namespace>
    </packageVersions>
    <status>Active</status>
</ApexClass>
2. Where is says <status> replace "Active" with either "Inactive" or "Deleted" then save the XML.
3. Now deploy this class/trigger to production and it will be removed!

Friday, November 2, 2012

Goldmine Query for Primary Email


SELECT contact1.ACCOUNTNO AS CustomerID, contact1.contact AS Contact, COALESCE(em.contsupref, '')+COALESCE(em.address1, '') AS Email, em.mergecodes
FROM contact1
 JOIN contsupp em on contact1.accountno=em.accountno
WHERE em.contact='E-Mail Address'
 AND em.rectype LIKE 'P'
 AND em.zip LIKE '_1%'

Monday, October 22, 2012

Goldmine - Exporting History and Email Bodies in One Step

STEP 1
First create a view in SQL that will do a left join of the ContHist and Mailbox tables. This means that it will pull in every single ContHist record and only pull in information from the Mailbox table where there is a match on the field they are joined on.

NOTE: I am only including the columns that I typically use in a migration, there are more ContHist and Mailbox columns to be aware of. Also I am only pulling the first 4,000 characters of both the notes and mail messages because of the limitations of Excel. As part of this view we are converting both Notes (on ContHist) and RFC822 (on Mailbox) from blob to varchar(4000).

SQL QUERY 1


GO
CREATE VIEW [dbo].[HistoryANDMail]
AS

Select

c.USERID, c.ACCOUNTNO, c.RECTYPE, c.ONDATE, c.REF as [Subject History - REF],
CAST(CAST(c.NOTES AS varbinary(4000)) AS varchar(4000)) AS NOTES,
c.LINKRECID, c.recid,

CAST(CAST(m.RFC822 AS varbinary(4000)) AS varchar(4000)) AS RFC822

From Conthist as c
Left Join MAILBOX as m
ON c.LINKRECID = m.recid
WHERE c.ACCOUNTNO is not null and datalength(c.ACCOUNTNO)>0

END SQL QUERY 1


STEP 2
Now you have a view that contains all ContHist data converted and ready to be exported to excel. I like to try to strip the HTML before going into excel because they excel files can be very large and hard to deal with. Here is the process for this. Following a great blog post you can create a function that removes HTML from specific columns.

Essentially copy and paste this into a query and run it, this will create a user defined function we will use later.

SQL QUERY 2


CREATE FUNCTION [dbo].[udf_StripHTML]
(@HTMLText VARCHAR(MAX))
RETURNS VARCHAR(MAX)
AS
BEGIN
DECLARE @Start INT
DECLARE @End INT
DECLARE @Length INT
SET @Start = CHARINDEX('<',@HTMLText)
SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText))
SET @Length = (@End - @Start) + 1
WHILE @Start > 0
AND @End > 0
AND @Length > 0
BEGIN
SET @HTMLText = STUFF(@HTMLText,@Start,@Length,'')
SET @Start = CHARINDEX('<',@HTMLText)
SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText))
SET @Length = (@End - @Start) + 1
END
RETURN LTRIM(RTRIM(@HTMLText))
END
GO

END SQL QUERY 2

STEP 3
Now we need to run an export task sending a query we will write into an excel file. Right click on the database > tasks > export data... When it comes time for the query enter the following.

NOTE: this has to be done in sets of 50,000 due to the size limitation of a spreadsheet in excel 2007 and I was unable to run this on a spreadsheet using 2010.



SQL QUERY 3


SELECT

USERID, ACCOUNTNO, RECTYPE, ONDATE, [Subject History - REF], 
dbo.udf_stripHTML(NOTES) as NOTES, LINKRECID, recid, dbo.udf_stripHTML(RFC822) as RFC822

from 

( SELECT
    ROW_NUMBER() OVER (ORDER BY recid ASC) AS ROW_NUMBER,
    *
  FROM dbo.FINALHistoryANDMail
) foo
WHERE ROW_NUMBER <= 50000


END SQL QUERY 3


Hope this helps! 

Strip HTML from SQL Columns

Just came across this, great info!

http://blog.sqlauthority.com/2007/06/16/sql-server-udf-user-defined-function-to-strip-html-parse-html-no-regular-expression/


Goldmin Use:
What I did was create a view converting the image fields in SQL to varchar, then when exporting the query I ran the udf_stripHTML(column) function so when the data is being exported to excel the HTML is coming off then.

SQL Row Count for All Tables

There have been times I want to see how many rows are in each table of a database without going into each table and running a query to see the row count. This returns a list of all tables with more than 2 rows of data and the row count for each table.

SELECT OBJECT_NAME(OBJECT_IDTableNamest.row_count
FROM sys.dm_db_partition_stats st
WHERE index_id 2
ORDER BY st.row_count DESC

Wednesday, September 26, 2012

Remove HTML Tags Using Find and Replace

Here is a quick and easy way to remove HTML tags completely by using the Find and Replace function in Microsoft.

Put this in the find box: \<*\>
Leave the Replace box Empty
Check the 'Use Wildcard' box
Replace All!

Wednesday, September 12, 2012

Exporting Emails from Goldmine

Converting companies from Goldmine to Salesforce.com presents a number of difficulties, one of which was exporting emails.

Because files must be in CSV format in order to import to Salesforce.com we need to write a query that will take the data stored int he Mailbox.dfb table and export it to excel. Below are the steps I went through recently to accomplish this.

1. The query used to create a view that converts the RFC822 image column to a text field.
GO
CREATE VIEW [dbo].[vMailbox]
AS
SELECT     LINKRECID, FLAGS, USERID, FOLDER, FOLDER2, ACCOUNTNO, CREATEON, MAILSIZE, MAILDATE, MAILTIME, MAILREF, LOPRECID, MAILID, EXT,
                      CAST(CAST(RFC822 AS varbinary(MAX)) AS varchar(4000)) AS RFC822, recid
FROM         dbo.MAILBOX

NOTE: I had to insert 'varchar(4000)' instead of varchar(max) because when I didn't put a cap on the size of the email messages they would be too large and produce errors when exporting to excel. This limits the email message size to 4,000 characters, but that's better than nothing!

2. Export this new view to an excel document.

  • Right click on the database > Tasks > Export Data...
  • Choose a Data Source:
    • Next
  • Choose a Destination: 
    • Destination: Microsoft Excel
    • Browse: [Give your files a name and destination]
    • Excel Version: Microsoft Excel 97-2003 (I have had problems trying this with 2007)
    • Next
  • Write a query to specify the data to transfer
    • Copy and paste the query below into the text area (this pulls data from the view created)
      • SELECT LINKRECID, FLAGS, USERID, FOLDER, FOLDER2, ACCOUNTNO, CREATEON, MAILSIZE, MAILDATE, MAILTIME, MAILREF, LOPRECID, MAILID, EXT, CAST(CAST(RFC822 AS varbinary(MAX)) AS varchar(4000)) AS RFC822, recid FROM dbo.vMAILBOX
    • Next
  • Select Source Tables and Views
    • Next
  • Review Data Type and Mapping
    • Next
  • Save and Run Package
    • Check 'Run Immediately'
    • Finish >>|
  • Complete the Wizard
    • Finish

If the number of Mailbox files is in excess of 65,000 you may need to pull the data out in batches of 50,000 or 60,000 because excel 97-2003 will allow a maximum of a little over 65,000 rows in a file.Refer to my previous post about limiting the size of an output for more details. http://cloudrevelations.blogspot.com/2012/04/limit-results-in-sql-server-using.html





Tuesday, September 11, 2012

SQL Query that Excludes Null's and Empty Values


select accountno, notes
from contact1
where notes is not null and datalength(notes) > 0

Wednesday, August 15, 2012

Excel Formula to Remove Last Word from Cell

I have found both of these formula to work well to removing the last word from a string in a cell in excel.


=LEFT(A1,LOOKUP(2^15,FIND(" "," "&A1,ROW(INDIRECT("1:"&LEN(A1)))))-1)

=LEFT($A2,SEARCH("#",SUBSTITUTE($A2," ","#",LEN($C2)-LEN(SUBSTITUTE($A2," ","")))))

Monday, August 13, 2012

SQL Conversion Query's


Below are some querys that will help in converting data in SQL to a format more friendly with excel.




This can be used to convert a column to varchar(max) which works well with Excel:

Select
convert(varchar(max),convert(ntext,TaskToDo)) as TaskToDo
from t_Task



This is used to replace carriage returns with spaces:

Select
REPLACE(taskitem, Char(13) + Char(10), ' ') as TaskItem
from t_Task



Replace and convert at the same time:

Select 
REPLACE(convert(varchar(max),convert(ntext,TaskToDo)), Char(13) + Char(10), ' ')
from t_Task

Monday, July 16, 2012

Conga Mail Merge - Display All Merge Fields // Insert Merge Field Shortcut

There are quite a number of little quirks that are nice to know when using the Salesforce.com AppExchange app Conga Composer to create merge documents. While calling their support line is very helpful, sometime I feel like I need to give them a break.

Here is a function I use all the time..

Display all Merge Fields in Word:
ALT + F9

Insert Merge Field
ATL + I + F + M + M

Tuesday, June 12, 2012

Migrate Reports from Salesforce Production to Production Using Ecplise

When moving from Sandbox to production you have the option of using change sets to quickly move reports, objects, triggers, classes ect. to a production enviornment. I was posed the problem of moving a number of reports from one Production Org to another Production Org that would have the same fields and same configuration.

With production org's not able to connect to other production org's via change sets I had to get creative, here is what I did.


CAUTION: When handling metadata components from a production enviornment in eclipse you must be VERY careful as you can screw things up in a hurry! I suggest playing around with this in a developer org before doing anything in production.



  1. Connect Eclipse to the production environment of both org's.
  2. When downloading a project in Eclipse, be sure to select all metadata components.
  3. One of your folders will be Reports.
  4. Open up the report you want to recreate. It will open a window, at the bottom of the page change your option from 'Design' to 'Source'
  5. In the instance you are going to migrating the report right click on the report folder where you want the report to appear, hover over 'New' and click the 'Other..' option.
  6. Under the 'XML' folder click 'XML' then 'Next'
  7. You can give the report the same name as the one being copied, so 'SampleReport.report' would work.
  8. Next you need to copy the XML code from step 4 and paste it into this new XML file you have created. 
  9. NOTE: if the fields that are in the report are not consistent between the org's you will get errors
  10. Finally click save, then right click on the report folder and select 'Force.com' > 'Save to Server' and that's it!




Tuesday, May 29, 2012

Adding a Carriage Return in Excel

To add a carriage return to a cell in excel it is as simple as ALT + Return.

In order to use  a carriage return in a formula simply use char(10) like this.

=A1&char(10)&B1

or if you want multiple returns just keep adding char(10)

=A1&char(10)&char(10)&char(10)&char(10)&B1

NOTE: IF this is not working you may need to format the cells you are trying to do this with to 'Wrap Text'

Monday, April 30, 2012

Limit Results in SQL Server Using Row_Number

Here is a sample query that limits the number of results in a query to 500. The first bold item is the column the results need to be ordered by, and the second bold item is the table that your are pulling the data from. Everything else can be used as is to pull all columns from a table and limit the results to 500 rows.


SELECT * FROM
( SELECT
    ROW_NUMBER() OVER (ORDER BY ikeyid ASC) AS ROW_NUMBER,
    *
  FROM A_Table
) foo
WHERE ROW_NUMBER <= 500


You can also adjust the where statement in order to grab a range of records. I had to do this in order to pull out chunks of a huge table rather than pulling them all at once.

WHERE ROW_NUMBER > 0 AND ROW_NUMBER <= 50000

WHERE ROW_NUMBER > 50000 AND ROW_NUMBER <= 100000

WHERE ROW_NUMBER > 100000

Running this query 3 times with the 3 different where statements listed above will result in 3 results sets that have 50,000 rows a piece and the final query pulls in any row over the first 100,000.



Wednesday, April 25, 2012

Truncating Text In a Trigger Using APEX


Recently I was asked to put a trigger together that copied a Long Text Area value that can hold up to 32,000 characters to a Text Area field that can only hold up to 255 characters. Naturally when you try to copy a value larger than 255 characters to a Text Area field an error will be thrown. So I had to figure out how to basically truncate a string value to 255 characters in order to assign it to a Text Area field.

The string method 'substring' does the trick! What is does is much like in excel using the left(), mid() and right() formulas you give it a starting place and tell it how many characters to grab. Salesforce's basic example is as follow:


'hamburger'.substring(4, 8); 
// Returns "urge" 
    

'smiles'.substring(1, 5);
// Returns "mile" 


My problem was a bit more complex as I had to include logic that would say only perform this truncation when the Long Text Area value is larger than 255 characters. If you try to truncate a string value using substring to a length longer than the string itself you will get an error. Here is the code I used for this instance.



   string EX1 = Sample.LongTextArea1__c;
   string EX2 = Sample.LongTextArea2__c;
   
   //Get sizes of Goal and Strategy in the event they are longer than 255 char and need to be truncated
   Integer size1 = EX1.length();
   Integer size2 = EX2.length();
   
   //If Goal or Strategy are longer than 255 characters they need to be truncated
   if(size1> 255){
         EX1= EX1.substring(0, 255);
   }
   if(size2 > 255){
         EX2 = EX2.substring(0, 255);
   }



I retrieve the length of the strings that were assigned the value of the Long Text Area (EX1 and EX2) and if those lengths are more than 255 characters then I truncated it with the substring method. If they are shorter than the maximum length of a Text Area (255) I do not adjust them at all.

Below is a link to the String Methods as defined by Salesforce.com.

http://www.salesforce.com/us/developer/docs/apexcode/index.htm 

Wednesday, April 11, 2012

Setting Default Values to Record - Using Visualforce to Override New Button

The goal is to set some default values to a record, there are times that you can not set the proper default value to fields when using the 'Set Default Value' option on a field. A lookup value can be a prime example and that is why I had to research this.

You need 2 things, an apex class that puts together the URL for the page, and a Visualforce page that basically outputs the URL that is generated in the class.

Below are my two items, the Visualforce page code as well as the class that it invokes.

Visualforce Page Code:

<apex:page standardController="Account_Child__c" extensions="DefaultAccountController" action="{!putDefault}">

</apex:page>

APEX Class Code:

 public class DefaultAccountController {
public DefaultAccountController(ApexPages.StandardController controller) {
    }
 
    public PageReference putDefault() {  
String tester = getAccount().Name;
//creating a page reference
PageReference pageRef;      
//Variables to hold the URL parameters  
String retURL =  ApexPages.currentPage().getParameters().get('retURL');
String retIDName =     ApexPages.currentPage().getParameters().get('CF00NC00000053NfO');      
String retAcctID =     ApexPages.currentPage().getParameters().get('CF00NC00000053NfO_lkid');
//Variables from the parent account
List <Account> acct = [select id, name, phone,industry from Account where id =:retAcctID];
string acctNum = acct[0].phone;
string acctInd = acct[0].industry;
//The URL that will be used in the new VF page
pageRef = new PageReference('/a0A/e?CF00NC00000053NfO='+retIDName+'&CF00NC00000053NfO_lkid='+retAcctID+'&Name='+acctNum+'&00NC00000053NfY='+acctInd+'&retUrl='+retURL);  
//adding nooverride to prevent infinite loop  
pageRef.getParameters().put('nooverride', '1');          
pageRef.setRedirect(true);          
//Item that is returned when this class is invoked is the PageRef URL
return pageRef;
}

The highlighted items below should appear on a single line of code.

This is a link to the developer.force.com post that was helpful in creating this.

http://boards.developerforce.com/t5/General-Development/How-to-set-standard-field-to-a-Default-value/m-p/333595/highlight/true#M60358

Tuesday, April 10, 2012

Exporting Queries from SQL to Excel

The easiest way to export a table from SQL is just running the query then selecting all of the results and copying it with headers then pasting it to excel. Sometimes that does not work though, and here is a workaround I have found if that does not work.

After writing the query, lets say "SELECT * from Contact.dbf" in SQL Server Management Studio (SSMS) follow these steps.


  • Create a text file on your computer, lets say output.txt
  • In SSMS Query > Results To... > Results to File
  • In SSMS Tools > Options... > Query Results > SQL Server > Results to Text
    • Next to output format select 'Custom Delimiter'
    • Next to custom delimiter you can put anything, but I have found that the pipe symbol works well, so I enter this symbol: |
    • Click OK
  • In SSMS right click on your database and select 'New Query' the write your query and select Run Query
    • IMPORTANT: the steps above must be completed before you open up the new query window.
  • Locate your file on your computer and select it then press ok (You will have to change the option to all files rather than the .rpt file it wants)
  • Finally open up excel and open up the text file, you will be prompted with a screen where you can set the | as the delimiter, and that's it!


Below is a link to the thread that assisted my in this.

http://stackoverflow.com/questions/6354130/is-there-a-select-into-outfile-equivalent-in-sql-server-management-studio

Monday, April 9, 2012

Mass Exporting Tables from Access to Excel

Recently I have been working with some Access databases that have large amounts of tables in them. Reviewing data in numerous Access tables can be burdensome and it would be easier to review them is they were in Excel.

I found this post that runs some code that does exactly what I need, here are the steps.

  • In Access under the 'Database Tools' option click 'Visual Basic'
  • In the new window click 'Run' then 'Run Macro'
  • Type a name in like "AccessMacro" then click 'Create'
  • In the new screen that appears copy and paste the code below replacing anything that was originally in the new window

Sub AccessMacro()
Dim tbl As TableDef
For Each tbl In CurrentDb.TableDefs
  DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, tbl.Name, "C:\Users\Josh\Desktop\NexGen\Test2.xls", True, tbl.Name
Next
End Sub

You will need to adjust the area that is in bold above to the proper path on your computer when the file will be exported to.

Next click Run, then run macro and that's it!

If you hit an error that says 'User Defined Type Not Defined' simply do the following:

Tools > Reference... > (Check) Microsoft DAO 3.6 Object Library > OK

Below is the link to the original site that I found this information:

http://stackoverflow.com/questions/4036772/how-to-export-all-tables-from-an-access-database-into-excel-a-sheet-for-each-t

Wednesday, March 21, 2012

Exporting Old (Archived) Tasks

Recently I was needing to extract all activity history to do a mass reassignment of the tasks. I used APEX data loader and the export function to pull out what I thought was all tasks. I noticed that the dates were only dating back about a year.

Apparently items with the following criteria are marked as 'Archived' in Salesforce.

  • Events with a create date greater than 365 days old
  • Closed tasks with a due date greater than 365 days old
  • Closed tasks without a due date that were created more than 365 days ago

In order to pull out ALL activities you need to use the Export All function in APEX data loader. A single export of all activities with no criteria will return all archived and non-archived results.

Here is a link to the Salesforce support question. 

Thursday, March 15, 2012

Entering a Specific Date in APEX

I was trying to assign a calendar date like this

q2.Calendar_Date__c = '03-14-2012';

That doesn't work! You have for create a new Date Instance like this....

q2.Calendar_Date__c = date.newInstance(2011, 03, 14);


This is the board the I found this on: (Thank you Bob Buzzard!)

http://boards.developerforce.com/t5/Apex-Code-Development/Date-Variable/m-p/197399/highlight/true#M33430

Wednesday, February 22, 2012

Getting File Extensions from a Folder

Just found this....

I was needing to find a way to pull out all of the file extensions in bulk so they could be imported into Salesforce in one way or another.

Simply open the command prompt and type the following

dir c:\users\josh\desktop\foldername /b /s >c:\users\josh\desktop\outputfile.txt

The /b gives you a 'bare' file with just the extensions and nothing else

The /s gives you all of the sub-folders within that folder that you are looking into

The '>c:\users\josh\desktop\outputfile.txt' outputs the file into a text document

http://spreadsheetpage.com/index.php/tip/getting_a_list_of_file_names/

Thursday, February 9, 2012

Excel Contains Formula

Just a quick little formula that checks to see if a cell contains specific text. This one checks to see if the cell contains the "@" sign, if it does then it puts an X in the cell if not then it will be left blank.

=IF(ISNUMBER(SEARCH("@",A2)),"X","")

Friday, February 3, 2012

Exporting Attachments from Salesforce.com

When you export attachments from Salesforce.com you can choose to include the attachments in the export however when SF exports the attachments it does not give you the actual files. What they give you is quite useless...

I found this tool that was put together by someone that wanted to extract all attachments from Salesforce and because they wouldn't give them in the data extract he created this tool.

Below is a link to download the tool called FileExporter. It works great!


https://sites.google.com/site/ezrakenigsberg/blog/fileexporterexportattachmentscontentordocuments

Tuesday, January 24, 2012

Multi-Select Pick List Video

A wile back I posted a set of instructions on how to update a Multi-Select Pick List into a single cell in excel to be imported to Salesforce with Data Loader. Here is a video to demonstrate!





Below is a link back to the original post:

Friday, January 20, 2012

Salesforce to Salesforce Automation Trigger

Here are a couple links for some Salesforce to Salesforce trigger automation. The first is the basics on S2S that shows how to set it up and a quick snippet of code showing you how to share automatically with APEX. The second is a developer helping another developer work through some problems he had in the code, both of which may be helpful...

http://wiki.developerforce.com/page/An_Introduction_to_Salesforce_to_Salesforce

http://boards.developerforce.com/t5/Apex-Code-Development/Can-you-automate-record-sharing-in-Salesforce-to-Salesforce-with/m-p/324669/highlight/true#M57503

Tuesday, January 17, 2012

Converting 15 Digit ID to 18 Digits Case Sensitive ID

Just found this great video that walks you through how to convert 15 digit SF Ids to 18 digits so they will be case sensitive. The 15 digit Salesforce Id that you see in reports is not case sensitive therefore it can not be used in vlookups with excel or any other program that requires case sensitivity. The 18 digit Salesforce Id however IS case sensitive, so this is a little video that shows you how to convert it...

http://www.blog.bdgreen.it/2011/01/09/salesforce-ids-and-the-15-18-digit-problem/

If you are working with data already in Salesforce and need to convert the 15 digit SF ID to 18 there is a formula field function called CASESAFEID(id) that will display the SF ID as a 18 digit case sensitive id in Salesforce.

Monday, January 16, 2012

Mass Delete Field Values in Salesforce with Apex Data Loader

This is a quick little trick that was giving me trouble recently so I figure I'd share.

I wanted to mass delete field values in Salesforce.com. The initial plan was to just create a load file that contained salesforce Id's and header's but no values for the records. The idea is that it updates the field with the blank value that is listed. After a couple try's this was not working at all, it said that all items were successful, but no field values were being deleted from Salesforce.

Here is the solution: I used the exact same file with Salesforce Id's and blank values for every record. However in APEX Data loader you have to go into the Settings and click the check box called "Insert Null Values". Then load them up and it will clear out the contents of the fields!


In Short:
Settings > Check "Insert Null Values"
Run an update on Salesforce Id's with blank cells

Wednesday, January 4, 2012

A Few More Excel Tricks (Cell Search, Concatenation, Text to Column)

Just used a couple of helpful excel tricks that it would be nice if they were documented.

The first problem was that I had a document I was trying to import as an attachment and in a very random way about 20% of the path names had the text "~~SYNCSTAMP=1236547" where the numbers were completely random every time. So I wanted to tag every instance that had just "~~SYNCSTAMP=", here is the formula I used to search for this string. I had to do this because with random numbers the find and replace function would not work.

 =IF(ISNUMBER(SEARCH("~~SYNCSTAMP=",E2)),"x","")

Where the specified text appears in the cell it is marked with an 'x' and if it does not appear then it is left blank. Next I just sorted the column to only have the ones with the SYNCESTAMP at the top.

An easier use of this formula to search for just '@' would be:

         =IF(ISNUMBER(SEARCH("@",E2)),"x","")

____________________________________________________________________________

Concatenates the ending off of the cell.

=left(E2,len(E2)-26)

Where the 26 was the total number of characters I wanted to chop off at the end.


____________________________________________________________________________

Text to Columns with Carriage Returns:

When breaking things up from a single cell using Text to Columns you can specify that to be on Carriage Returns (ALT + Enter) in a cell. Use the 'Other' option and while in the text box use CTRL + J and nothing will appear but that will break the cells out that were on separate lines to separate cells.