Search the help documentation

Search:

Can't find what you are looking for? Use the Feedback tab in your app to submit an issue, or email support@ qrimp.com.


idnamedescriptionParentTopic
deleteedit1315Manually Subscribing Users to PortalsYou can 'subscribe' to existing portals.

Go to Design > Portals. You will see a list of Portals. Click the name of the portal you want to subscribe to. On the right, click the top link that says "Portal Subscriptions".

Click the names of the users who should see that portal on their [Dashboard].
Dashboard
deleteedit1327Add My Task List to a PortalA list of tasks on your [Dashboard] can help you see what you need to do this week. You will need to have a tasks table.

In your menus, go to Tasks.

<img class="border" src="attachments/developer.qrimp.com-e9fb95cf-d97d-4c1b-8196-e71bd73a331e/gototasksmenu.png">
----
You will see a list of all tasks.

<img class="border" src="attachments/developer.qrimp.com-91655928-9af7-49a0-be3c-19d658c27e8e/taskslist.png">
----
Search the tasks list for tasks that are assigned to you.

<img class="border" src="attachments/developer.qrimp.com-feb0c8af-bc8b-4307-b95c-30737f509286/tasksassignedtodropdownsearch.PNG" />

Now that you see a list of tasks assigned to you, look at the bottom of the page, below the tasks. There is a link that says "Share". Click the share link.

<img class="border" src="/attachments/developer.qrimp.com-057e6e67-b784-4916-bce7-684f1f5cdeb6/tasksassignedtodemo.png" />
-------

You will see an add to Dashboard button. Click "Add to Dashboard".

<img class="border" src="attachments/developer.qrimp.com-561532ae-f328-47cc-b2ae-7a0e63a8ef41/addcalportaltodashboard.png " />
-------
Name your new tasks portal.

<img class="border" src="attachments/developer.qrimp.com-ac5166f6-5553-4623-89ae-d8bc32c38087/calltheportaltasks.PNG" />
-------
Click the "View Your Dashboard Now" link.

<img class="border" src="attachments/developer.qrimp.com-79941e05-8151-4c16-bd7e-81ac824eea07/viewdashboardnowcalportal.png" />
-------
Your tasks are now a portal window on your dashboard.

<img class="border" src="attachments/developer.qrimp.com-58e4733a-4a82-4b0a-8cc0-9a62c384250f/tasksportal.png" />
-------
Dashboard
deleteedit147JavaScript APIThe JavaScript API will allow dramatically expand the capabilities of your system. In this help topic, we are going to spend a little time detailing the functionality you can accomplish rather quickly using a little bit of JavaScript. If you've used [Share Data], you've already done a little bit of JavaScript Programming.

<h4>Background on JavaScript</h4>There are many <a href="http://www.w3schools.com/JS/default.asp">JavaScript Tutorials</a> on the net to help you understand it better. JavaScript is a standard technology and has been in use for many years. We chose to use JavaScript because a lot of developers are familiar with it. Javascript can make your applications more accessible and platform independent.

<h4>Examples</h4>Every Qrimp app comes with some features that are built using JavaScript. [Share Data] for sharing data and [Field Templates] for columns validation are built with Javascript. These validation routines are fairly standard. To try an example, go to Design > Field Templates on the Add New view for many of your tables.

<h4>Extensibility Options</h4>In this Help Topic, we are going to concentrate on some of the techniques you can use to pull data out of Qrimp and use it in your custom programming activities. To get the most out of this topic, you should be familiar with the [Query String Parameters] first.

To make AJAX programming with Qrimp easier, we are using Matt Kruse's AjaxRequest.js from <a href="http://www.ajaxtoolbox.com/">http://www.ajaxtoolbox.com/</a>. If you are familiar with JavaScript and would like to use Dojo, Prototype, or some of the other common libraries in your site, <a href="https://developer.qrimp.com/db.aspx?t=1013&vid=8">Open a Ticket</a> and we will help you with this.

<h4>Retrieving Data with AJAX</h4>Because we are using the <a href="http://en.wikipedia.org/wiki/XMLHttpRequest">XMLHTTPRequest</a> object the following functions will only get data from local urls within your Qrimp app. Attempting to use them with remote URLs will return a security error.

<a name='geturlstring'></a><b>getUrlString(url)</b> This method will download the url and return the content as a string. You can use this function to retrieve a particular value of a particular field for example. Click the button below to retrieve the name of the help topic indicated by the id you enter into the box:

<input type=text size=5 maxlength=5 value="147" id=itemid> <input type=button onclick="document.getElementById('theresult').innerHTML='The name is: '+getUrlString('db.aspx?t=helptopics&id='+document.getElementById('itemid').value + '&_fieldvalue=name');" value="Try It!"> <span id='theresult'></span>

Here is the JavaScript for the example above, click to copy it into your app: <nobr><textarea onclick='this.select()'>
<input type=text size=5 value="147" id=itemid>
<input type=button onclick="document.getElementById('theresult').innerHTML='The name is: '+getUrlString('db.aspx?t=helptopics&id='+document.getElementById('itemid').value + '&_fieldvalue=name');" value="Try It!">
<span id='theresult'></span></textarea></nobr>

<b>getContent(url,element,clearcontent,startmsg)</b> We could have stream lined the above example using this method, which will download the url and insert the content into the page element indicated by the element parameter. Try this example:

<input type=text size=5 maxlength=5 value="147" id=itemid2> <input type=button onclick="getContent('db.aspx?t=helptopics&id='+document.getElementById('itemid2').value + '&_fieldvalue=name','result2',document.getElementById('clearcontent').checked==true,'<img src=/images/ajax-loader.gif align=absmiddle> Retrieving name...');" value="Try It!"> <span id='result2'></span>
<input type=checkbox id=clearcontent> Clear Content

