Jump to content

Vitalikssssss

Caspio Evangelist
  • Content Count

    522
  • Joined

  • Last visited

  • Days Won

    52

Posts posted by Vitalikssssss

  1. Hi @ryancys,

    You would need to use separate from the the search which will be based on Submission Form.

    You may use Virtual fields for this Submission Form. Virtual fields can pass parameters to the report to filter the data.

    Also, you would need to embed both Submission Form and Report on single web-page.

    The concept described in this article: https://howto.caspio.com/tech-tips-and-articles/tech-parameters/add-a-search-interface-to-results-sets-page/

    Calculated Value datatype is available on Submission Form and Single Record Update Form. 

    Hope this helps.

    Regards,

    vitalikssssss

  2. Hi @galen,

    Please make sure that you do not do the following:


    - Collecting passwords on Text Fields (using label of the non-Password data type field as "Password").
    - And/or have any notification/acknowledgment email that sends passwords in the body.

    You should contact Caspio Support if it does not help.

    Regards,

    Vitalikssssss

     

  3. Hi @CoreyH,

    It is possible to create such a layout without declaring table in HTML block.

    I do not recommend using your approach because it will also need a cumbersome Javascript which would take a value from declared inputs and paste into Caspio inputs (fields).

    You can use the following feature in order to tweak the layout:

    1. "No Label" for a field;

    2. "Continue Next Element on the same line";

    3. HTML blocks for labels;

    You will be able to configure the DP like this:
    6MBD9Bu.png

    Hope this helps.

    Regards,

    vitalikssssss

     

     

  4. Hi @randybow,

    The Date&Time comparison methods is not available in View if you use the formula field as far as I understood. 

    You need to make sure that each logic block of your CASE expression returns Date&Time datatype.

    Please try the following expression:

    CASE
    
       WHEN [@field:endDate] Is Null THEN CONVERT(Datetime, '06/01/2020', 101)
    
    
       ELSE CONVERT(Datetime, [@field:endDate], 101)
    
    END

    Hope this helps.

    Regards,

    vitalikssssss

     

  5. Hi @kpcollier,

    Try the following JavaScript:

    <script type="text/javascript">
    
    function formatAsDollars(el) {
    el.value = el.value.replace(/[^\d]/g,'').replace(/(\d\d?)$/,'$1').replace(/^0+/,'').replace( /\d{1,3}(?=(\d{3})+(?!\d))/g , "$&,");
    el.value = el.value ? '$' + el.value : '';
    }
    
    var fields = ["Subtotal", "MarkUp", "County_Tax", "Misc_Percent", "Freight_Total"]; //specify your fields here
    
    fields.forEach(element => {
        element = "InsertRecord" + element; // replace "InsertRecord" with "EditRecord" for Details/Single Record Update DP 
        document.getElementById(element).onkeyup = function() {
            formatAsDollars(this);
        }
        document.getElementById(element).onchange= function() {
            formatAsDollars(this);
        }
    });
    
    function calculate() {
    
        var subTotal = document.getElementById("InsertRecordSubtotal").value.length == 0 ? 0 : (parseFloat(document.getElementById("InsertRecordSubtotal").value.replace(/[$,]+/g,"")));
        var markUp = document.getElementById("InsertRecordMarkUp").value.length == 0 ? 0 : (parseFloat(document.getElementById("InsertRecordMarkUp").value.replace(/[$,]+/g,"")));
        var countyTax = document.getElementById("InsertRecordCounty_Tax").value.length == 0 ? 0 : (parseFloat(document.getElementById("InsertRecordCounty_Tax").value.replace(/[$,]+/g,"")));
        var miscPerc = document.getElementById("InsertRecordMisc_Percent").value.length == 0 ? 0 : (parseFloat(document.getElementById("InsertRecordMisc_Percent").value.replace(/[$,]+/g,"")));
        var freight = document.getElementById("InsertRecordFreight_Total").value.length == 0 ? 0 : (parseFloat(document.getElementById("InsertRecordFreight_Total").value.replace(/[$,]+/g,"")));
    
    
        var markUpTotal = document.getElementById("InsertRecordMarkUp_Total").value = (subTotal) * (markUp);
        
        var countyTaxTotal = document.getElementById("InsertRecordCountyTax_Total").value = (subTotal) * (countyTax);
        
        var miscPercTotal = document.getElementById("InsertRecordMisc_Percent_Total").value = (subTotal) * (miscPerc);
        
        var total = document.getElementById("cbParamVirtual1").value = (subTotal) + (markUpTotal) + (countyTaxTotal) + (miscPercTotal) + (freight);
      
        var dp_el = [
            document.getElementById("InsertRecordMarkUp_Total"),
            document.getElementById("InsertRecordCountyTax_Total"),
            document.getElementById("InsertRecordMisc_Percent_Total"),
            document.getElementById("cbParamVirtual1")
        ];
    
        dp_el.forEach(element => formatAsDollars(element));
    
     }
     
    setInterval(calculate, 1500);
    
    
    </script>

    Regards,

    vitalikssssss

  6. Hi @walkerc,

    You will not be able to build a View with desired output because Joins cannot be configured with OR logic.  

    I can suggested using a filtering criteria on Datapage in order to show the records from Main_Data table to the Contractor.

    You should use a Main_Data as a data source for your Datapage. Also you should enable authentication which based on "Contractor_Data" table for this Datapage.

    Finally you can use the following filtering logic:

    P.S. use TradingName i.o. Record_ID from my sample.

    tZBYRRd.png

     Hope this helps.

    Let me know if you have any questions.

    Regards,

    vitalikssssss

     

     

     

  7. Hi @SonniT,

    I am pretty much sure that you receive an error because you have used PK_ID field as body parameter.

    PK_ID is a system field which acts as a record index for Caspio Table. I am afraid that you cannot use this field in body parameters.

    Try removing this parameter from body to resolve the issue.

    Please provide us with fields Data type used in the table if you still encounter an issue after removing PK_ID.


    Regards,

    vitalikssssss 

     

     

  8. Hi @EmmePGN,

    The following script fires the selection check after user clicks on Update button in his form:

    <script type="text/javascript">
     var v_state = "[@field:TypesWrittenComm]" ;
     var o_state = document.getElementById("EditRecordTypesWrittenComm") ;
     o_state.multiple = true ;
    
     function f_listbox() {
      if ( v_state.indexOf(",") > 0 ) {
       for (var i=0 ; i < o_state.options.length; i++ ) {
        if(o_state[i].value == v_state) {
         o_state.remove(i);
         break ;
        }
       }
       var o_st = v_state.split(", ") ;
       for (var j=0 ; j < o_st.length; j++) {
        for (var i=0 ; i < o_state.options.length; i++ ) {
         if(o_st[j]== o_state.options[i].value){
          o_state.options[i].selected = true ;
          break ;
         } 
        }
       }
      }
     }
     
    function check_listbox()
    {
       var maximum_selections = 3;
       var MyListbox = document.getElementsByName("EditRecordTypesWrittenComm")[0];
       var number_selections = 0;
       for (var i=0; i<MyListbox.length; i++)
       {
          if (MyListbox.options[i].selected) number_selections++;
        }
       if (number_selections>maximum_selections)
       {
         alert("You can select only " + maximum_selections + " items");
         event.preventDefault();
        }
    }
    
    
    document.addEventListener('BeforeFormSubmit', function(event) {
    	check_listbox();
    
    });
    
    </script>

    Hope this helps.

    Regards,

    vitalikssssss

  9. Hi @Chrille,

    You should use "EditRecord" prefix on Details page in order to reference a field.

    So, you code should look like this:

    <script type="text/javascript">
    
    document.addEventListener('BeforeFormSubmit', function (event) {
    
    
    var v3 = '<img src="http://image_url" alt="YES"';
       var v2 = document.getElementById("EditRecordKontaktad").value;
       if (v2 !="")
    {
    document.getElementById("EditRecordRingt").value = v3;
    
    }});
    </script>

    Hope this helps.

    Regards,

    vitalikssssss

  10. Hi @EmmePGN,

    There are different ways how you can tackle this challenge.

    You may use a JavaScript or you create an expression which results in SQL error.

    Here is a JavaScript which will hide the "Submit" button if user selection exceed "100":

    <script>
    
    function checkLimit(){
      
        let value = document.querySelector('input[id*="InsertRecordYOUR_FIELD"]').value; //enter your actual field name
        let button = document.querySelector('input[id^="Submit"]');
    
        if (value > 100) {
    
            button.style.visibility = "hidden";
        }
    
        else { 
    
            button.style.visibility = "visible";
        }
    
    }
    
    setInterval(checkLimit, 500)
    
    </script>

    This code should go into Footer of the Datapage and also make sure you disabled an HTML editor.

    Second option is to have the expression in Calculated value field which results in SQL error, e.g.

    CASE WHEN
    
    (Isnull([@field:PointFactor_Duties_PercentDuty1],0)+Isnull([@field:PointFactor_Duties_PercentDuty2],0)+Isnull([@field:PointFactor_Duties_PercentDuty3],0)+Isnull([@field:PointFactor_Duties_PercentDuty4],0)+Isnull([@field:PointFactor_Duties_PercentDuty5],0)+Isnull([@field:PointFactor_Duties_PercentDuty6],0)) > 100
    
    THEN CAST( 'a' + 1 as INT)
    
    ELSE (Isnull([@field:Number_1],0) + Isnull([@field:Number_2],0) + Isnull([@field:Number_3],0))
    
    END

    User will see an error if he enters amount which exceeds "100".

    EHC5oo6.png

    Message can be customized in Localization.

    Hope this helps.

     

    Regards,

    vitalikssssss

     

  11. Hi @bbewley, @kpcollier,

    You may try using this JS which should go to the Footer:

    <script type="text/javascript">
    
    function formatAsDollars(el) {
    el.value = el.value.replace(/[^\d]/g,'').replace(/(\d\d?)$/,'$1').replace(/^0+/,'').replace( /\d{1,3}(?=(\d{3})+(?!\d))/g , "$&,");
    el.value = el.value ? '$' + el.value : '';
    }
    
    let fields = ["FIELD_1", "FIELD_2"]; //specify your fields here
    
    fields.forEach(element => {
        element = "InsertRecord" + element; // replace "InsertRecord" with "EditRecord" for Details/Single Record Update DP 
        document.getElementById(element).onkeyup = function() {
            formatAsDollars(this);
        }
        document.getElementById(element).onchange= function() {
            formatAsDollars(this);
        }
    });
    </script>

    Pay attention to comments.

    Hope this helps.

    Vitalikssssss

×
×
  • Create New...