Browse By Tags

  • Blog Post: More Adventures with the Library

    I have been investigating the list of documents that appears under the Company tab group. This is actually part of a set of investigations into the library entity that I am working on. So there will be a few more blogs about documents and the library in the near future. I wanted to find out how to ensure...
  • Blog Post: Creating and controlling List Pages in Self Service

    Below is a very simple example of a self service page displaying a list of Cases belonging to an authenticated visitor. The ASP code is found below. The code is marked in different colours and discussed in a following section. <%@CodePage=65001 Language=JavaScript %> <!-- #include...
  • Blog Post: Server Side Validation and ASP pages

    If you need to perform some server side validation within an ASP page that would use the standard CRM behaviour to highlight the field that contains the invalid data. Then the simplest approach is to use Validation Rules. These can be defined either at the level of the screen or applied to a screen within...
  • Blog Post: MSSQL Index analysis and creation from Sage CRM (Part 1 of 2)

    This article has come from a very experienced colleague in Australia. Introduction Microsoft SQL Server 2005 added new system tables to assist in the system reporting. Three of these tables in particular are written to every time a query is run. Microsoft SQL Server 2005 processes each query, determines...
  • Blog Post: Action buttons on Custom Entity Find Screens

    Below is a picture of the Company Find screen.. This is the standard system screen. But can this screen be duplicated for new entities such as "Project". The answer is very nearly yes. In the code for a Project Find screen that I have presented here you should be able to see some of the items...
  • Blog Post: Building Custom Jump Hyperlinks from List blocks

    Setting up a Custom Jump from a list to an ASP page is not difficult as we can see from the image below. What is not so obvious is how we can cause more than one name/value pair to be included in the QueryString of the hyperlink. In the above example the field oppo_opportunityid is being used. If we...
  • Blog Post: Use Advanced Search Selects to create linked selection lists

    Many teams need to link selection lists so that the contents of one selection list determine the contents of another. For example Support teams love the ability when creating a case, to fill in a value for a type of support issue, and then narrow down the issue with a second set of options, and perhaps...
  • Blog Post: Building a Simple Quick Search Page

    Entities such as Case and Solution use a reference field as an alternative key. This is the 'ticket' number (case_referenceid, soln_referenceid) that is used as a public and convienent way of identifying each record. In the default demo system the fields case_referenceid and soln_referenceid...
  • Blog Post: Controlling List Size in ASP Pages

    How can we override the User grid size preference for a custom list on ASP pages? You may have seen that there is a List block property called RowsPerScreen ListBlock.RowsPerScreen = 5; On the face of it, this should allow us to change the list size to what ever we need. But according to Developers...
  • Blog Post: Using Create Script in GridColumns

    In the image below we can see the Company Name is displayed in an opportunity list that is in the context of the company and so that column is redundant and does not need to be shown. The list is created by the opportunitylist system action which is used in a number of contexts My CRM...
  • Blog Post: Working with Default Company Addresses

    If you need to list company default/main addresses you can link from the Company to the Address table. You don't need to link to the address_link table. The address link table is used to keep details about the alternative addresses that might be stored against a company, e.g. billing and delivery...
  • Blog Post: Building selection lists in ASP pages without reference to Meta Data

    From time to time you will need to build pages that can not directly be based on a Meta data definition of a screen. For example if you need to construct a page that allows cloning of an entity or perhaps interaction with an external system. The CRM objects allow to you to easily build screens and entries...
  • Blog Post: How can I build a multiblock edit screen?

    I was recently asked about how to handle the problem of having multiple screen blocks on the same page than when you attempt to move the page to edit mode you get a nasty locks message. The problem occurs because both blocks are attempting to place an entry in the locks table to reserve editing rights...
  • Blog Post: How did I get Here?

    In this post I would like to consider how you can establish whether a page has just been called via a hyperlink (from the tab) or it has been called because "Save" action button has been pressed. Pages can be called either by direct hyperlinking to them or by clicking a "button"....
  • Blog Post: Understanding GetContextInfo()

    GetContextInfo() is perhaps the most commonly used method within the Sage CRM API. This is both within internal code (Create scripts, Validate scripts etc) and application extensions which maybe either COM ASP or .NET API. GetContextInfo() returns a named field from the given table based on the current...
  • Blog Post: Using CRM security in ASP pages

    Access to buttons can be controlled by the 4 & 5 parameter of the CRM.Button() method. The entity referenced in the 4th param has to be an entity normally covered by security. (This can also be a custom top level entity) The 5th parameter can be INSERT VIEW EDIT DELETE var strNewCompanySecurityButton...
  • Blog Post: Setting screen properties within a multiblock ASP page using the COM API

    This COM API trick for ASP based Application Extensions shows how you can create a screen with 2 (or more) blocks where one of the blocks remains in view mode regardless of the value of CRM.Mode. It is a very simple approach and all you have to do is get hold of the block that you wish to be read only...
  • Blog Post: Updated Partial Rebuild of the Company QuickLook Screen using the ASP API

    This is a version of the Company Quicklook screen rebuilt using the classic ASP API back in 2008. There are buttons to call New Task and New Communication buttons. The button code references the source file and the jump destination. [code language="javascript"] var fileContext = "&F...
  • Blog Post: Creating an ASP Search Page that Displays Data from an external Database using an ODBC driver e.g. Sage 100 ERP, formerly known as MAS 90

    This article discusses the challenges that can be faced when building a Search page that queries an external database table through an ODBC driver. I have used for this example a connection to a Sage ERP MAS 90 table. I have assumed that you will have read the following articles Connecting to...
  • Blog Post: Sage CRM EntryTypes used in the COM ASP API

    I have covered manually building screens, that is without using existing Screen or List meta data definitions in earlier posts. These contain example code that uses the following basic struture of code to build the fields. var customTextEntryBlock = CRM.GetBlock("Entry"); with (customTextEntryBlock...
  • Blog Post: Adding Extra Buttons to the Group Details Screen

    I have written another article that discusses how to add an extra button to the Saved Search Screen . That article discussed how most system screens can have additional action buttons added to them using the Buttons Group feature. But two important exceptions are the Saved Search screen and the Group...
  • Blog Post: Using the COM CRM.CreateQueryObj() to call a Stored Procedure.

    Below is some code that illustrates how a Stored Procedure maybe invoked in the QueryObject. var strSQL = "DECLARE @@ret int"; strSQL += " EXEC @@ret=eware_get_identity_id 'notes'"; strSQL += " INSERT notes"; strSQL += " (note_noteid,note_foreigntableid,note_foreignid...
  • Blog Post: Listing System Actions

    System Actions are not formally part of the official API and there is no list of them in the documentation although there are plenty of articles that make use of them. The article "Calling CRM Actions" is a good introduction to how the inbuilt System Actions can be referenced in custom pages...
  • Blog Post: A discussion about the Notes table and TableIDs

    In several areas of the system you will see references to Table ID. This is especially true if you are programming directly using the Record or Query Objects. The notes table is quite straightforward. You can add a notes table onto just about any entity, for example company (already there) or communication...
  • Blog Post: Building a Search Select Advanced Field in ASP

    I have covered the EntryTypes used in CRM in an earlier article, " Sage CRM EntryTypes used in the COM ASP API ". Below is a simple example showing how to create a Search Select Advanced in an ASP page. var myBlock = CRM.GetBlock("opportunitydetailbox"); var personidBlock = CRM...