Here is the JavaScript for the Example, click to copy it into your app:<nobr><textarea onclick='this.select()'>
<input type=text size=5 maxlength=5 value="147" id=itemid2> <input type=button onclick="getContent('db.aspx?t=helptopics&id='+document.getElementById('itemid2').value + '&_fieldvalue=name','result2',document.getElementById('clearcontent').checked==true,'<img src=/images/ajax-loader.gif align=absmiddle> Retrieving name...');" value="Try It!"> <span id='result2'></span>
<input type=checkbox id=clearcontent> Clear Content
</textarea></nobr>

<h4>Special Query String Parameters</h4><b>_INDICATESUCCESS=true</b> will tell Qrimp to execute a command only returning only the status of the operation. If the message is a success it will return the value of the EXECUTE_SUCCESS variable, which is "Changes applied successfully." If the operation fails, the exception message will be returned.

<b>_RETURNRESULT=true</b> is used for creating new records or operations on individual items. For example, say you want to create a new record in a database table. If you append _RETURNRESULT=true to the URL querystring parameter list, the system will return just the single value response. For an INSERT operation that creates a new record, that result will be an integer number identifying the ID value of the new record.

Using &_RETURNRESULT=true can be very useful for creating parent child relationships. For example, you may want to create an Expense Report, get the ID of that new expense report, then create new expense line items under that Expense Report.

<b>_RECORDCOUNT=true</b> will return only the number of items that would be returned for a particular query string.

<h4>Special Pages for Programming</h4><b>banner.aspx</b> allows you to perform Mash Up operations that grab information from external websites. Use banner.aspx with the following Query String Parameters:
<blockquote>
<b>?importimage=<i>imageurl</i>&<b>t=</b><i>table</i>&<b>column</b>=<i>columnname</i>&<b>id</b>=<i>itemid</i></b>
This command will retrieve an image from a remote website specified by <i>imageurl</i> and save it into your local Qrimp app. The value for the column specified and corresponding to the particular item indicated by itemid and the table will be set to the url for the local file. This functionality will allow you to ingest remote resources and use them locally within your Qrimp App. The imageurl specified need not be only an image, but could be a text file, html file, etc

<b>?getrgb=<i>imageurl</i></b> will return the average hexidecimal color of a remote image. This is useful for determining, for example, if there are any storm clouds in a weather radar. If the average hex value is close to black, it's a clear day, if it is closer to red, it is very stormy.

<b>?externalurl=<i>urltodownload</i>&starthtml=starthtmlstring&stophtml=stophtmlstring&<b>t=</b><i>table</i>&<b>column</b>=<i>columnname</i>&<b>id</b>=<i>itemid</i></b>
This parameter group will download a remote resource and save the value contained in that resource between the specified start and stop html strings, display it with a link to the original resource, and if the user has rights to update the specified table, save it into the column specified.

This feature is used to create powerful mash ups that persist data from multiple locations around the net. The values saved in these columns can be used in Calculated fields, sorted, and used like any other data entered via the normal routes like HTML forms, etc.
</blockquote>

You can use [Square Brackets] to use values in your database to build custom urls. Watch the <a href="http://www.qrimp.com/demos.html">External Data Sources demo on our Demos Page</a> to get a visual idea of how to do this with Amazon's Online Store.

<b>savedesign.aspx</b>
<blockquote>This page is used to enable drag and drop Field Layouts, but can also be used to update fields in your database for a particular record with a particular value. Here are the query parameters:
<b>savedesign.aspx?<b>ptable</b>=<i>tabletoupdate</i>&<b>id</b>=<i>itemid</i>&<b>f</b>=<i>field</i>&<b>v</b>=<i>value</i></b>

If the update is successful, the value EXECUTE_SUCCESS will be returned. Otherwise, a failure message will be returned.

<h4>Summary</h4>The JavaScript API is a complete set of tools that remove all limits on your application. If you need additional support, please contact Qrimp Support.
Javascript and JQuery in Qrimp
deleteedit179Custom Pagination Look and FeelTo create your own Custom Paging for your system you will have to write some [JavaScript].

First, you will call the subset of numbers from the database that you will want to use to create the custom pagination.

You can call the subset two ways: JSON or XML.

If you use JSON:

<div style="border: 2px black solid; font-family:monospace; background: #f3f3ff; padding: 1em; overflow:scroll white-space: nowrap ;">paginationJson = getUrlString('db.aspx?t=Inventory&vid=73&noheader=true&nofooter=true&_pagingInfo=JSON' + filterQueryString)</div>

This URL will pull the subset of numbers

<div style="border: 2px black solid; font-family:monospace; background: #f3f3ff; padding: 1em; white-space: nowrap ";">{"paginationInfo":{"pageSize":9,"numPages":9,"numRecords":79,"currentPage":1}}</div>

Then you must parse the information. In the example we pull the parser from the Yahoo JavaScript Library.

<div style="border: 2px black solid; font-family:monospace; background: #f3f3ff; padding: 1em; white-space: nowrap ;"> try {
var paginationInfo = YAHOO.lang.JSON.parse(paginationJson).paginationInfo;
}
catch (e) {
alert(e);
}</div>

Finally, you can assign the global variables and begin to manipulate the page to create your own Custom Pagination.

<div style="border: 2px black solid; font-family:monospace; background: #f3f3ff; padding: 1em; overflow: scroll; white-space: nowrap ";">numPages = paginationInfo.numPages;
currentPage = paginationInfo.currentPage;
numItems = paginationInfo.numRecords;
pageSize = paginationInfo.pageSize;</div>



If you use XML you will parse the information differently

<div style="border: 2px black solid; font-family:monospace; background: #f3f3ff; padding: 1em; overflow: scroll; white-space: nowrap ">try //Internet Explorer
{
xml=new ActiveXObject("Microsoft.XMLDOM");
}
catch(e)
{
try //Firefox, Mozilla, Opera, etc.
{
xml=document.implementation.createDocument("","",null);
}
catch(e)
{
alert(e.message);
}
}
var url = 'db.aspx?t=inventory&vid=73&qid=3&_paginginfo=true';
xml.async=false;
xml.load(url);
//<paginginfo><pagesize>25</pagesize><numpages>0</numpages><numrecords>92</numrecords><currpage>1</currpage></paginginfo>
document.write('numpages=' + xml.getElementsByTagName("numpages")[0].childNodes[0].nodeValue + '<br>');
document.write('pagesize=' + xml.getElementsByTagName("pagesize")[0].childNodes[0].nodeValue + '<br>');
document.write('numrecords=' + xml.getElementsByTagName("numrecords")[0].childNodes[0].nodeValue + '<br>');
document.write('currpage=' + xml.getElementsByTagName("currpage")[0].childNodes[0].nodeValue + '<br>');
</div>

