Jump to content


Caspio Ninja
  • Posts

  • Joined

  • Last visited

  • Days Won


Posts posted by Becca37

  1. I have a potential client that wishes for a training management type application, where:

    • an anonymous user can see a public listing of available courses,
    • an anonymous user can put those items into a shopping cart
    • an anonymous user can see their shopping cart
    • that anonymous user is asked to login / create account once they elect to actually purchase the courses in their shopping cart

    The demo/template examples I can find are forcing login to put an item in a cart (e.g. online store template) or to even access the application at all (e.g. order management and training management templates).

    Is it possible to do an ecommerce application in Caspio without the user being forced to login prior to checkout?

  2. Hi @SunakoChan ... thanks. But that didn't work either.

    A lot more poking around and it was NOT being set by a Caspio style at all, {doh!}, it was being set by ...

    tbody tr:nth-child(even) 
        background: #F1F1F1;

    ... in the CSS of the parent theme to the child theme I'm using in WordPress.

    I was able to override it using:

    #myUserInfoSnippet tbody tr:nth-child(even)
        background: transparent;

    Thanks everyone! :0)

  3. Thanks @kpcollier

    I tried that, also with no success. 

    #myUserInfoSnippet [class*=cbFormTableEvenRow]
    	background-color: transparent;

    (The reason I don't want to make a new Caspio Style is that then I'd have to maintain any other Caspio Style changes in two places: the main Style and the modified Style for this one DataPage. Much cleaner maintenance-wise to just override this one instance via CSS.)

  4. I have a Details DataPage with two sections. I want both to have the same background as the first section.

    I've tried the suggested CSS overrides for .cbFormTableEvenRow (and more which shouldn't be needed, to my way of thinking) and am having no success.

    Anyone have ideas on what I'm doing wrong?




    <table data-cb-name="cbTable" id="cbTable_69d4f79f110319" class="cbFormTableCellspacing_69d4f79f110319 cbFormTable_69d4f79f110319" role="presentation">
    		<tr class="cbFormTableRow_69d4f79f110319">
    			<td colspan="2" class="cbFormDataCell_69d4f79f110319"><span class="cbFormData_69d4f79f110319"><div class="caspioClientInfo">CLIENT (1):<b> First Name Unknown Last Name Unknown</b></div> </span></td>
    			<td colspan="2" class="cbHTMLBlockContainer_69d4f79f110319">
    				<div id="returnToClientDetailsLink"><a href="/clients/client-details/?ClientRID=1" title="Cancels Input or Update">Return to Client Details</a></div>
    		<tr class="cbFormTableEvenRow_69d4f79f110319">
    			<td colspan="4" class="cbFormNestedTableContainer_69d4f79f110319">
    				<table class="cbFormNestedTableCellspacing_69d4f79f110319 cbFormNestedTable_69d4f79f110319" role="presentation">
    							<td class="cbHTMLBlockContainer_69d4f79f110319">
    								<div class="caspioClientInfo">File Status: <b>Error</b><span class="caspioSpacer"></span>Gender: <b>Unknown</b><span class="caspioSpacer"></span>Race: <b>Unknown</b><span class="caspioSpacer"></span>Born In Year: <b>Unknown</b></div>



  5. How do we use application parameters in TASKS?

    For instance, we will want to generate reports on a pre-set basis (e.g. daily, weekly, etc) to be sent from a particular email that's used application-wide and to another particular email that's used application-wide. From_Email and SendReportsTo_Email would be the application parameters.

    But when I try to put the application parameters into the task input fields, they won't validate. I can use them in DataPages, e.g. for password recovery and submission acknowledgements. Very frustrating to not be able to use them in tasks as well. So surely I'm missing something and just am not doing it right. So: How do we use application parameters in TASKS? :0)


  6. On 4/15/2019 at 1:29 PM, douvega said:


    If someone else face this limitation, I can recommend using API coding to get any amount of records you need created in your tables. 

    In case you are not an API savvy, you can still create your own logic by using Integromat (a service that lets you connect with dozens of apps without having to write code), you could even set up .csv uploads directly into Caspio tables.

    Hope it helps.


    Hi @douvega The number of records to be created wasn't the issue. It was the number of cascading triggers that caused the error. All resolved. Thanks though, APIs are an area I need to explore soon regardless. :0)

  7. Good morning :0)

    I have an Single Record Update DataPage that pulls in a list of information from another table using  a query in a virtual field calculated value formula. 

    This is great as far as it goes, I get the data I'm expecting and with the HTML tags (unordered list) I need.

    But I WANT (need ; have ; would really be best) to be able to display that resultant listing as HTML and I can't find a way to do that. 

    How do I make Caspio bend to my will? {insertEvilLaughterHere}




  8. On 4/15/2019 at 3:36 PM, jaxnz said:

    Thanks for the reply, I already have a header in my website with a placeholder for first name. I would like to display the data externally of a datapage, or report. 

    This is how I created what I call a "User Logged In Info Snippet" which also functions as the site's login/logout function. I used an HTML DataPage that has only the info I want to show and pulls in logged in user's first name, last name, and role, then provides the logout link. I put the deploy script for that DataPage into the header on the website.

    It would be possible to use a DataPage without authentication (so it does NOT show the login fields when the user is logged out) but I'm not so sure you'd be able to get to any Caspio data external to a DataPage entirely. 


  9. The thing I find most limiting on the free account is that DataPage limit. Even running into it being an issue on a paid plan due to the number of pages we need.

    A DataPage is a way of displaying or manipulating the data within a table or a view. There's no limit to the number of tables or views or tasks that you have behind the scenes. Just the number of DataPages that are used to expose your data for use.

    Say you have three tables. To create a form to add a record to the first table, well that will take one DataPage. If you want to be able to have your users edit those records they're adding, well, that will take another DataPage. And so on for the other two tables. So there's six pages right there. 

    Other than that lets see ... well, your example of field validation. And this is not free/not-free plan thing, Caspio just has very limited included validations, period. Caspio validates for data type. e.g. if the field in the data table is a number, the DataPage form won't accept alpha characters. It can also check for required input and you can set min characters and max characters. But you'd have to roll (or find) your own javascripts for any other validations or formatting you want done at submit (email addresses, phone number formats, SSN format, etc). 

    Tables and Views are also not what I was personally expecting. Table fields have limited manipulation that can be performed. e.g. you can't pull data in from another table. Even the Views merely join tables in the most basic way and you can't do counts, etc there either. That takes a report DataPage to do the aggregations. Again, I'm just used to much more freedom there.

    DataPages themselves are frustrating for me personally as I constantly bump up against their constraints of "can't do this, can't do that" and sometimes it takes me an hour to track down how to do something that would have taken 2 lines of SQL or C# code.

    All that said, I'm coming from a developer background with 2 decades of designing my own databases, writing queries, stored procedures, etc. and writing the code to get stuff in and out. So I see things here more from a limitation standpoint. But Caspio IS pretty darn powerful in what it can do in a low- to no-code manner, and for the users not used to rolling their own my bet is it's a wonderful beast all around. 


  10. I can't see all the logic for your criteria, but it looks like the outer container for all of them is an OR based on it's coloration. If taht's correct, if any one of the AND sets is matched the logic will return data based on that match regardless of the MBO value. 

    Are you wanting the MBO value to ALWAYS have impact? If so, you need another level of nested logic --> an AND as the outer countainer with its children being the MBO entry and the OR that contains currently contains all the rest.

    Also, you have the MBO parameter set to "if empty, ignore criteria". Which begs two questions:

    (a) ARE you passing the MBO parameter value?

    (b) Do you mean to ignore it if it's empty?

  11. I can't help any with the bulk auto-submit, but once you get it working you can hide the submit button by putting the following into the footer of the DataPage:

         document.getElementsByName('Mod0EditRecord')[0].style.display = 'none';


  12. You have a many to many relationship here -- many managers can be associated to many locations -- so you might want to start with normalizing your tables.


    You could then:

    (1) Query the location table for the location-specific search. to show all the locations with a link to each location's detail page (1 search DataPage).

    (2) Display the details of a location with all associated managers (two DataPages, leveraging the parent-child relationship and embedded into a single web page)

    (3) Display the details of a manager with all associated locations (another two DataPages, leveraging the parent-child relationship from the opposite direct and embedded into a single web page)



    There might be a less DataPage-heavy solution to do what you want, perhaps others have such ideas. :0)

  13. I'd *like* to be able to pass parameters in a URL of: ?ClientRID=ClientRIDValue&AdmissionRID=AdmissionRIDValue&Type=Client (or Admission)


    ClientRID -- a field in the target table

    AdmissionRID -- another field in that target table

    Type -- a purely virtual value which will tell me which field to query

    Then use logic in the search query such as:


         AND  [@Type] = "Client" +  [ClientRID] = [@ClientRID]

         AND [@Type] = "Admission" +  [AdmissionRID] = [@AdmissionRID]

    Can this be done?

    This would save me many DataPages to be able to dynamically create listings from a single DataPage instead of having to have 1 which pulls the listing for Clients and another which pulls the-otherwise-exactly-the-same-listing for Admissions. :0)

  14. OK, I was making this harder on myself than I had to. Simple javascript to check the update URL and hide if matches the url expected w/o an RID value or not, and replace if an exact match is found.

    	var myDiv = document.getElementById("recordUpdateLink");
    	if (myDiv.innerHTML == '<a href="/client/credentials-and-training/credentials-and-training-update/?RID=">Update</a>')
     		document.getElementById("recordUpdateLink").innerHTML = "No records found.";


  15. This is based on a view of ALL Clients and MATCHING CredentialsAndTraining records, therefore there will always be at least one empty record. 

    I cannot suppress the blank line due to other needs to have the one record from the Client data side always present. This is fine as far as it goes.

    In the tabular report I add an "update" link to enable the user to update existing records. Obviously this is pretty pointless on that empty row that shows up when the Client has no existing records.

    So, I need to change the value in "Column Y" in the tabular report based on a value being present or not in "Column X".

    e.g. hide the update link when no RID is present.

    Since this will only apply to this one unique scenario, I don't care if it's just the link being hidden, or if it's the whole column being hidden.


    TIA :0)



  16. On 4/5/2019 at 8:19 AM, Simong said:

    When displaying, click Edit beside Formatting. In pop upped Formatting Settings, Select Custom, then from the drop down menu choose what you want.

    Howdy! This works when the field is display only, but when it's a text field with calendar popup, there's no format option.

    If the OP wants the date and not the time on a user-changeable field they should use the option May Music recommended.

    Both are great options, but cover different scenarios. :0)


  17. I loaded the file but it errored on the datapage import. That's OK though, it gives me the "how the heck do I do that" part information I needed. Thanks much!

    Do you (or anyone) know if there's an easy way to test SQL that we can put into virtual fields? Right now I'm writing it in the DataPage's virtual element's formula input, "finishing" the DataPage, going to my web interface, loading the page, seeing that the results are not what I expect, returning to Caspio, opening the DataPage, navigating to the virtual element, tweaking the SQL, "finishing" the DataPage, going to my web interface, loading the page, seeing that the results are not what I expect, returning to Caspio, opening the DataPage, navigating to the virtual element, tweaking the SQL, .... well, you get the idea.

    It would be great if there's a tool within Caspio that just lets me input SQL and run the raw query, adjusting as needed until I get the desired results, than I can go put that useful SQL into the DataPage and finish. And be done. Is there one and I'm just not seeing it? :0)

  18. On 4/9/2019 at 6:25 AM, Andrew said:

    @Becca37 Hello!

    It is possible to implement such a workflow using Calculated field and additional JS code.
    The idea is to count entries with needed statuses within the table using Calculated Field.
    If there are more then 0 entries - we need to hide submission form and show the message.

    I created an APP for you. Please feel free to import it - JS_Dynamic_Disable_Submission_1_0_2019-Apr-09_1223.zip
    Let me know if you have any questions.

    Client credentials are:
    Login - Password
    client1 - 1
    client2 - 2
    client3 - 3

    Thanks! I'll have to take a look at this later today. :0)

  19. I have tables called Clients and Admissions.  One to many -- each Client can have multiple Admissions. The Admissions table has a status for every record (pending, open, or closed) but they are allowed to have only have one (1) unclosed (so 1 Pending OR 1 Open) admission at any given time.

    It would be easy peasy in a straight-up SQL stored procedure -- just query the count of open and pending records before insert and if either one already exists return a message saying as much and don't insert the new record. 

    How do I the equivalent of that in the CASPIO world?

  • Create New...