Browse By Tags

  • Blog Post: Some thoughts on Importing Data

    I have written several articles in the past about the importation of data into Sage CRM. This article then is a 'header' record that attempts to bring these different thoughts together. It is certainly not unusual for a partner to occasionally need to design a custom import mechanism into...
  • Blog Post: Basic Code Structure of an Edit Page

    We should now consider the creation of an edit screen for a Record using an ASP page. The structure is simpler. var myBlock = eWare.GetBlock('OpportunityDetailBox'); var myRecordId = eWare.GetContextInfo('Opportunity','oppo_opportunityid'); //var myRecordId = Request.QueryString...
  • Blog Post: Creating a PipeLineGraphic in an application extension using COM API ASP

    I have discussed in a previous article how customization can be carried out on a PipeLineGraphic chart used in a system built page, for example on the Opportunity List page in the My CRM tab area. The PipeLineGraphic block is available within the COM and .NET APIs but it has not always been straight...
  • Blog Post: Creating Complex Screens using the COM based ASP API

    I have blogged previously on creating Multi block screens based on a single record. A prime example of that would be where you need to design a page for a new entity that include both a detailbox and a webpicker. I would now like to consider a Complex screen where the ASP page offers the user the...
  • Blog Post: Redirecting from a COM ASP page to a .NET assembly

    You may have a need to redirect from a custom page written using the COM ASP API to a .NET assembly. I have written about redirecting from COM ASP page before in the article " Redirecting to an ASPX (ASP .NET) Page from a Classic COM ASP page " The code below shows how a URL for the redirect...
  • Blog Post: A Universal "Go Back" button in Workflow

    The requirement to allow the user to fall back to an earlier point in the workflow is usually handled by looping. We can see from the diagram below how a workflow can allow a user to drop back and repeat or cycle through certain workflow states again and again. But what if we need to have a workflow...
  • Blog Post: Guarding Access to Buttons Built in ASP Pages

    Imagine that you have created a new page that lists data from either Sage CRM or an external system. It maybe that you have classified your users into two types. The first can only view the data, so the actions buttons should be hidden, but the second user type should be able to access the buttons and...
  • Blog Post: Pixel Perfect gadget contents with jquery

    I thought I'd share this: so I'm trying to create a custom gadget that displays a map and I want it to resize to fit the size of the gadget in a flexible layout. I needed a method of finding the height and width of the IFrame. It turns out this is very easy to do with some simple jquery. ...
  • 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: 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: 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: 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...
  • Blog Post: Displaying Multiple List Blocks using the ASP COM API

    We have seen in other posts that it is perfectly possible to create ASP pages that contain multiple blocks. These have been search pages or entry pages that have drawn their blocks from either the same or different entities. What we have not discussed so far is the display of multiple list blocks...
  • Blog Post: The Sage CRM .NET API

    The diagram below shows the general architecture of Sage CRM. Here you can see very clearly that the .NET API is an alternative and NOT a replacement for the COM API which is currently used to build application extensions with ASP pages. Both the .NET API and the COM ASP API use the Meta...