As you can see XML does its own set of calls for the parsing. IE and other browsers are different so the beginning is checking to see what browser it is. Then the numbers get called in the query string just like JSON. The main difference is the way the strings are parsed.

Now you can manipulate the variables to the your type of Custom Pagination.

Here is an example of a 'footer' Custom Pagination for a shopping cart of items.

<div style="border: 2px black solid; font-family:monospace; background: #f3f3ff; padding: 1em; overflow: scroll; white-space: nowrap ">
function createItemListFooter () {

paginationJson = getUrlString('db.aspx?t=Inventory&vid=73&noheader=true&nofooter=true&_paginginfo=json' + filterQueryString);

try {
var paginationInfo = YAHOO.lang.JSON.parse(paginationJson).paginationInfo;
}
catch (e) {
alert(e);
}

numPages = paginationInfo.numPages;

currentPage = paginationInfo.currentPage;
numItems = paginationInfo.numRecords;

var paginationHtml = "";

for (var i = 1; i <= paginationInfo.numPages ; i++) {
if (i == 1) {
paginationHtml = paginationHtml + "<div id=page" + i + " class=\"selectedPage pageNumber\"><a href=\"#\" onclick=\"displayPage(" + i + ")\">" + i + "</a></div>";
} else {
paginationHtml = paginationHtml + "<div id=page" + i + " class=pageNumber><a href=\"#\" onclick=\"displayPage(" + i + ")\">" + i + "</a></div>";
}
}

if (paginationInfo.numPages > 1) {

paginationHtml = paginationHtml + "<div id=nextButton class=prevNextButtons><a href=\"#\" onclick=\"nextPage()\">Next</a></div><div id=prevButton class=\"prevNextButtons hide\"><a href=\"#\" onclick=\"previousPage()\">Previous</a></div>"
}

document.getElementById("itemListFooter").innerHTML = paginationHtml;
}

function displayPage (pageNumber) {

if (pageNumber != currentPage) {

YAHOO.util.Dom.removeClass("page"+currentPage, "selectedPage");
YAHOO.util.Dom.addClass("page"+pageNumber, "selectedPage");

if (pageNumber == 1) {
YAHOO.util.Dom.addClass("prevButton", "hide");
} else if (currentPage == 1) {
YAHOO.util.Dom.removeClass("prevButton", "hide");
}


if (pageNumber == numPages) {
YAHOO.util.Dom.addClass("nextButton", "hide");
} else if (currentPage == numPages) {
YAHOO.util.Dom.removeClass("nextButton", "hide");
}

currentPage = pageNumber;

displayItemList();

}

}

function nextPage() {
displayPage (currentPage + 1);
}

function previousPage() {
displayPage (currentPage - 1);
}
</div>

This code manipulates the JSON from the above example to create this:

<img src="https://developer.qrimp.com/attachments/664353d5-59b5-4408-90db-7a08300aefe3/PaginationFooter.png">

<img src="https://developer.qrimp.com/attachments/218508a3-c74d-404a-86e4-e52ca0e0cae5/PaginationFooter1.png">
Javascript and JQuery in Qrimp
deleteedit186Retrieving id for new elementsIf you use JavaScript to create a new item, you may want to retrieve the ID of the element just created. To do this, use the _returnresult=true option in the querystring.

For example, submitting a querystring like the following will create a new item in the Person table with a name of Linda.

var id = getUrlString('db.aspx?t=person&name=linda&o=5&_returnresult=true');

You can now use the value in ID to add information to other tables that is related to the person Linda. Like this:

var taskid = getUrlString('db.aspx?t=tasks&name=Register+for+intranet&person=' + id + '&o=5&_returnresult=true');

Javascript and JQuery in Qrimp
deleteedit1302Creating your own error messagesQrimp has several default error messages for when things go wrong. The Qrimp stylesheet also has a class called "error" which is red text by default. You can change this to make it more or less obvious.

<h3>Adding Error Messages</h3>
If you have added custom [JavaScript] or other functionality, you may wish to add your own error messages. To do this go Admin > Error Messages and fill out the required fields.
Javascript and JQuery in Qrimp
deleteedit6The System TablesThe system tables are the core tables that govern the basic functionality of Qrimp applications. Only administrators can see system tables. Some system tables will be hidden from even the administrators, as modifying or deleting these tables can cause serious system errors. The system tables are the Qrimp equivalent to the system tables on your operating system. If you find that you need access to system tables that you do not have permission to edit from your account, please contact support at qrimp.com.

You will probably get along quite well without changing any system tables. Most of them run in the background, but are essential to different parts of the application and the tables you will create. For example, every application has the system table <strong>yesno</strong>. This table one of the default [Look-up Tables] for yes/no drop-down lists in new tables you create. It will be used by any table that has yes/no radio buttons as a data entry option. You can see this when you [Create Tables] and choose your [datatype].

If you are creating admin accounts, you'll want to make sure only expert users have access to these tables.

To learn more about enforcing access rules read [Table Security].
Advanced Development
deleteedit15Site SettingsSite Settings let you change settings for your app.
You can change the size of the icons that appear in the header/footer for your tables.

userid:

stylesheetid:

mailboxid:

mailformatid:

languageid:

regionid:

cityid:

icontheme: This is the folder from which you can set icons for inbuilt icon themes. Two icon sets are available medium icons at 32x32 pixels and mini icons at 16x16 pixels. To change from one size to another, simply replace the 16x16 for 32x32 or vice versa.
Advanced Development
deleteedit22OperationsOperations allow system users to perform actions upon data in your application. Operations are analogous to stored procedures. The five types of operations that users can perform on a database are Create, Read, Update, Delete and Admin.

