<?xml version="1.0"?>
<rss version="2.0"><channel><title>All Activity</title><link>https://forums.caspio.com/discover/</link><description>Caspio Community Forums - All Activity</description><language>en</language><item><title>Preventing Checkboxes from Deselecting in Tabular Report During Bulk Edit</title><link><![CDATA[https://forums.caspio.com/topic/40044-preventing-checkboxes-from-deselecting-in-tabular-report-during-bulk-edit/?do=findComment&comment=109650]]></link><description>@PotatoMato I'm not the original poster but I am currently having this issue. I attached a video as an example. Basically, while bulk editing, if I click anywhere in the table other than the checkboxes, it automatically un-selects everything I just selected. This is a problem because I need to interact with the table, or if I click somewhere on the table that is not a checkbox, I lose everything I just selected. 
 


	I know the gray boxes aren't ideal but I needed to cover some information. 

	 
		Unselecting-BulkEdit.mp4</description><pubDate>Thu, 28 May 2026 22:12:47 +0000</pubDate></item><item><title>Preventing Checkboxes from Deselecting in Tabular Report During Bulk Edit</title><link><![CDATA[https://forums.caspio.com/topic/40044-preventing-checkboxes-from-deselecting-in-tabular-report-during-bulk-edit/?do=findComment&comment=109649]]></link><description>OP, did you ever find a solution to this?</description><pubDate>Thu, 28 May 2026 21:43:00 +0000</pubDate></item><item><title><![CDATA[Deploying My First Caspio App — Tips & Best Practices]]></title><link><![CDATA[https://forums.caspio.com/topic/40549-deploying-my-first-caspio-app-%E2%80%94-tips-best-practices/?do=findComment&comment=109648]]></link><description>Hi @bizistech
 


	I'd like to share two tips worth keeping in mind when embedding Caspio DataPages on a website:
 


	Tip 1 &#x2014; Query string parameters and iframes
 


	 
	Some website builders render Caspio DataPages inside iframes. This can cause issues when your workflow relies on passing query string parameters, because an iframe cannot read query string parameters from its parent page's URL by default. To work around this, you may need to add JavaScript to the parent webpage that reads the query string value and explicitly passes it into the child iframe.
 


	Tip 2 &#x2014; Domain mismatch and cookie blocking
 


	 
	If your website domain differs from Caspio's default URL domain, some browsers &#x2014; particularly on iPhones &#x2014; may treat the embedded content as third-party and block cookies by default. This can cause issues with Caspio DataPages that rely on cookies, especially password-protected ones.
 


	To prevent this, you should create a custom subdomain based on your website's domain and connect it to Caspio by following these guidelines: 
	 
	https://howto.caspio.com/manage-account-and-billing/custom-domain/</description><pubDate>Wed, 27 May 2026 10:40:19 +0000</pubDate></item><item><title>Turning a Calculated Field into a Details Page Link on a Tabular Report</title><link><![CDATA[https://forums.caspio.com/topic/40557-turning-a-calculated-field-into-a-details-page-link-on-a-tabular-report/?do=findComment&comment=109647]]></link><description><![CDATA[Hi Caspians 
	 
 


	I needed to turn a calculated field on a tabular report into a clickable details link.
 


	Having a separate details page and tabular report page was not an option due to DataPage number limits, and a formula field in the table could not be used either, as the value needed to be computed using a SELECT from another table.
 


	As a workaround, JavaScript can be used to turn the calculated field into a clickable link that opens the default details page built into the tabular report.
 


	Assuming you have already added the Details Page as the "Default Action Link" in your tabular report settings, add the following code to the header of your tabular report:
 


	 
 

&lt;style&gt;

form[action*="[@cbAppKey]"] td.cbResultSetCalculatedField:nth-child(5):hover {
cursor: pointer;
text-decoration: underline;
}
form[action*="[@cbAppKey]"] td.cbResultSetCalculatedField:nth-child(5){
color: #0077BE;
}
a[data-cb-name="DetailsLink"] {
display: none;
}
.RAItem:has(a[data-cb-name="DetailsLink"]) {
display: none!important;
}
&lt;/style&gt;

&lt;script&gt;
if (document.DataPageReadyHandler == undefined) {

const caclulatedFieldColumn = 5

const clickOnDetails = (HTMLtr) =&gt; {
HTMLtr.querySelector('a[data-cb-name="DetailsLink"]').click()
}

const addClickEventListener = () =&gt; {
document.querySelectorAll(`form[action*="[@cbAppKey]"] td.cbResultSetCalculatedField:nth-child(${caclulatedFieldColumn})`).forEach(td=&gt;{
td.addEventListener('click', (e)=&gt;{
clickOnDetails(e.target.parentElement)
}, true)

})
}


const DataPageReadyHandler = (e) =&gt; {
 if (e.detail.appKey != '[@cbAppKey]') { return }
 addClickEventListener()
}

document.addEventListener('DataPageReady', DataPageReadyHandler)
document.DataPageReadyHandler = 'Enabled'
}

&lt;/script&gt;


	 
	Replace the value 5 in the code in 3 places to match the position of your calculated field in tabular report. 
	 
 


	Hope this helps!]]></description><pubDate>Wed, 27 May 2026 10:17:52 +0000</pubDate></item><item><title>Max Attachment Storage in Caspio Flex</title><link><![CDATA[https://forums.caspio.com/topic/40461-max-attachment-storage-in-caspio-flex/?do=findComment&comment=109645]]></link><description>From what I understand, Caspio Flex uses the Attachment data type for storing uploaded files directly in table fields. In the Attachment settings, you can control allowed file types and set minimum/maximum file size, with the maximum upload size listed as 1024 MB. So it is not exactly &#x201C;unlimited&#x201D;; it still depends on the field settings and your account/storage limits. For older Bridge file uploads, the max is usually different, so make sure you are checking Flex Attachment and not the regular File field. Bizistech also covered similar app storage questions recently. 
	contact with :  
	+44 77 5489 5905 
	+1 (210) 756 -1016 
	info@bizistech.com 
	Office# 205, 2nd Floor Weidong Long Commercial Plaza, Longhua District, Shenzhen.</description><pubDate>Mon, 25 May 2026 04:58:16 +0000</pubDate></item><item><title>Creating User-Specific Redirects After Login on Flex</title><link><![CDATA[https://forums.caspio.com/topic/40555-creating-user-specific-redirects-after-login-on-flex/?do=findComment&comment=109644]]></link><description><![CDATA[Hi there! 
	 
	I wanted to share my experience deploying a Flex app on a third-party website — specifically, implementing a single login interface that conditionally redirects users based on their role. This is essentially the scenario described in this article for Bridge, but adapted for Flex: https://howto.caspio.com/tech-tips-and-articles/create-user-specific-redirect-after-login/ 
	 
 


	Here are the steps:
 


	1. Under the Roles section in your Flex app, create a Role that includes all authorized application users.
 


	2. Create an AppPage under this Role and add an HTML block with the following code:| 
	 
 


	 
 

&lt;script&gt; 

function sendToParent() { 

let redirectURL='' 

if("[@authfield:Role]" == "Admin") { 

redirectURL='https://yourwebsite.com/admin_home_page' 

} 

else if ("[@authfield:Role]" == "Manager"){ 

redirectURL='https://yourwebsite.com/manager_home_page' 

} 

else if ("[@authfield:Role]" == "Employee") { 

redirectURL='https://yourwebsite.com/employee_home_page' 

} 

  window.parent.postMessage( 

    { type: 'iframeMessage', value: redirectURL }, 

    'https://yourwebsite.com/' 

  ) 

} 

sendToParent() 

&lt;/script&gt;


	 
	 
 


	3. The code will need to be modified as follows:
 


	
		3.1 Ensure "[@authfield:Role]" references the exact name of the field where you store roles.
	
	
		3.2 Replace "Manager", "Employee", and "Admin" with your actual role names.
	
	
		3.3 Remove any excess else if blocks if you have fewer than 3 roles, or add additional else if blocks by the same pattern if you have more.
	
	
		3.4 Replace all instances of https://yourwebsite.com/ with your actual website URL.
	
	
		3.5 Update each redirectURL value to point to the correct page for each user role. 
		 
	



	 
 


	4. Add the AppPage deployment code to your dedicated login page on your website.
 


	5. Add the following code above the AppPage deployment code on your login page:
 

&lt;script&gt; 

window.addEventListener('message', (event) =&gt; { 

   if (!event.data || event.data.type !== 'iframeMessage') return 

  const redirectURL = event.data.value 

  console.log('Received:', redirectURL) 

  window.location.href = redirectURL 

}) 

&lt;/script&gt;


	 
	 
 


	Here is a brief explanation of how this workaround works:
 


	When a Flex AppPage is deployed on a third-party website, it is rendered as an iframe. Because of this, it is not possible to directly trigger a redirect from within the AppPage, as an iframe cannot change the URL of its parent page.
 


	To work around this, we use the `window.parent.postMessage` function, which allows the iframe to send a message to the parent page. In our case, that message contains the redirect URL determined by the user's role.
 


	The parent page listens for this message and, once received, uses the redirect URL to navigate the user to the appropriate page.]]></description><pubDate>Thu, 21 May 2026 14:43:30 +0000</pubDate></item><item><title>Are Low-Code Platforms Replacing Traditional Development?</title><link><![CDATA[https://forums.caspio.com/topic/40553-are-low-code-platforms-replacing-traditional-development/?do=findComment&comment=109642]]></link><description>I&#x2019;ve noticed more businesses moving toward low-code platforms like Caspio because they help launch apps much faster compared to traditional development. A lot of discussions now focus on automation, database management, API integrations, and custom UI improvements. I was recently talking about this with a few people at Bizistech, and it feels like low-code tools are becoming a serious option even for complex business applications. Of course, customization can still be challenging sometimes, especially when projects grow bigger. Do you think low-code platforms will eventually replace part of traditional development workflows?</description><pubDate>Tue, 19 May 2026 05:40:26 +0000</pubDate></item><item><title>Separating Input Fields for Date/Time Parts - Flex</title><link><![CDATA[https://forums.caspio.com/topic/40552-separating-input-fields-for-datetime-parts-flex/?do=findComment&comment=109641]]></link><description>Thank you @Volomeister, this is helpful!</description><pubDate>Fri, 15 May 2026 07:54:19 +0000</pubDate></item><item><title>Separating Input Fields for Date/Time Parts - Flex</title><link><![CDATA[https://forums.caspio.com/topic/40552-separating-input-fields-for-datetime-parts-flex/?do=findComment&comment=109640]]></link><description><![CDATA[Hi everyone!
 


	I recently tried to implement the workflow described in this article, but adapted for Flex: 
	https://howto.caspio.com/tech-tips-and-articles/separate-input-fields-for-datetime-parts/
 


	Below is an updated configuration to account for Flex. Keep in mind that at the table level, the Date/Time data type stores values in MM/DD/YYYY or MM/DD/YYYY HH:MM:SS format only, so the solution must handle the conversion from 12-hour input format to 24-hour output format accordingly.
 


	I have put together two variations — one for 12-hour input format and one for 24-hour input format. 
	 
	 
 


	12-HOUR INPUT FORMAT
 


	Pre-requisites:
 


	1. On the submission form DataPart, add the following virtual fields:
 


	- Virtual 1 — Date picker: use a Date input Calendar Popup text field form element. 
	- Virtual 2 — Hours picker: use a drop-down with values from 01 to 12. 
	- Virtual 3 — Minutes picker: use a drop-down with values from 00 to 59. I recommend creating a lookup table for this. 
	- Virtual 4 — Seconds picker: use a drop-down with values from 00 to 59. I recommend creating a lookup table for this. If seconds are not required, set it as a hidden field with a default value of 00. 
	- Virtual 5 — AM/PM picker: use a drop-down with AM and PM as values. 
	- Virtual 6 — Calculated value field that returns the hour in 24-hour format based on Virtual 2 and Virtual 5. Use the following formula: 
	 
	``` 
	CASE 
	WHEN ([@runtimefield:_Virtual 5]='AM' AND [@runtimefield:_Virtual 2]!='12' ) OR ( [@runtimefield:_Virtual 5] = 'PM' AND [@runtimefield:_Virtual 2] = '12') 
	THEN 
	CAST([@runtimefield:_Virtual 2] AS INT) 
	WHEN [@runtimefield:_Virtual 5]='AM' AND [@runtimefield:_Virtual 2] = '12' 
	THEN  
	0 
	WHEN LEN(ISNULL([@runtimefield:_Virtual 5], ''))&gt;0 AND CAST([@runtimefield:_Virtual 2] AS INT) &lt; 12 
	THEN 
	CAST([@runtimefield:_Virtual 2] AS INT)+12 
	ELSE 0 
	END 
	```
 


	2. Add the DateTime field as a calculated value using the following formula:
 


	``` 
	DATEADD(second, CAST([@runtimefield:_Virtual 4] AS INT), DATEADD(minute, CAST([@runtimefield:_Virtual 3] AS INT), DATEADD(hour, CAST([@runtimefield:_Virtual 6] AS INT), CAST([@runtimefield:_Virtual 1] AS DATETIME)))) 
	``` 
	 
	3. You can hide Virtual 6 and the DateTime field using rules by creating a condition that always evaluates to true. Make sure to check the "Save hidden values" checkbox. 
	 
	 
	 
	 
	 
	 
	 
	 
 


	24-HOUR INPUT FORMAT
 


	The 24-hour format is simpler since no AM/PM conversion is needed.
 


	Pre-requisites:
 


	1. On the submission form DataPart, add the following virtual fields:
 


	- Virtual 1 — Date picker: use a Date input Calendar Popup text field form element. 
	- Virtual 2 — Hours picker: use a drop-down with values from 00 to 23. 
	- Virtual 3 — Minutes picker: use a drop-down with values from 00 to 59. I recommend creating a lookup table for this. 
	- Virtual 4 — Seconds picker: use a drop-down with values from 00 to 59. I recommend creating a lookup table for this. If seconds are not required, set it as a hidden field with a default value of 00.
 


	2. Add the DateTime field as a calculated value using the following formula:
 


	``` 
	DATEADD(second, CAST([@runtimefield:_Virtual 4] AS INT), DATEADD(minute, CAST([@runtimefield:_Virtual 3] AS INT), DATEADD(hour, CAST([@runtimefield:_Virtual 2] AS INT), CAST([@runtimefield:_Virtual 1] AS DATETIME)))) 
	```]]></description><enclosure url="https://media.invisioncic.com/r269793/monthly_2026_05/image.png.b67b2d6c6ee1dd76caaa82ccacf4e592.png" length="38407" type="image/png"/><pubDate>Thu, 14 May 2026 11:03:52 +0000</pubDate></item><item><title><![CDATA[Deploying My First Caspio App — Tips & Best Practices]]></title><link><![CDATA[https://forums.caspio.com/topic/40549-deploying-my-first-caspio-app-%E2%80%94-tips-best-practices/?do=findComment&comment=109636]]></link><description>Hi everyone!  I&#x2019;ve built my first application using Caspio&#x2019;s visual app builder and now I&#x2019;m preparing for deployment. I&#x2019;ve read some deployment guidelines like how to upload DataPages and manage HTML/JS customizations, but I&#x2019;m curious what real deployment tips have helped others avoid small issues in production. Any steps you recommend before going live?
 


	Also, I manage a tech site called Bizistech and would love to share what I learn here too!</description><pubDate>Fri, 08 May 2026 05:32:35 +0000</pubDate></item><item><title>AI support in forms and reports</title><link><![CDATA[https://forums.caspio.com/topic/40538-ai-support-in-forms-and-reports/?do=findComment&comment=109632]]></link><description><![CDATA[Hi.
 


	@KG360 @360cognition
 


	So I finished my workflow in Bridge, and I will share details below. In my application, I gather the meeting summary into the tex( 64000) field, and I want AI to analyze this and break it down to extract key information (who attended, date, place, key points, and so on).
 


	Presequites: Summary table that has ID field, 'summary' field, 'GPTresponse' status field, 'approved' field, and any additional field to be populated by AI
 


	Steps:
 


	1. In AI-Powered GPT Connect,  create the agent that, upon submission to the summary table, analyzes the summary and fills other fields accordingly. Make sure your agent populates a GPT response status field
 


	
 


	2. Create a Submission Form 1 (MeetingReports Web Form) where you want to collect the summary submitted by the user. Keep it simple, signalise to the user that upon submission, they will be redirected to the AI-generated result
 


	3. Create a Details Report 2 (MeetingReports Details). Here, users can see their submitted summary and edit other AI-generated fields' values if needed. Once they hit Update, the 'approved' field should be set to 'true'. This way, we know the submission is completed
 


	4. Create another Details Report 3 (MeetingReports CheckIfGenerated), this one will be a middle step, where the user 'waits' until the AI response is ready. This form needs only the Header&amp;Footer. 
 


	a) Open the Footer. Add the code: 
	 
 


&lt;script&gt;
function checkGPT() {

    const gpt = "[@field:GPTresponse]";

    if (!gpt || gpt.trim() === "") {
        // still empty → reload page (re-run Caspio DataPage)
setTimeout(function () {
            location.reload();
}, 6000)
    } else {
        // value exists → redirect
        window.location.href = "YourURL?ReportID=[@field:ReportID]";
    }


}

document.addEventListener("DataPageReady", checkGPT);
&lt;/script&gt;


	This snippet will keep reloading your DataPage until the GTP response field is not null ( so the agent has finished working). Then it will take the user to the landing page (The MeetingReports Details)
 


	Replace [@field:GPTresponse] with your own field. Replace YourURL with the Details Report from step 3. Replace ReportID=[@field:ReportID] with your ID field.
 


	b) Open the Header, add the code:
 

&lt;style&gt;
.cbUpdateButton{
display:none !important;
}


.loader-wrap {
  height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  font-family: system-ui, -apple-system, sans-serif;
  color: #374151;
  background: #ffffff;
}

.spinner {
  width: 40px;
  height: 40px;
  border: 3px solid #e5e7eb;
  border-top: 3px solid #111827;
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}

.message {
  margin-top: 12px;
  font-size: 14px;
  color: #6b7280;
}

@keyframes spin {
  to { transform: rotate(360deg); }
}
&lt;/style&gt;

&lt;div class="loader-wrap"&gt;
  &lt;div class="spinner"&gt;&lt;/div&gt;
  &lt;div class="message"&gt;Generating report...&lt;/div&gt;
&lt;/div&gt;


	This one will create a spinner icon that will signal to the user that their AI response is being generated
 


	5. Final step: link all the DataPages together. Upon the submission of the Submission Form  1 (MeetingReports Web Form), we want to redirect to the Details Report 3 (MeetingReports CheckIfGenerated). Make sure you pass the ID field parameter correctly.
 


	Now the workflow is ready.
 


	 
 


	That's all from my side, it was fun to work on. 
 


	Cheers! L]]></description><enclosure url="https://media.invisioncic.com/r269793/monthly_2026_05/image.png.aaf80f34f99beccd317158cf31620bdf.png" length="4918" type="image/png"/><pubDate>Fri, 01 May 2026 10:17:42 +0000</pubDate></item><item><title>Query Parameters</title><link><![CDATA[https://forums.caspio.com/topic/40309-query-parameters/?do=findComment&comment=109631]]></link><description>Hello everyone!
 


	 
 


	Just wanted to add one point here, and it's regarding the SID parameter. When there is an SID parameter, the new AppPage will have access to the DataPart fields from the previous page.
 


	 
 


	This is specifically useful when we have custom links. If there is an HTML Block that you have, and you're navigating to a different link. 
 


	For example, you passed a parameter to a page where you have a custom-coded navigation bar that has multiple links in your AppPage. If you put in an SID parameter in each of the links, all of the links will have access to the parameter you first passed! 
 


	 
 


	But if you don't have HTML Links, maybe you will have no use for SIDs.
 


	https://howto.caspio.com/create-applications/creating-apps-with-flex/application-design/communication-between-dataparts/
 


	 
 


	Good luck!</description><pubDate>Thu, 30 Apr 2026 22:15:49 +0000</pubDate></item><item><title>Cannot pass parameter to destination after submission</title><link><![CDATA[https://forums.caspio.com/topic/40545-cannot-pass-parameter-to-destination-after-submission/?do=findComment&comment=109630]]></link><description>Anytime @whiteflower
 


	 
 


	Also wanted to add here, of course if you're updating a field OTHER THAN the view join field, the parameter will pass normally.
 


	 
 


	Additionally, it is not only on the redirection part! If you have email enabled, you won't be able to use ANY of the fields of the whole view.
 


	 
 


	In that case, it would be better to use a Triggered Action to send your email. Unless you only want to email a few fields, then maybe the Virtual Field approach could suffice.
 


	 
 


	Goodluck!</description><pubDate>Thu, 30 Apr 2026 15:43:10 +0000</pubDate></item><item><title>Cannot pass parameter to destination after submission</title><link><![CDATA[https://forums.caspio.com/topic/40545-cannot-pass-parameter-to-destination-after-submission/?do=findComment&comment=109629]]></link><description>Worked perfectly @chumkirebzi. Thanks!!</description><pubDate>Thu, 30 Apr 2026 15:38:17 +0000</pubDate></item><item><title>Cannot pass parameter to destination after submission</title><link><![CDATA[https://forums.caspio.com/topic/40545-cannot-pass-parameter-to-destination-after-submission/?do=findComment&comment=109628]]></link><description>Hey @whiteflower!
 


	 
 


	I assume what you mean is that you're being redirected, but the parameter is blank. I think I see where the issue is..
 


	 
 


	By the name of your fields, it seems that you are using a View. And given that the OrdersF_Order_Status is an integer, you're using a lookup table, which would mean that the Orders_F_Order_Status is one of the View fields.
 


	 
 


	In that case, that is expected. You're updating a field that is used in the View, and after submission, the system will not be able to see the record because it got updated. I like to think of it as 'losing' the record for a moment. 
 


	 
 


	What you can do is to insert a virtual field in your DataPage, call the parameter you want to pass there, then use the virtual field in the redirection, like this:
 


	
 


	
 


	  
 


	 
 


	Goodluck!</description><enclosure url="https://media.invisioncic.com/r269793/monthly_2026_04/image.png.36b74587c15cef2da40c9e46a3b5071d.png" length="24823" type="image/png"/><pubDate>Thu, 30 Apr 2026 15:06:47 +0000</pubDate></item><item><title>Cannot pass parameter to destination after submission</title><link><![CDATA[https://forums.caspio.com/topic/40545-cannot-pass-parameter-to-destination-after-submission/?do=findComment&comment=109627]]></link><description>I'm building an application for our ordering system. I wanted to have a page with an autosubmit that automatically sets our order status to 'Completed', then redirect to our completed page.
 


	 
 


	Before doing the autosubmit, i was testing out the form, but it seems that the parameter is not included? 
 


	The OrdersF_Order_ID is in the form.. not editable though. Only the status is.
 


	
 


	 
 


	Any help?</description><enclosure url="https://media.invisioncic.com/r269793/monthly_2026_04/image.png.401869b6a6b866b7bc3672df6d2b220d.png" length="21252" type="image/png"/><pubDate>Thu, 30 Apr 2026 15:00:33 +0000</pubDate></item><item><title>Concatenate fields that are not blank</title><link><![CDATA[https://forums.caspio.com/topic/19006-concatenate-fields-that-are-not-blank/?do=findComment&comment=109625]]></link><description><![CDATA[Hello, just wanted to add in the previous comments above, you can use CASE expressions (or NULLIF) to skip blank/null values during concatenation. Here are the most common approaches:
 


	Option 1: Using CASE WHEN (Most Compatible)
 


	  LTRIM( 
	    CASE WHEN field1 IS NOT NULL AND field1 &lt;&gt; '' THEN ', ' + field1 ELSE '' END + 
	    CASE WHEN field2 IS NOT NULL AND field2 &lt;&gt; '' THEN ', ' + field2 ELSE '' END + 
	    CASE WHEN field3 IS NOT NULL AND field3 &lt;&gt; '' THEN ', ' + field3 ELSE '' END 
	  , ', ') 
 


	 
	Option 2: Using COALESCE + CONCAT 
 


	  STUFF( 
	    COALESCE(CASE WHEN field1 &lt;&gt; '' THEN ', ' + field1 END, '') + 
	    COALESCE(CASE WHEN field2 &lt;&gt; '' THEN ', ' + field2 END, '') + 
	    COALESCE(CASE WHEN field3 &lt;&gt; '' THEN ', ' + field3 END, ''), 
	  1, 2, '')
 


	You may try the two possible workarounds.]]></description><pubDate>Wed, 29 Apr 2026 23:50:24 +0000</pubDate></item><item><title>Pie Chart in Flex only returns counts in percentages.</title><link><![CDATA[https://forums.caspio.com/topic/40540-pie-chart-in-flex-only-returns-counts-in-percentages/?do=findComment&comment=109622]]></link><description>Hello @jnordstrand,
 


	I&#x2019;m afraid that in Flex, the Pie Chart currently only supports displaying values as percentages. Maybe more options will be added in the future.
 


	In Bridge, however, the options you`re looking for are available. If the "Show value as percentage" checkbox is unchecked, the chart will display whole numbers instead. 
	For example:
 


	 
	 
 


	While this isn`t an ideal solution, one possible workaround is to create the chart in Bridge and then deploy it in Flex.
 


	For example, you can embed the Bridge chart by adding the embed code to a Flex Text/HTML DataPart. 
	If you need additional assistance, feel free to update this thread.</description><enclosure url="https://media.invisioncic.com/r269793/monthly_2026_04/image.png.00c80eb9b13e1f72c3d11c172a005b68.png" length="13457" type="image/png"/><pubDate>Tue, 28 Apr 2026 11:08:43 +0000</pubDate></item><item><title>Query to get only numbers from a string</title><link><![CDATA[https://forums.caspio.com/topic/20522-query-to-get-only-numbers-from-a-string/?do=findComment&comment=109621]]></link><description>Hello, just wanted to add to this post. Since you know the numbers always start at position 3 (after the 2-character prefix), you can use SUBSTRING to skip the prefix and then PATINDEX to find where the digits end. Here's a formula that handles all your cases:
 


	CAST( CASE WHEN PATINDEX('%[^0-9]%', SUBSTRING([@field:YourField], 3, LEN([@field:YourField]))) = 0 THEN SUBSTRING([@field:YourField], 3, LEN([@field:YourField])) ELSE SUBSTRING([@field:YourField], 3, PATINDEX('%[^0-9]%', SUBSTRING([@field:YourField], 3, LEN([@field:YourField]))) - 1) END AS INT)</description><enclosure url="https://media.invisioncic.com/r269793/monthly_2026_04/image.png.a115276c8c5cb8e0622e23ad0b2a24bc.png" length="13712" type="image/png"/><pubDate>Mon, 27 Apr 2026 21:19:22 +0000</pubDate></item><item><title>Background of the cell</title><link><![CDATA[https://forums.caspio.com/topic/17192-background-of-the-cell/?do=findComment&comment=109620]]></link><description>Hello, just wanted to add to this post. I have also some articles to share that might help on this but this works on results page after data submission: 
	 
	https://howto.caspio.com/tech-tips-and-articles/how-to-dynamically-change-the-background-of-a-results-page/
 


	https://howto.caspio.com/tech-tips-and-articles/customize-background-and-font-colors-in-report-datapage/</description><pubDate>Mon, 27 Apr 2026 20:54:39 +0000</pubDate></item><item><title>Hyperlink Button question</title><link><![CDATA[https://forums.caspio.com/topic/40529-hyperlink-button-question/?do=findComment&comment=109619]]></link><description><![CDATA[Hello everyone,
 


	I would like to share two observations.
 


	First, creating a custom button to open a link in a new window may be redundant, as Flex already offers this as a built-in feature. You can simply add a Record control to your report, set its Action to “Go to URL”, and check the “open in new tab” option. You can also pass parameters there (e.g., record ID), avoiding the need for custom CSS and additional complexity.
 


	
 


	 
 


	 
 


	 
 


	However, if a custom button is still required, I’d like to suggest the following approach, based on @Kenzo's solution with a small enhancement:
 


	In your HTML block, add:
 

&lt;div class="cell-actions"&gt;
  &lt;a class="btn-custom p-component p-button" role="button"&gt;My Button&lt;/a&gt;
&lt;/div&gt;



	And in your description field:
 

&lt;style&gt;

/* Hide button by default */
tr .btn-custom {
  opacity: 0;
  visibility: hidden;
}

/* Show when the row is hovered */
tr:hover .btn-custom {
  opacity: 1;
  visibility: visible;
}

/* Right-align the button container */
.cell-actions {
  display: flex;
  justify-content: flex-end;
}

/* Remove underline */
.btn-custom {
  text-decoration: none;
}

&lt;/style&gt;



	The main differences are:
 


	
		
			Instead of creating styles for .btn-custom from scratch, I reused existing Flex classes (p-component, p-button) 
			(Note: these classes may change in future releases)
		 
	
	
		
			The button is right-aligned using the .cell-actions wrapper, matching the native Flex button alignment
		 
	
	
		
			The button is only visible when the row is hovered over
		 
	



	 
 


	Overall, I would recommend using Flex’s native Record controls whenever possible.
 


	Regards, Manatee]]></description><enclosure url="https://media.invisioncic.com/r269793/monthly_2026_04/image.png.0894631d4d1d5a58d31cb851c80e53ab.png" length="47067" type="image/png"/><pubDate>Mon, 27 Apr 2026 14:00:21 +0000</pubDate></item><item><title>MCP - Cannot got get Web services profile for MCP to connect with Claude</title><link><![CDATA[https://forums.caspio.com/topic/40541-mcp-cannot-got-get-web-services-profile-for-mcp-to-connect-with-claude/?do=findComment&comment=109618]]></link><description><![CDATA[Hi @Corpcatalog!
 


	Have you succeeded in connecting Claude with the Caspio MCP server? 
 


	It looks like Claude is currently developing their flow with Connectors, and as of today, it is still a Beta version. 
 


	 
 


	I have just connected to the Caspio MCP following these steps:
 


	 
 


	1. Start by creating a Caspio Web Services Profile. Make sure to create and save the profile before going to the next steps.
 


	https://howto.caspio.com/integrate-your-apps/web-services-api/creating-a-web-services-api-profile/
 


	 
 


	2. Open Customize &gt; Connectors &gt; then select Add custom connector
 


	
 


	 
 


	 
 


	3. Provide the Caspio MCP URL https://mcp.caspio.com/mcp, and name your connector. Skip advanced settings and hit Add
 


	
 


	 
 


	4. Then, if you don't see it under 'Not connected' (like in my case), you'll need to open a three-dot button and disconnect it first
 


	
 


	 
 


	5. After this, you will hit Connect
 


	
 


	 
 


	6. This will take you to the Caspio interface, where you will provide the Integration URL, Client secret, and Client ID. All of which you will grab from your Web Services Profile in Caspio
 


	
 


	 
 


	7. Hit connect, and you should be able to use the connector. Just type 'Query my tables' in the Claude chat window and see how it goes 
 


	 
 


	Give this a try and let me know how it went!
 


	Regards, Manatee]]></description><enclosure url="https://media.invisioncic.com/r269793/monthly_2026_04/image.png.ab7eb79654cb2f2254835056820bce81.png" length="80870" type="image/png"/><pubDate>Fri, 24 Apr 2026 12:55:18 +0000</pubDate></item><item><title>AI support in forms and reports</title><link><![CDATA[https://forums.caspio.com/topic/40538-ai-support-in-forms-and-reports/?do=findComment&comment=109617]]></link><description>Hello KG,
 


	Sure, I can give more details, but the solution is pretty straightforward. So maybe you have questions regarding any of the steps in particular?
 


	Regards! L</description><pubDate>Tue, 21 Apr 2026 14:45:23 +0000</pubDate></item><item><title>MCP - Cannot got get Web services profile for MCP to connect with Claude</title><link><![CDATA[https://forums.caspio.com/topic/40541-mcp-cannot-got-get-web-services-profile-for-mcp-to-connect-with-claude/?do=findComment&comment=109616]]></link><description>Totally understandable frustration &#x2014; you've done everything right and it still doesn't work because of a gap between what Caspio and Claude each say they support vs. what actually works end-to-end today.
 


	The honest situation:
 


	
		Caspio built their MCP server using a Bearer token / API key model (standard REST auth)
	
	
		Claude's web connector only supports OAuth 2.1 with Dynamic Client Registration (a much newer, more complex standard)
	
	
		Neither side documented this incompatibility &#x2014; they both just published "we support MCP!" without making sure they're speaking the same auth dialect
	
	
		The OAuth Client ID/Secret fields in Claude's Advanced settings look like they should work for Caspio's credentials, but they're actually for a completely different purpose
	



	It's a classic case of two companies marketing the same buzzword (MCP) without actually testing the integration together. The GitHub issue confirms other users are hitting the exact same wall.
 


	The most practical path right now is Claude Desktop, which does support Bearer tokens and would actually work. Want me to walk you through that setup? It takes about 5 minutes &#x2014; you'd get your Bearer token from Caspio's API using your Client ID/Secret, then add a small config entry to Claude Desktop, and the List_tables call would work natively in conversation just like you originally expected. 
	 
	"Honestly this is just not good enough!</description><pubDate>Tue, 21 Apr 2026 01:34:08 +0000</pubDate></item><item><title>MCP - Cannot got get Web services profile for MCP to connect with Claude</title><link><![CDATA[https://forums.caspio.com/topic/40541-mcp-cannot-got-get-web-services-profile-for-mcp-to-connect-with-claude/?do=findComment&comment=109615]]></link><description>I have been trying for hours to get the Caspio MCP to work with Claude. Has anybody had any success with this? 
	It seems to add the connector but there is not dialog box to add the toke, ID etc in the last step of adding the connector in claude</description><pubDate>Tue, 21 Apr 2026 01:30:54 +0000</pubDate></item></channel></rss>
