FIX: Display Names May Be Deleted When You Create a New Display Name (811354)



The information in this article applies to:

  • Microsoft Commerce Server 2002

SYMPTOMS

When you create display names for catalog product properties, the display names may be deleted. If this problem occurs, all display names for the language where you created the new display name are removed from the database.

RESOLUTION

To resolve this problem, change the edit_PropertyDefinition.asp file. To do this, follow these steps:
  1. Locate the following file in the folder that contains your Business Desk Web site:

    \Catalogs\Designer\edit_PropertyDefinition.asp

  2. Locate the line of code that includes the following:
    Function AddMultilingualAttributes
  3. Replace the function AddMultilingualAttributes with the following code:
    Function AddMultilingualAttributes (ByRef g_sXMLData, ByRef sAttributeBaseName, _
    									ByRef sFormName)
    	Dim xmlDoc, root, record
    	Dim sAttributeName, sState
    	Dim sLang, sLangNode, sPrevLang, sPrevLangNode
    
    	sLangNode = sFormName & "_lang"
    	sPrevLangNode = sFormName & "_prev_lang"
    	Set xmlDoc = Server.CreateObject("MSXML.DOMDocument")
    	xmlDoc.async = False
    	xmlDoc.LoadXML (g_sXMLData)
    	Set root = xmlDoc.documentElement
    
    	On Error Resume Next
    	if not root is nothing then
    		For Each record In root.selectNodes("//record[(@state = 'new') $or$ (@state = 'changed')]")
    			sState = record.getAttribute("state")
    			sLang  = sCultureName (record.selectSingleNode(sLangNode).text, g_xmlLanguages)
    			sAttributeName = sAttributeBaseName & "_" & sLang
    
    			If (sState = "changed") Then
    				sPrevLang = record.selectSingleNode (sPrevLangNode).text
       ' Notice the following line:
    				If (UCASE(sPrevLang) <> UCASE(sLang) Then
    					g_oCatMgr.RemovePropertyAttribute sAttributeBaseName & "_" & sPrevLang
    				End If
    			End If
    			g_oCatMgr.AddPropertyAttribute sAttributeName, STRING_TYPE, 128
    			' If the property attribute already exists, ignore the error.
    			If (Err.Number = &h8898010F) Then Err.Clear
    			Set g_rsAttributes = Nothing
    		Next
    	end if
    
    	Set AddMultilingualAttributes = root
    End Function
  4. Save the modified file, and then restart Business Desk.

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.

Modification Type:MajorLast Reviewed:8/11/2003
Keywords:kbfix kbbug KB811354 kbAudDeveloper