The table is broken in 2 ways, the key is missing and so new lists are added as nID –1 plus the Design Object ID is incorrect.
The above is solved as follows: -
Create design reference tables
A reference table is required to determine the correct design objects for each content list of the site. The design object Ids will vary from one site to another.
- Close Actinic
- Browse to your site folder and locate the 'ActinicCatalog.mdb' file and take a backup
- Then browse to 'C:\Program Files\Actinic v9\Original\'
- Open 'ActinicCatalog.mdb' from this folder with MS Access.
- First we need to create a new table called 'ContentListsRef' by doing the following:-
1. Go to the 'View' menu and select ' Database Objects | Queries'
2. Go to the 'Insert' menu and select 'Query'
3. Select 'Design View' from the list of options and click 'OK'
4. Click 'Close' on the 'Show Table' window if it appears
5. Go to the 'View' menu and select 'SQL View'
6. Replace the contents of this window with the following SQL:
SELECT ContentLists.nID, ContentLists.nDesignObjectID, DesignObjects.sName
INTO ContentListsRef
FROM ContentLists
INNER JOIN DesignObjects
ON ContentLists.nDesignObjectID = DesignObjects.nID;
7. Go to the 'Query' menu and select 'Run'
8. Click 'Yes' on the message that appears - Now open the site ActinicCatalog.mdb with Access (so you have two databases open at the same time)
- Copy the 'ContentListsRef' table from the 'Original' database (Structure and data) to the site database using the same name
- Copy the 'ContentLists' table from the 'Original' database (Structure and data) to the site database giving it a new name of ContentListsDefault
- Close the 'Original' database. The rest of the work is only on the site database.
It is possible that you have custom lists which use the same Ids as system defined lists. To make the fix easier we shall renumber the custom lists to be outside the range of the system lists.
- Create a new query to identify your custom lists by following steps 1 to 8 above but using the following SQL instead
SELECT ContentLists.nID, ContentLists.nDesignObjectID, DesignObjects.sName, DesignObjects.sSystemVersion
FROM ContentLists
INNER JOIN DesignObjects
ON ContentLists.nDesignObjectID = DesignObjects.nID
WHERE (((DesignObjects.sSystemVersion) Is Null))
ORDER BY ContentLists.nID; - Make a note of the 'nID' and 'nDesignObjectID' of each list then open the 'ContentLists' table, locate the records with the noted IDs and set the nID to 200 for the first one, 201 for the second etc.
- Create a new query as per steps 1 to 8 above but use this SQL instead:-
DELETE ContentLists.nID
FROM ContentLists
WHERE (((ContentLists.nID)=-1));
- Open the 'ContentLists' table by double-clicking on it
- Go to the 'View' menu
- Select 'Design View'
- Then go to the 'View' menu and select 'Indexes'
- If the table of indexes is not empty then delete each index
- Close the index dialog
- Still in the 'Design View', right click the 'nID' field and select 'Primary Key'
- Go to the 'File' menu and select 'Close’, you will need to confirm the design change
- Create a new query as per steps 1 to 8 above but use this SQL instead:-
INSERT INTO ContentLists ( nID, nLastRowColumnCount, bUseDifferentHtml, nLayoutChoice, sStartOfList, sEndOfList, sEmptyCell, sEmptyItem, sBeforeSingleItem, sAfterSingleItem, sFirstRowFirstColBefore, sFirstRowFirstColAfter, sFirstRowMidColBefore, sFirstRowMidColAfter, sFirstRowLastColBefore, sFirstRowLastColAfter, sMidRowFirstColBefore, sMidRowFirstColAfter, sMidRowMidColBefore, sMidRowMidColAfter, sMidRowLastColBefore, sMidRowLastColAfter, sLastRowFirstColBefore, sLastRowFirstColAfter, sLastRowMidColBefore, sLastRowMidColAfter, sLastRowLastColBefore, sLastRowLastColAfter, sOddRowsOddColBefore, sOddRowsOddColAfter, sOddRowsEvenColBefore, sOddRowsEvenColAfter, sEvenRowsOddColBefore, sEvenRowsOddColAfter, sEvenRowsEvenColBefore, sEvenRowsEvenColAfter, sFirstRowBefore, sFirstRowAfter, sMiddleRowBefore, sMiddleRowAfter, sLastRowBefore, sLastRowAfter, nMidRowColumnCount, nDesignObjectID, sSystemVersion, nFirstRowColumnCount )
SELECT ContentListsDefault.nID, ContentListsDefault.nLastRowColumnCount, ContentListsDefault.bUseDifferentHtml, ContentListsDefault.nLayoutChoice, ContentListsDefault.sStartOfList, ContentListsDefault.sEndOfList, ContentListsDefault.sEmptyCell, ContentListsDefault.sEmptyItem, ContentListsDefault.sBeforeSingleItem, ContentListsDefault.sAfterSingleItem, ContentListsDefault.sFirstRowFirstColBefore, ContentListsDefault.sFirstRowFirstColAfter, ContentListsDefault.sFirstRowMidColBefore, ContentListsDefault.sFirstRowMidColAfter, ContentListsDefault.sFirstRowLastColBefore, ContentListsDefault.sFirstRowLastColAfter, ContentListsDefault.sMidRowFirstColBefore, ContentListsDefault.sMidRowFirstColAfter, ContentListsDefault.sMidRowMidColBefore, ContentListsDefault.sMidRowMidColAfter, ContentListsDefault.sMidRowLastColBefore, ContentListsDefault.sMidRowLastColAfter, ContentListsDefault.sLastRowFirstColBefore, ContentListsDefault.sLastRowFirstColAfter, ContentListsDefault.sLastRowMidColBefore, ContentListsDefault.sLastRowMidColAfter, ContentListsDefault.sLastRowLastColBefore, ContentListsDefault.sLastRowLastColAfter, ContentListsDefault.sOddRowsOddColBefore, ContentListsDefault.sOddRowsOddColAfter, ContentListsDefault.sOddRowsEvenColBefore, ContentListsDefault.sOddRowsEvenColAfter, ContentListsDefault.sEvenRowsOddColBefore, ContentListsDefault.sEvenRowsOddColAfter, ContentListsDefault.sEvenRowsEvenColBefore, ContentListsDefault.sEvenRowsEvenColAfter, ContentListsDefault.sFirstRowBefore, ContentListsDefault.sFirstRowAfter, ContentListsDefault.sMiddleRowBefore, ContentListsDefault.sMiddleRowAfter, ContentListsDefault.sLastRowBefore, ContentListsDefault.sLastRowAfter, ContentListsDefault.nMidRowColumnCount, DesignObjects.nID, ContentListsDefault.sSystemVersion, ContentListsDefault.nFirstRowColumnCount
FROM ((ContentListsRef
LEFT JOIN ContentLists
ON ContentListsRef.nID = ContentLists.nID)
INNER JOIN ContentListsDefault
ON ContentListsRef.nID = ContentListsDefault.nID)
INNER JOIN DesignObjects
ON ContentListsRef.sName = DesignObjects.sName
WHERE (((ContentLists.nID) Is Null)); - Exit Access
- Restart Actinic.