Alpha Software Mobile Development Tools:   Alpha Anywhere    |   Alpha TransForm subscribe to our YouTube Channel  Follow Us on LinkedIn  Follow Us on Twitter  Follow Us on Facebook

Announcement

Collapse

The Alpha Software Forum Participation Guidelines

The Alpha Software Forum is a free forum created for Alpha Software Developer Community to ask for help, exchange ideas, and share solutions. Alpha Software strives to create an environment where all members of the community can feel safe to participate. In order to ensure the Alpha Software Forum is a place where all feel welcome, forum participants are expected to behave as follows:
  • Be professional in your conduct
  • Be kind to others
  • Be constructive when giving feedback
  • Be open to new ideas and suggestions
  • Stay on topic


Be sure all comments and threads you post are respectful. Posts that contain any of the following content will be considered a violation of your agreement as a member of the Alpha Software Forum Community and will be moderated:
  • Spam.
  • Vulgar language.
  • Quotes from private conversations without permission, including pricing and other sales related discussions.
  • Personal attacks, insults, or subtle put-downs.
  • Harassment, bullying, threatening, mocking, shaming, or deriding anyone.
  • Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language.
  • Sexually explicit or violent material, links, or language.
  • Pirated, hacked, or copyright-infringing material.
  • Encouraging of others to engage in the above behaviors.


If a thread or post is found to contain any of the content outlined above, a moderator may choose to take one of the following actions:
  • Remove the Post or Thread - the content is removed from the forum.
  • Place the User in Moderation - all posts and new threads must be approved by a moderator before they are posted.
  • Temporarily Ban the User - user is banned from forum for a period of time.
  • Permanently Ban the User - user is permanently banned from the forum.


Moderators may also rename posts and threads if they are too generic or do not property reflect the content.

Moderators may move threads if they have been posted in the incorrect forum.

Threads/Posts questioning specific moderator decisions or actions (such as "why was a user banned?") are not allowed and will be removed.

The owners of Alpha Software Corporation (Forum Owner) reserve the right to remove, edit, move, or close any thread for any reason; or ban any forum member without notice, reason, or explanation.

Community members are encouraged to click the "Report Post" icon in the lower left of a given post if they feel the post is in violation of the rules. This will alert the Moderators to take a look.

Alpha Software Corporation may amend the guidelines from time to time and may also vary the procedures it sets out where appropriate in a particular case. Your agreement to comply with the guidelines will be deemed agreement to any changes to it.



Bonus TIPS for Successful Posting

Try a Search First
It is highly recommended that a Search be done on your topic before posting, as many questions have been answered in prior posts. As with any search engine, the shorter the search term, the more "hits" will be returned, but the more specific the search term is, the greater the relevance of those "hits". Searching for "table" might well return every message on the board while "tablesum" would greatly restrict the number of messages returned.

When you do post
First, make sure you are posting your question in the correct forum. For example, if you post an issue regarding Desktop applications on the Mobile & Browser Applications board , not only will your question not be seen by the appropriate audience, it may also be removed or relocated.

The more detail you provide about your problem or question, the more likely someone is to understand your request and be able to help. A sample database with a minimum of records (and its support files, zipped together) will make it much easier to diagnose issues with your application. Screen shots of error messages are especially helpful.

When explaining how to reproduce your problem, please be as detailed as possible. Describe every step, click-by-click and keypress-by-keypress. Otherwise when others try to duplicate your problem, they may do something slightly different and end up with different results.

A note about attachments
You may only attach one file to each message. Attachment file size is limited to 2MB. If you need to include several files, you may do so by zipping them into a single archive.

If you forgot to attach your files to your post, please do NOT create a new thread. Instead, reply to your original message and attach the file there.

When attaching screen shots, it is best to attach an image file (.BMP, .JPG, .GIF, .PNG, etc.) or a zip file of several images, as opposed to a Word document containing the screen shots. Because Word documents are prone to viruses, many message board users will not open your Word file, therefore limiting their ability to help you.

Similarly, if you are uploading a zipped archive, you should simply create a .ZIP file and not a self-extracting .EXE as many users will not run your EXE file.
See more
See less

