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

Understanding Alphasports invoicing

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

    Understanding Alphasports invoicing

    Is there anyway that we can understand how the invoicing set is linked together ? which is linked first etc? why do we need so much tables? And which is the actual table that prints the personal customers invoice?

    Thank You

    #2
    Re: Understanding Alphasports invoicing

    which is linked first etc?
    Select the invoice set in the controlpanel. Right click on it and choose Edit set. You will see the linkages. (hasn't changed since at least V5)

    And which is the actual table that prints the personal customers invoice?
    Select the invoice report in the controlpanel. Right click and choose Design. Scroll through the Drag_Drop list in the upper right corner and you will see check marks alongside the objects that appear on the report separated by table.
    There can be only one.

    Comment


      #3
      Re: Understanding Alphasports invoicing

      why do we need so much tables?
      normalization: Database normalization is the process of organizing the fields and tables of a relational database to minimize redundancy

      Comment


        #4
        Re: Understanding Alphasports invoicing

        NORMALISATION. As John says, this is to avoid duplicating data or having a lot of empty fields in your database.
        There are many layers to normalisation called Normal Form. Layer 3 is as far as most people go, but 4 and 5 are sometimes attempted.
        On the other hand, RATIONALISATION makes the database easier to maintain and allows some redundancy.
        As one of the members says, "normalise till it hurts, rationalise till it works"
        See our Hybrid Option here;
        https://hybridapps.example-software.com/


        Apologies to anyone I haven't managed to upset yet.
        You are held in a queue and I will get to you soon.

        Comment


          #5
          Re: Understanding Alphasports invoicing

          David,

          The Invoice report could be based on a two table set, without joining the customer, product or vendor tables. All you'd need would be the invoice_header and Invoice_items tables.

          However, when field values from the customer, product or vendor tables are needed on a page you would have to define a calculated value which would open the desired table, set an index, find the desired record, close the desired table, and return the desired value. This could be done with Lookup() functions, for example. A series of these lookup() expressions could be incorporated into your report.

          Opening and closing tables are two of the slowest things alpha does. A minimalist approach to set design would require these slow functions to be repeated over and over, once for each invoice, and possibly once for each detail row in the report. In fact they'd be called each time a new field value must be retrieved from these three supporting tables. The likely result: a very slow report.

          Including the customer, product, and vendor tables in the set design permits Alpha to open these 3 tables only once, no matter how many invoices are being printed and no matter how many detail lines each invoice might contain. Why? because the set keeps the desired records in these supporting tables linked automatically. No lookup() calc fields needed to retrieve field values.

          I suppose if one wanted to really do the report the "hard" way, you could base it on the invoice_header table alone, retrieving many field values from the invoice_items table by a further series of lookup() calc values. Not only is this much more difficult to design, its performance is likely to be pitiably slow.

          -- tom
          Last edited by Tom Cone Jr; 08-29-2014, 07:30 AM.

          Comment


            #6
            Re: Understanding Alphasports invoicing

            John,

            Minimizing redundancy is a key value of normalization. Efficient use of available disk storage is another.

            Comment


              #7
              Re: Understanding Alphasports invoicing

              David,

              Remember that the AlphaSports data structure is essentially unchanged since V5. Additions have been made and the forms and the reports have changed to reflect new features added to Alpha. No one ever claimed that the design was the best in the first place. AlphaSports was designed to demonstrate what Alpha can do.

              If you have a better way, or think you do, feel free to try it.
              There can be only one.

              Comment


                #8
                Re: Understanding Alphasports invoicing

                One other thing. The overhead of a Set is minimal. The relationships are built as they are needed. You don't have loads of additional data taking up space.
                There are many instances when you might want a realtionship turned on its head, so one set might be;

                Customer
                -- > Invoice

                And the same tables used to create a Set;

                Invoice
                --> Customer
                See our Hybrid Option here;
                https://hybridapps.example-software.com/


                Apologies to anyone I haven't managed to upset yet.
                You are held in a queue and I will get to you soon.

                Comment


                  #9
                  Re: Understanding Alphasports invoicing

                  At the risk of being "pooped" on, I'm going to disagree a wee bit with normalization as it affects us today.

                  Like most of you, I came up from the dark ages with computers where the saving of a bit here or there meant seeing if the program would run at all. Therefore, we all have this in the back of our minds and I, like all of you, have worked very hard to minimize dbf's and apps. But recently with the Terrabyte drives and gigabyte ram's and so forth I've become a slob. When I first started in dBase II with Ashton-Tate I had to be very careful with the size of fields and how many you had, etc. Now, I routinely construct dbf's with no regard whatsoever on the field sizes or even how many fields I use. Who cares? Even with a million records in one of my apps there seems to be no need anymore for saving bytes or space.

                  Point is, I'm now becoming a programming slob, and I regularly duplicate dbf's and fields from one area to another. If I even think that I will need some field or other somewhere else (maybe for a report or something) I copy it over. It ain't good, but it's reality.

                  Comment


                    #10
                    Re: Understanding Alphasports invoicing

                    There is redundancy to be considered for sure, but there is also the need for intuitive ease of use. Hence even Alpha Sports copies the product info into the invoice line item table because that table can then be further edited without affecting the default product item. Wherever I have a repeated need for a lookup list I find a table suits better than typing out the list in a FRUL, eg. That provides uniformity for the end user as well as the ability to adapt when changes are needed.
                    Robin

                    Discernment is not needed in things that differ, but in those things that appear to be the same. - Miles Sanford

                    Comment

                    Working...
                    X