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

Help with between statement

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

    Help with between statement

    Help Please. Using the script below I cannot find a way to get the between statement to recognize the varible sdate as a date field. It runs and gives and error message of "INVALID DATE CONSTANT".



    dim m_tbl as p
    dim a_tbl as p
    dim x_tbl as p
    dim sdate as d
    date_string = ui_get_date("Enter", "Enter Starting Date For Report")
    sdate = ctod(date_string)
    m_tbl = table.open("c:ted's autoted's auto archiveted's auto.dbf")m_tbl.unmark_range()

    m_tbl.mark_range("between(Datepaid,{sdate},VAR->ASKD_ENTER_ENDING_DATE)")

    table.close()

    If I change the between statement to
    m_tbl.mark_range("between(Datepaid,sdate,VAR->ASKD_ENTER_ENDING_DATE)")
    the error is Non-existent field BETWEEN(DATEPAID, SDATE,VAR->ASKD_ENTER_ENDING_DATE)

    If I change it to
    "between(Datepaid,VAR->sdate,VAR->ASKD_ENTER_ENDING_DATE)")
    the error is Variable mark filter is an expression, a logical expression was expected.

    #2
    RE: Help with between statement

    dim m_tbl as p
    dim a_tbl as p
    dim x_tbl as p
    dim sdate as d
    date_string = ui_get_date("Enter", "Enter Starting Date For Report")
    sdate = ctod(date_string)
    m_tbl = table.open("c:ted's autoted's auto archiveted's auto.dbf")''m_tbl.unmark_range()??? cut and paste problem ???
    m_tbl.unmark_range() ' should be here?
    m_tbl.mark_range("between(Datepaid,sdate,VAR->ASKD_ENTER_ENDING_DATE)") ''Is "Datepaid" a field in your table, is it in the primary table of a set - you will need to use tablename->Datepaid if it is in a child table?

    m_tbl.close()
    There can be only one.

    Comment


      #3
      RE: Help with between statement

      I think this might be part of the problem:

      date_string = ui_get_date("Enter", "Enter Starting Date For Report")
      sdate = ctod(date_string)


      You've input a date (as a date) and then convert it from a Char to a Date? Just use:

      sdate=ui_get_date("Enter", "Enter Starting Date For Report")

      -Bob

      Comment


        #4
        RE: Help with between statement

        Ui_get_date() functions as a "date" function only in terms of presenting the user with a friendly format for data entry. The result of the function is a string and must be transformed into a date.

        "Creates and displays a dialog box containing a date field. This function is useful
        for obtaining a valid date. The date you enter or change is returned as a Result
        String. You can then convert this string into a date value using the CTOD
        function." - online xbasic user manual
        There can be only one.

        Comment


          #5
          RE: Help with between statement

          Hi ya
          Stan is right, Ui_get_date() function does return a string. I found a working answer on another post that seems to solve the problem
          between(datepaid,{"+dotc(sdate)+"}, {"+dtoc(edate)"})

          apparently the between function uses date fields that have been converted to character fields to do it's job. datepaid is a date field stored in a table but somehow it seems between is treating it as a character field, since sdate and edate have to use the dtoc function in order for between to treat them as the same field type.

          Ron

          Comment


            #6
            RE: Help with between statement

            Ron, it looks like you've got your current problem solved but here's a little more info about what is going on. It may help in building future filters...

            You are right, ui_get_date() returns a character field. You could have used this as your between() statement:
            "Between( datepaid,{"+ date_string + "}, ....

            HOWEVER, the really important thing to remember is that the full "between" statement is being sent to the REPORT. Therefore, you must look at the variables the same way the REPORT will look at them. When your original statement went to the report, the REPORT had no idea that "sdate" was a variable in a script somewhere so it tried to find a field with that name.

            When building a filter in a script, try to look at it as as though you were building the filter inside the report.

            Another way to fix this is to set "sdate" as a global variable but this can result in a lot of unnecessary global variables hanging around - I try to keep as few global variables active as possible. (Note: even if you set this as a global variable, your filter would need to use the "var->" suffix.) Unused/seldom used global variables are not usually a good idea but in some cases global variables can make things much easier.
            Example:
            In many of my programs, a First Date and Last Date are used frequently. They are also often passed to reports for display in the 'subtitle'. So, I set global variables F_date and L_date and use them throughout the program. (Call them Start and End if you like, I just prefer First and Last - seems more generic.) However, if for some reason I wanted to use a third date in the filter, I would not make it global.

            Comment


              #7
              RE: Help with between statement

              if sdate is a date variable, or is not previously declared as variable at all, it would be simpler to just say
              sdate=(ctod(ui_get_date(..........etc)))
              Although the askd may work, (but looks problematic in a query) I would be more inclined to say

              sdate1=(ctod(ui_get_date(..........etc)))
              sdate2=(ctod(ui_get_date(..........etc)))
              and then
              between(datefield,sdate1,sdate2)
              Cole Custom Programming - Terrell, Texas
              972 524 8714
              [email protected]

              ____________________
              "A young man who is not liberal has no heart, but an old man who is not conservative has no mind." GB Shaw

              Comment


                #8
                RE: Help with between statement

                Guys.... Please read and coment if you will.

                I declare start and end global variables as date at init on the main menu form. I set these on init to Jan 1, [current year] and date() [today] respectively.

                The desired dates are collected from the user with a form holding those two variables. The user can either accept these or change either or both.

                My 'between' statement is a filter on the report.

                The code puts up the date dialog, waits for input, and then prints the report.

                The stuff in this thread seems so complicated and I now wonder if my method - which seems terribly easy and works perfectly - is the right way to do it.

                Ken

                Comment

                Working...
                X