Days360

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Days360

    Hello I'm trying to reproduce a function from Excel.

    =DAYS360(date_Field1,Date_Field2)/(30)

    I've tried the months() however, no luck.

    This is will be used in the client side of a dialog
    Thanks

    #2
    Re: Days360

    Anyone?
    Here is the description.

    The DAYS360 function returns the number of days between two dates based on a 360-day year (twelve 30-day months), which is used in some accounting calculations. Use this function to help compute payments if your accounting system is based on twelve 30-day months.

    Comment


      #3
      Re: Days360

      You will probably want to us Javascript in the clientside.
      Personally, because date calculations can be messy in javascript, I simply include the DateJS library (http://www.datejs.com/) in my grid and in one or two lines, I have the date calculation I need.
      It's open source and easy as ever. Just download the date.js file, include it in your project, then add it to your grid - 30 seconds of work.
      Andy.

      Comment


        #4
        Re: Days360

        John,

        Is your user entering the first date and you want to calculate the date, which will be date entered plus 360?
        Regards
        Keith Hubert
        Alpha Guild Member
        London.
        KHDB Management Systems
        Skype = keith.hubert


        For your day-to-day Needs, you Need an Alpha Database!

        Comment


          #5
          Re: Days360

          Probably not at all helpful, but how about actually using the Excel function Days360. Excel has to be around, but usually is. I found this call and adjusted it a bit. In your Grid, in Xbasic Functions, create a function as follows...

          Code:
          Function D360(begin_date, end_date)
          xlApp = ole.create("excel.Application.14")
          D360=xlApp.WorksheetFunction.Days360(begin_date, end_date)
          end function
          To find out what version of excel you have, get into the Alpha Control Panel, View, OLE Automation Browser, Category "All Objects", filter on "Excel" and then click on Microsoft Excel Application. A description will be displayed giving you the program identifier... as used above.

          Now, in any Ajax Callback, or Server side event, you can call the D360 function... e.g. in the Server-side event OnTitlesRender,

          Code:
          Dim d1 as c
          Dim d2 as c
          
          d1 = "01/01/2012"
          d2 = "01/12/2012"
          
          d3 = Val(D360(d1, d2)) / 30
          
          e.javascript = "alert('" + d3 + "');"
          As said, probably not what you want, but cool that it works.
          Last edited by Davidk; 05-15-2012, 10:48 AM. Reason: Changed code to represent months

          Comment


            #6
            Re: Days360

            Originally posted by Keith Hubert View Post
            John,

            Is your user entering the first date and you want to calculate the date, which will be date entered plus 360?
            No both dates are loaded from a DBF. In the end I need to know the number of months between two dates.

            Comment


              #7
              Re: Days360

              John,

              There is a bus_days_between() function that you might be able to creatively massage. The thing is this function omits weekend days.

              Code:
              ? bus_days_between({01/01/2012},date())
              
              = 97
              More on the wiki here ... http://wiki.alphasoftware.com/BUS_DAYS_BETWEEN+Function

              Stephen
              Alpha Anywhere v12.4.6.5.2 Build 8867-5691 IIS v10.0 on Windows Server 2019 Std in Hyper-V

              Comment


                #8
                Re: Days360

                Originally posted by iRadiate View Post
                John,

                There is a bus_days_between() function that you might be able to creatively massage. The thing is this function omits weekend days.

                Code:
                ? bus_days_between({01/01/2012},date())
                
                = 97
                More on the wiki here ... http://wiki.alphasoftware.com/BUS_DAYS_BETWEEN+Function

                Stephen
                Thanks this one works in my interactive window, however, not in the client side.

                ?month(ctod("05/21/2012")) - month_number("01/01/2012")
                = 5

                Comment


                  #9
                  Re: Days360

                  ^bump Anyone on how to make this work on the client side.

                  ?month(ctod("05/21/2012")) - month_number("01/01/2012")
                  = 5

                  Comment


                    #10
                    Re: Days360

                    You can't, specifically, if that's what you mean to do... since it's all Xbasic functions. You can perform an Ajax Callback and get it done, however.

                    Comment


                      #11
                      Re: Days360

                      Originally posted by Davidk View Post
                      You can't, specifically, if that's what you mean to do... since it's all Xbasic functions. You can perform an Ajax Callback and get it done, however.
                      Thanks David would you be able to offer a little more on how to perform the callback to make it work?
                      Thanks
                      John

                      Comment


                        #12
                        Re: Days360

                        This'll help. Attached is a dialog component. Unzip it into the folder where your other components are... then just click on A5W Pages and then back on Web Components to refresh the list.

                        The dialog is a good example because it doesn't involve any tables and so is easier to attach. The principle is exactly the same for grids.

                        The dialog has 3 fields and a button. The fields are Start Date, End Date and Months. The button performs an Ajax Callback into a function that runs your Xbasic code.

                        For example, you'd enter, or pick, 01/01/2012 for the Start Date and 21/05/2012 for the End Date and then click the button.

                        Months will be filled with the calc result.

                        In the Dialog, have a look at the XBasic functions - left side of the dialog. In there is a function named "days360"

                        Now have a look at the onClick event of the button. Here you'll find 1 entry - Action Javascript - an Ajax Callback. Edit this and you'll see how the call to the function "days360" is set up.

                        Most importantly, while you're editing the Action Javascript, have a look at the bottom of that pop-up form - there are 2 links - one for creating a function prototype using the name you typed into the Function name section. Have a look at the prototype, and notice that you can copy that code to the clipboard. The 2nd link is to open the Xbasic function directly from this edit screen... where you can paste in the prototype and then add you're own code. Which is exactly what I did. Let me know if it makes sense.
                        Attached Files
                        Last edited by Davidk; 05-17-2012, 06:05 PM.

                        Comment


                          #13
                          Re: Days360

                          Originally posted by Davidk View Post
                          This'll help. Attached is a dialog component. Unzip it into the folder where your other components are... then just click on A5W Pages and then back on Web Components to refresh the list.

                          The dialog is a good example because it doesn't involve any tables and so is easier to attach. The principle is exactly the same for grids.

                          The dialog has 3 fields and a button. The fields are Start Date, End Date and Months. The button performs an Ajax Callback into a function that runs your Xbasic code.

                          For example, you'd enter, or pick, 01/01/2012 for the Start Date and 21/05/2012 for the End Date and then click the button.

                          Months will be filled with the calc result.

                          In the Dialog, have a look at the XBasic functions - left side of the dialog. In there is a function named "days360"

                          Now have a look at the onClick event of the button. Here you'll find 1 entry - Action Javascript - an Ajax Callback. Edit this and you'll see how the call to the function "days360" is set up.

                          Most importantly, while you're editing the Action Javascript, have a look at the bottom of that pop-up form - there are 2 links - one for creating a function prototype using the name you typed into the Function name section. Have a look at the prototype, and notice that you can copy that code to the clipboard. The 2nd link is to open the Xbasic function directly from this edit screen... where you can paste in the prototype and then add you're own code. Which is exactly what I did. Let me know if it makes sense.
                          Thank you for taking the time so I can see how this works. I will give it a try tomorrow.

                          John

                          Comment


                            #14
                            Re: Days360

                            Hi John,

                            As I mentioned earlier, you could easily do it on the client-side if you wish. Either:

                            1) Use DateJS - lots of functions to do this with, or
                            2) Use plain old javascript - see http://jsfiddle.net/E5Bz3/1/ for a test case that should do what you need. The JS code looks like this: DisplayTo.getMonth() - DisplayFrom.getMonth() + (12 * (DisplayTo.getFullYear() - DisplayFrom.getFullYear())));

                            I think you should probably go with no.2.

                            If it was me, I would try to include a dummy field in my initial DB query called MonthsDiff for example, and somehow set this to the value you need. This final value would be available as a field in your grid.

                            Andy.

                            Comment


                              #15
                              Re: Days360

                              Originally posted by agillbb View Post
                              Hi John,

                              As I mentioned earlier, you could easily do it on the client-side if you wish. Either:

                              1) Use DateJS - lots of functions to do this with, or
                              2) Use plain old javascript - see http://jsfiddle.net/E5Bz3/1/ for a test case that should do what you need. The JS code looks like this: DisplayTo.getMonth() - DisplayFrom.getMonth() + (12 * (DisplayTo.getFullYear() - DisplayFrom.getFullYear())));

                              I think you should probably go with no.2.

                              If it was me, I would try to include a dummy field in my initial DB query called MonthsDiff for example, and somehow set this to the value you need. This final value would be available as a field in your grid.

                              Andy.
                              Andy thanks I did try it for some reason it was giving more problems, but thanks for the follow-up. I do like the features of the DateJS.
                              John

                              Comment

                              Working...
                              X