* Create - Users can create entries in the table.

* Read - Users can view items in the table.

* Update - Users can update existing records.

* Delete - Users can delete information from the table.

* Admin - Full Permission. Users can add and remove fields from the table, rename columns, and rename the table. Admin rights also allow them to control security on the table.

Qrimp has additional default operations such as add notifications, gettree, etc.

To view the operations in your system go to Admin > Operations (<img class="noborder" align="absmiddle" src="/icons/crystal_project/32x32/apps/kfouleggs.png">). Access to the Operations table is restricted to Administrators by default.

To allow your users to perform operations, you must first make sure they have the security privileges to do so. You can control operation privileges using [Table Security].

You can also write your own operations to set up specific functionality based on particular tables, etc. Qrimp has a generic operation statement writing language that should be fairly intuitive to advanced database administrators. Learn more about [Writing Operations] and [Using Operations in urls].
Advanced Development
deleteedit48Square BracketsAn Introduction to Qrimp</textarea>

and produces this:



You can show a "friendly name" for items in the detail view, rather than the id number of the field. (See also [AutomaticIDs]

For example if you have an address table with a foreign key to the states table, when displaying the address, you'd like the state name to be displayed instead of the unique id for the state. To do this, you'd use something like the following:

[states:48] where 48 is the ID of the element to be displayed from the states table.

If this item is being displayed in the grid view, you can dynamically insert the Foreign key ID value into the square brackets like this:

<noeval>[states:[DATA]]</noeval> uses the data in the database for this cell to grab the state name. By default, Qrimp will display this notation in the web page with a link back to the detail page for the table and item specified by [DATA]. To show only the data without the link back to the item, use [states:[DATA]:nolink].

<noeval>[</noeval>t_users:<noeval>[</noeval>DATA<noeval>]</noeval><noeval>]</noeval></textarea> Will pull back a list of users and show the current user.

<h2>Square Brackets and Server Variables</h2>
Here's a <a href="http://www.w3schools.com/asp/coll_servervariables.asp">full list</a> of server variables. You can also read more about <a href="http://dotnetjunkies.com/Tutorial/B3CCB57F-0BBD-4D68-96B0-480B2F1DFC28.dcik">Working with Server Variables</a>.">In Qrimp, you can use Square Brackets "[]" to create links. This is similar to functionality available in Wikipedia and WordPress. Square brackets can also be used to insert server variables and session values, display a field as a select box or radio button and more.

<h2>Creating Links with Square Brackets</h2>
The data in these Help Files is stored in a table called Help Topics. The current record has the Name "Square Brackets". To create a link to the Help Topics table type in <noeval>[Help Topics]</noeval>. To link directly to the Square Brackets record type in <noeval>[Square Brackets]</noeval>. You can also link to a record in a table with square brackets by using the name of the table followed by a colon and the record id, like this: <noeval>
Square Brackets</noeval>.

<h2>Limitations of Square Brackets for Linking</h2>
If there are multiple records in your database with the same name or if the Name field is edited, your square brackets link will not work.

<h2>Links to Default Items</h2>
You can use square brackets in the HTML for links to make links more flexible and generic (see also [query string urls]). Normally when writing the HTML for a url, you would write &t=customers, but if you write <noeval>&t=HelpTopics</noeval> the link will go to the 'current' table or 'default' record. Links with square brackets are most commonly used in [Menus], the [Content Header], [Views] and [Field Templates]. For example, imagine this link: <img src="attachments/developer.qrimp.com-c71d519b-826b-48db-b481-5fcd427c9a14/linkwithsquarebrackets.png" /> is in the Content Header of my customers table. When I click the link, I will go to the create view (view 8) of the customers table. Square brackets pull in the closest item. <noeval>HelpTopics</noeval> will pull in the current table. <noeval>48</noeval> will pull in the current id.

<h2>Square Brackets to pull in DATA</h2>
Use <noeval>[DATA]</noeval> between the a tags to pull in the data from the linked record.

<h2>Square Bracket Select Lists</h2>
When displaying a form with a column or field that is a pick-from (drop-down), Qrimp displays a select box in HTML so the user can choose from the list. Behind this is a template. The template looks like this:

<textarea></textarea>

and produces this:



You can show a "friendly name" for items in the detail view, rather than the id number of the field. (See also [AutomaticIDs]

For example if you have an address table with a foreign key to the states table, when displaying the address, you'd like the state name to be displayed instead of the unique id for the state. To do this, you'd use something like the following:

[states:48] where 48 is the ID of the element to be displayed from the states table.

If this item is being displayed in the grid view, you can dynamically insert the Foreign key ID value into the square brackets like this:

<noeval>[states:[DATA]]</noeval> uses the data in the database for this cell to grab the state name. By default, Qrimp will display this notation in the web page with a link back to the detail page for the table and item specified by [DATA]. To show only the data without the link back to the item, use [states:[DATA]:nolink].

<noeval>[</noeval>t_users:<noeval>[</noeval>DATA<noeval>]</noeval><noeval>]</noeval></textarea> Will pull back a list of users and show the current user.

<h2>Square Brackets and Server Variables</h2>
Here's a <a href="http://www.w3schools.com/asp/coll_servervariables.asp">full list</a> of server variables. You can also read more about <a href="http://dotnetjunkies.com/Tutorial/B3CCB57F-0BBD-4D68-96B0-480B2F1DFC28.dcik">Working with Server Variables</a>.
Advanced Development
deleteedit210Javascript and JQuery in QrimpMake your Qrimp App more dynamic with JavaScript and JQuery.Advanced Development
deleteedit160Time Zone AwarenessTime Zone Awareness allows you to set your system up so that each user sees the date and time information associated with their data in the correct time zone for their location.

If you are an existing Qrimp user, you will be asked to choose your time zone next time you log in. If not, you will be asked to chose a timezone at your first login.


My Account
deleteedit16Notification Subscriptions<!--<nobreak>-->
<p>Set up notifications in your Qrimp app to send an email to a user when data is added, deleted or edited. For example, you can set up an email to a sales rep when a table is updated.</p>

<h3>Adding Notifications</h3>
<p>To subscribe a user to a notification, go to Admin > Notification Subscriptions. Click the Add New Icon <img src="/icons/crystal_project/32x32/actions/edit_add.png" />.</p>

<p>Choose the table you want to send a notification for.</p>
<img class="border" width="300px" src="http://f43a933af7ac34dcec6f-e68f0ae55bed6d6f943b932cc8d70ccb.r3.cf1.rackcdn.com/867d5c7f-48c4-4d82-8f51-3a3a8a68e988-custom%20notifications%20screen%201.png">

<p>Choose which operation triggers the notification. The most common operation is insert, which is when someone adds a new record to a table.</p>
<img class="border" width="300px" src="http://f43a933af7ac34dcec6f-e68f0ae55bed6d6f943b932cc8d70ccb.r3.cf1.rackcdn.com/a0f6b54d-ccaa-4bfd-93ad-4daf13586bf8-custom%20notifications%20screen%202.png">

<p>Choose the user who will get the notification.</p>
<img class="border" width="300px" src="http://f43a933af7ac34dcec6f-e68f0ae55bed6d6f943b932cc8d70ccb.r3.cf1.rackcdn.com/51cbd38d-9324-4cdb-bcc9-c5be69dae2c1-custom%20notifications%20screen%203.png">

<p>Then choose a notification message. You can see and edit the content of a notification message by going to Admin > Notification Templates. (See also: [Notification Templates]).</p>
<img class="border" src="/attachments/developer.qrimp.com-1941ee44-967d-422c-8622-b802f1a72ddd/notifications%20screen%204.png">

<h3>Customized Notifications</h3>
<p>You can get very specific about when to send a notification. For example, you may wish to only notify a sales rep, if a website visitor creates a new order with an order type of "Wholesale".</p>

<p>To customize, go to your list of user notifications and click the link that says "customize". Enter the parameters for your notification. Now the user will only get this notification when that specific criteria is met.</p>
<p>You will see an option at the right to "Customize filters for this notification subscription". Click the link then [Search] to further restrict notifications. For example, you could choose to only receive an Email notification when someone inserts a Project into the Projects table with the word "Human Resources" in it.</p>
<!--</nobreak>-->
Communicate and Share
deleteedit91Check POP3 Email AccountsAdd Qrimp's <a href="http://en.wikipedia.org/wiki/Pop3">POP3 Email</a> account checker to display your email addresses with a message count in brackets beside the name of the email address, like this:

name@mywebmail.com (7 new)
mynickname@mydomain.com (10 new)

You can set up each email address to link to the sign in page for the email provider. Depending on your provider, you may also be able to add automatic sign in when you click on the link.

You must be a site admin to add POP accounts.

Go to Admin > POP Email Accounts.

In the name field, enter the text for the link. You can use the email address name ie: "name@mywebmail.com" or something like "My Web Mail Account".

In the userid drop-down list box, select the user who will check the account.

Enter the POP Server ie: mail.myprovider.com. If you are unsure what your POP Server address is, check email provider's help files.

In the popusername field, enter the email address, ie: name@mywebmail.com

Enter the actual current password for the email account. If you are creating a POP Account for someone other than yourself, you will have to get them to do this. The password will always be displayed as stars (**********) to every user.

Enter the url of your email service (the page you visit to check your account). If your provider allows for automated sign in using a url, you can enter the specified url, and use square bracketed field names to populate the required user-specific information from the Qrimp POP Email Accounts table, as follows: [ popusername] [ poppassword]

Do not enter anything in the lastupdatedate field. It will update automatically.

Enter 0 in the messagecount field.

That's it.
Communicate and Share
deleteedit130Share DataShare data lets you add data to your [dashboard], copy data into other records in your app, other Qrimp app, and even other websites.

<h2>Adding an item to your dashboard</h2>
See [Portals].

<h2>Sharing data</h2>

There are two ways to get to the share data interface: the link below the [grid view]...
<img class="border" src="/attachments/8991a71b-cb52-4121-8511-b678f0ca813a/ShareDataLink.png" />

...and the Open Share icon in the [Content Header]</h2>
<img src="http://www.qrimp.com/blog/2008-06-27_0646.png">

When you click the link or the icon, you will see the following popup:

<img class="border" src="http://www.qrimp.com/blog/2008-06-27_0652.png">

You will see two boxes with HTML. The HTML on the left is for sharing within your app. The HTML on the left is for sharing on the web.

<h2>Copy and Paste HTML</h2>
Copy and paste a snippet of [HTML] code. You do not have to understand HTML to do this, but please go slowly and be sure to select and copy ALL of the text in the box!

You can paste this in a [portal], a [field template] a description box, or any other [text area] in your app. Experiment! If something doesn't work, you can delete it.

This snippet of HTML code pulls in the data and the view (see: [Views]) and determines whether you are sharing an individual item or the whole table.

<h2>Sharing data internally</h2>
To share data within your Qrimp App, copy the text (Ctrl+c) from the first share data script and paste it (Ctrl+v) into any text field in any table. The table you have selected will magically pop into that area. The text field must be pasted into a table that is in the same app as the HTML.

<h2>Sharing data externally</h2>
To embed your data into a separate Qrimp application or display it on another domain, copy the text (Ctrl+c) from the second share data script and paste it (Ctrl+v) into any text field on one of your other Qrimp apps or on any website that allows you to embed HTML and/or scripts.

If [Anonymous Access] is not allowed for your data and you share the code in a publicly viewable area of your app, the data will not be visible (see: [Table Security]).

<h2>Custom HTML Templates for Shared Data</h2>
You can build your own HTML template to format the shared data so that it will appear in your host page exactly the way you want it. Use [square brackets] to insert particular data items into the HTML template.

<h2>Advanced: Sharing data to a local file</h2>
You can paste the code for your shared data into any file that you can view with your web browser (save as .html). The first time you are opening a local file that contains a script to pull in shared data, you will need to be online to access the data (does not apply to [Qrimp Server] users). If your data is not visible to 'Anonymous' users (see: [Table Security]), you will have to log in.

Once you have viewed the data, you can save the HTML to the file before closing for offline viewing.

<h2>Shared Data Display Options</h2>
Use [Query String Parameters] to sort and limit which data is displayed.

Use HTML and <a href="http://www.w3schools.com/Css/">inline css</a> to style your shared data.

<h2>Images in Shared Data</h2>
To ensure that the images and links referenced in your shared data area appear properly wherever you share them, use absolute urls rather than relative urls to reference them within your original table.

<h2>Who can share data?</h2>
The share data link is not visible to all users by default. To allow a group to share data, you must allow [User Groups] to view the export options.

<h2>Open Share Icon</h2>
To simplify the process of sharing data, you can add a module called Open Share Icon available under Admin > Add Module. This module will add an icon to your headers next to the search icon that will open a lightbox with the same content as clicking the share button below the grid view. The Share Icon will be visible on more pages and easier to access than the share link.

<a href="https://www.shareaholic.com/openshareicon/"><img src=/icons/crystal_project/32x32/actions/openshare.png align=absmiddle> Read more about the Open Share Icon</a>

Learn about other [Export Options].
Communicate and Share
deleteedit190Embedding Data in your websiteIf you have a hosted website you can use Qrimp as the database to show data on that website using either EMBED code or IFRAMES.

<strong>Using Embeds</strong>
Most savvy web users have seen the embed feature on news, music or video sharing sites. Embed codes contain HTML that links back to a database and pulls in and displays information in other websites. To learn more, visit the [Share Data] help topic.

<strong>Using IFRAMES</strong>

Before you create your IFRAME, write a query string (see [Query String Parameters]) that displays data the way you want it. Then write an IFRAME where the SRC of the IFRAME is the url to your Qrimp database query string. Then copy/paste the IFRAME into your website to display the results.

<strong>Re-sorting the Data in an IFRAME</strong>
When you want to re-sort the data or query it, you can use JavaScript to update the SRC tag of the IFRAME and the results will be redisplayed automatically. For example:

document.getElementById('results').src='http://mydatabase.qrimp.com/db.aspx?t=products&orderby=productcode';

or

document.getElementById('results').src='http://mydatabase.qrimp.com/db.aspx?t=products&orderby=color';

<strong>Searching IFRAMES</strong>
You can search your IFRAMES BY using a query string with search parameters. For example, to search for products where the product name contained the word "vinyl", you'd do something like this:
document.getElementById('results').src='http://mydatabase.qrimp.com/db.aspx?t=products&productnameop=CONTAINS&productnamequery=vinyl';

Communicate and Share
deleteedit226Messages<!--<nobreak>-->
Install the messaging module to send messages in your Qrimp app. See [Adding Modules]
<h2>Sending Messages</h2>
<p>To send a message, go to Messages > Compose New.</p>
<img class="border" src="/attachments/developer.qrimp.com-8012de89-2af9-4047-813a-6abbc9eb3f5e/messages%20screenshot%201.png">

<p>Select the user(s) to send the message to by clicking a username, or enter an email address into the users box. Messages sent to external recipients via email will not be logged in the Messages table by default.</p>
<img class="border" src="/attachments/developer.qrimp.com-9ada4505-9b33-4f8c-81dc-8c78b4efbe81/messages%20screenshot%202.png">

<h2>Logging messages sent to external email addresses</h2>

<p>To track messages sent to external email addresses go to Develop > Manage Tables. Select the Messages table and click "edit". Add a field called ToEmail with a data type of Email Address.</p>

<h2>Creating Contacts Automatically</h2>

<p>You can set up your Qrimp app to automatically create an entry in your Contacts table when you send an email to a new external contact. If you do not have a contacts table, create a table with at minimum the fields mentioned below. If you already have a Contacts table, go to Develop > Manage Tables, select Contacts > edit, and add the following columns:</p>

Name - Single Line Text 100
Description - Multiline text 500 or greater
Email - Email Address

<p>Now when you send a message to an external email, the Name and Email fields will both show the email address. The description field will indicate that the contact was created from a message from within your Qrimp app. You can edit these fields later with more details.</p>

<h2>Logging Contact Interactions</h2>

<p>If you have or create an Interactions table, you can log interactions with existing contacts using the Qrimp messaging system. First, follow the instructions above for "Creating Contacts Automatically". Then add a table called Interactions, or add the following columns to your Interactions table:</p>

Name - Single line Text 255
ContactId - Pick From Contacts
InteractionDate - DateTime
Description - Multiline Text 5000+

<p>Click the check boxes for auditing and versioning.</p>

<p>Once you've built the contacts and interactions table, messages you send to external users from your Qrimp app will be logged. This data makes a great addition to a CRM and can be very useful on [Reports].</p>

<h2>Messaging about items in your database tables</h2>

<p>To use this feature, you must be comfortable with query string urls.</p>

<p>You can add the ability to see messages about an item in a table. First, add two additional fields to the messages table:</p>

TableId - Pick From Table Settings
ItemId - Number without Decimals

<img class="border" src="/attachments/developer.qrimp.com-afdb0129-7497-4379-854e-61824767abc8/adding%20tables%20to%20messages%201.png">

<p>To send a message about a particular item, you must type in a url table that references the table you are mentioning. If you include a parameter to the tableid and itemid of an entity in your Qrimp App, the message will be created with the tableid and itemid specified. You can create the link like this:
messages.aspx?t=messages&compose=new&tableid=1000&itemid=1</p>

<p>In this case, the message will be logged as being sent about item 1 in the table 1000.</p>
<!--</nobreak>-->
Communicate and Share
deleteedit7Field TemplatesField Templates wrap every field in your database. By editing the field template, you can control how any field in any table for any view is presented. You can create user messages, style your fields, make fields links and more.

<img class="border" src="attachments/developer.qrimp.com-847ce764-46bd-49be-bd30-5f3a0b75cad8/thingsfieldtemplatescanchange.png">
<span class="small">Some of the other things you can change with field templates</span>

Field templates can have <a href="http://developer.qrimp.com/HelpTopics/HTML">HTML</a>, [CSS] and [JavaScript] code in them. In these help documents, we will give you some basic code that you can copy and paste into your field templates to customize your fields.

<img class="border" src="attachments/developer.qrimp.com-8b9ed061-279f-4cc0-8b3d-155bda49382a/wherethefieldtemplatesare.png">
<span class="small">The default field appearances for the grid view</span>

This grid view has an extra icon that lets you click it to view the record.

<img class="border" src="/attachments/developer.qrimp.com-a21b9b71-27d2-4d38-8ed1-07563eea1948/changedtemplatesingridview.png">
<span class="small">The id field template has a second icon in it</span>

<h2>Changing a Template</h2>
Go to the table and view for which you want to change a field template. Go to Design > Design Mode On.

Click the gear icon at the top of the column you want to change.

Enter HTML in the field to alter the appearance of your field.

<h2>Add icons with links</h2>
<textarea><a href=db.aspx?t=HelpTopics&id=[DATA]&vid=2 id="edititem"><img align=absmiddle src=/c6401/630.png height=20 width=20 align=absmiddle border=0 alt="edit"></a><a href=db.aspx?t=HelpTopics&id=[DATA]&vid=11 id="viewitem"><img align=absmiddle src=/images/webexview.gif height=20 width=20 border=0 alt="edit"></a><a href="db.aspx?t=HelpTopics&id=[DATA]&vid=11" title="View Details">[DATA]</a></textarea>

In the HTML above, the following link was not part of the default template. Adding this creates a link to the [detail view], that is an image (an icon).
<textarea><a href=db.aspx?t=HelpTopics&id=[DATA]&vid=11 id="viewitem"><img align=absmiddle src=/images/webexview.gif height=20 width=20 border=0 alt="edit"></a>
</textarea>

<h2>Change the color of a link</h2>
<textarea><span style="color:red;font-weight:bold">[DATA]</span>

Put a <span> with the style you want around the [DATA] tag.
</textarea>

<h2>Make a field a radio button</h2>
<textarea>[radios:yesno:[DATA]:autoupdate] </textarea>

<h2>Make a field a select box</h2>
<textarea>[select:States:[DATA]:autoupdate]</textarea>
Display and Design
deleteedit77Form DesignerThe Form Designer lets you change the position of your elements on the page. By default, each field is on a new line on the left of a form.

<img class="border" width="500px" src="attachments/developer.qrimp.com-e302d1e8-161a-455a-b6e1-32fe34eccf5b/defaultformlayout.png" />
<span class="small">By default, all fields line up on the left of a form</span>

For space-saving or aesthetic reasons, you may wish to arrange forms with multiple fields on one line, or with more space between the lines.

<img class="border" width="500px" src="attachments/developer.qrimp.com-e1019979-f8bb-4c79-9264-dac8391fe672/redesignedformdetailview.png" />
<span class="small">Rearranged Form</span>

A redesigned form will be presented the same way in [detail view], [edit view] and when you are adding a new record. You can put the fields in any order.

When you are doing data entry in redesigned forms and you tab between fields, the tab will jump to the next field to the right.

-----

To rearrange the layout for a form, first go to your table.

Go to Design > Form Designer.

<img class="border" src="/attachments/developer.qrimp.com-1a5e836e-74ea-4627-b775-0f72431164a0/formdesigner.png">

Wait a moment while the form designer loads.

<img class="border" src="attachments/developer.qrimp.com-a66d7239-3beb-4b0c-8ee5-85a4d7d27094/preparingtoloadformdesigner.png" />

Your form fields will show up against a dotted background.

<img class="border" src="/attachments/developer.qrimp.com-ffc8a453-de84-4ddd-800d-f946fb5843d4/formdesignerdottedbg.png" />

Hover your mouse over the field you want to move and your cursor will turn into a multi-directional arrow indicating that you can move the field. Click and drag the field to a new spot.

<img class="border" src="attachments/developer.qrimp.com-aa25f462-9347-4539-8931-684a2f9334f8/clickanddragfield.png" />

Move all fields to their new spots. All new field positions are saved as soon as the item is dropped in the new spot.

<img class="border" src="attachments/developer.qrimp.com-29d49d8e-d8b4-46b1-89d4-872264382d15/redesignedform.png" />

<h2>Reset a Designed Form</h2>
If you would like to return to the left-aligned form. Go to Design > Form Designer and click the "Reset Defaults" link on the bottom of the right hand side of the page.

<img class="border" width="450" src="attachments/developer.qrimp.com-c73fd12c-06ce-4d77-9d7b-069919f3ed7f/resetdefaults.png" />

<h2>Always Re-Design a Form when you add a new field!</h2>
When you add columns, new fields float to the top left. After adding a new field, use the form designer to place it where you want it.

<img class="border" src="attachments/developer.qrimp.com-69f36ad0-a0f8-4bba-a6fc-256fb73ea708/addcolumn.png" />

Display and Design
deleteedit156Tutorial - Intuitive InterfacesQrimp automates many of the software development tasks needed to manage relational information intuitively. Checkboxes for many-to-many relationships and spreadsheets to edit tabular data. In this tutorial we show you how to view those more intuitive interfaces for the information and add menus to get to those views easily.


<object id="csSWF" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="1026" height="786" codebase="http://active.macromedia.com/flash7/cabs/ swflash.cab#version=9,0,28,0"><param name="src" value="http://www.qrimp.com/blog/2008-07-05_0214.swf"/><param name="bgcolor" value="#1a1a1a"/><param name="quality" value="best"/><param name="allowScriptAccess" value="always"/><param name="allowFullScreen" value="true"/><param name="scale" value="showall"/><param name="flashVars" value="autostart=false"/><embed name="csSWF" src="http://www.qrimp.com/blog/2008-07-05_0214.swf" width="1026" height="786" bgcolor="#1a1a1a" quality="best" allowScriptAccess="always" allowFullScreen="true" scale="showall" flashVars="autostart=false" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object>
Display and Design
deleteedit176Views<nobreak>
Views are ways of displaying data on the page. Qrimp can display data in a table, a photo gallery, XML, or a large number of other layouts. Views are also used to let you edit data or rearrange it on a page. Advanced developers can also use views as page templates to add new layouts using <a href="db.aspx?t=HelpTopics&id=203&vid=11">HTML</a> and Qrimp's [square brackets] notation.

Qrimp also has [Custom Views (Sorting and Filtering)]

<h2>Basic Views</h2>
Frequently used views are linked to by default in the [Content Header] with the following icons:<br/>
[Calendar View]  <img align=absmiddle src="icons/crystal_project/32x32/apps/cal.png"><br/>
[Tree View]  <img align=absmiddle src="icons/crystal_project/32x32/actions/view_tree.png" alt="Tree View"/> <br/>
[Grid View]  <img align=absmiddle src="icons/crystal_project/32x32/actions/view_text.png" alt="Grid View"/> (Also called list view or table view).<br/>
[Grid Edit]  <img align=absmiddle src="icons/crystal_project/32x32/apps/kate.png" alt="Grid Edit"/><br/>

Each Qrimp app comes with many default views.

<h2>Creating links to Views (for menu tabs and more)</h2>

In the location bar of your browser, you'll see the <a href="/db.aspx?t=HelpTopics&id=261&vid=11">url</a> you are on ie: "http://myapp.qrimp.com/db.aspx?t=customers&id=2&vid=11". The vid=11 tells the app to use view 11, which is the detail view. Changing the vid in your url will show you a different view. Note that if you are on a custom page or a page with a [clean url]) you will not see the vid. (See also [Query String Parameters])
Click the "Customers" tab to see the following screen, customers, displayed in Grid View (vid=1).

<img src="attachments/de08c23c-a1b5-4c0d-9972-4ff0c4668c17/ShipCustomer.jpg">

Try to open a table with the XML View, which has an id of 19. Go to a table and edit the query string in the URL so that "vid=19". Qrimp will apply the XML View to the data being returned on the page.

<img src="attachments/be8b1ffe-a495-41a4-8fba-a7ef3d8cad2f/XMLvIew.jpg">

<li>Here is a list of fields for a template and what they mean:
<h5>Name</h5>
<p>This is the name of the view for easy reference or for adding to the query string using the vid=name parameter. You can also use the ID of the view.
<h5>Description</h5>A description of your view
<h5>Displayid</h5>This tells Qrimp how to display the data, do you want your data in a table format like in the grid view or do you want it in a list. Most views you create will be a repeater. These controls are based on the ASP.NET <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.aspx">Repeater Control</a> and the <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datagrid.aspx">DataGrid Control</a>.
<h5>Header</h5>The header content will appear above any data that is pulled from the database.
<h5>Footer</h5>The footer content will appear below any data that is pulled from the database.
<h5>ItemTemplate</h5>The item template is the HTML code that formats the display. If you are using a Repeater type view, then this HTML will format one complete record from the database. In a table type view, the item template will be applied to each column. In the table view, if there is no item template, then the template for the column is obtained from the [Field Templates].
<h5>CellTemplate</h5>In a repeater view, this should probably always be [DATA]. If you'd like to wrap the item template with an extra bit of HTML, you can add it here.
<h5>PageSize</h5>How many records to display by default. You can override this setting in the url using the &pagesize= parameter.
<h5>ContentType</h5>The content type tells the browser how to display the data. If blank, text/html is assumed. If you want to display xml, use text/xml.
<h5>EnableWiki</h5>If EnableWiki is true, square bracketed items will be hyperlinked.

<h2>Advanced: Building a New View</h2>
The easiest way to create your first View is to copy an existing view and then modify it. To copy a View, Go to Design > Views > Select the edit icon next to the View you want to copy > Scroll down to the bottom of the page > click the Copy button > Click the edit icon > edit the HTML > Save your edits with a new name.
</nobreak>
Display and Design
deleteedit1323Changing the Look and Feel of Your AppYou can change the colors, fonts, logos and more in your Qrimp app.Display and Design
deleteedit32VersioningVersioning shows you a history of all changes made to a record in your database. This is great for SOX compliance (<a href="http://en.wikipedia.org/wiki/Sarbanes-Oxley_Act">Sarbanes Oxley</a>).

<h2>Enable Versioning</h2>
You can only enable versioning when you [Create Tables] or [Import Data]. To enable, check the checkbox beside Versioning.

To see your version history for an item, go to the item and click on the <img src="/icons/crystal_project/32x32/mimetypes/file_temporary.png" /> icon in the [Content Header]. You will see a side-by-side comparison of the new version and the version that was saved previously. Choose older versions from the drop-down list containing version edit dates and times.

Versioning may not be available for some items.
Data Analysis
deleteedit40AuditingAuditing keeps track of who created an entry into the table and when. Adding auditing to your tables will allow you to use the [date search] feature to find all items created on a particular date.

You can also use auditing to quickly find all the items created by a particular user or setup security so that users can only see the items they have created.

<img src="/attachments/71aa356f-a1e3-4e2f-a880-3d8095cc6f6b/Auditing.png">

<strong>Please note the warning. To have the functionality to sync with your laptop you must select Auditing and Versioning.</strong>
Data Analysis
deleteedit57ReportsClick the reports icon <img align=absmiddle src="/icons/crystal_project/32x32/mimetypes/spreadsheet_document.png" alt="Reports"/></a> to view reports.

You can also filter the reports by clicking the <img align=absmiddle src="/icons/crystal_project/32x32/actions/filefind.png" alt="Search"/> on the Reports page.
Data Analysis
go to page: 1 2 3 4 5 6 7 8 9 10 243 records. Showing