Alpha Video Training
Page 1 of 3 123 LastLast
Results 1 to 30 of 71

Thread: Something needs to be done about the help system...

  1. #1
    Member
    Real Name
    Mark Bunds
    Join Date
    Aug 2015
    Location
    Cypress, TX
    Posts
    68

    Default Something needs to be done about the help system...

    Has anyone ever stumbled upon a documented procedure that seems like it should have been simpler than the documentation suggests by its content? One that appears to have been written to purposely over-complicate the simplest issue, and seems to be designed to sap your confidence my making you feel incompetent in understanding these simple concepts? How about an entire system of "help", requiring endless, round-robin trips to nail down an answer, and after turning back from many dead-ends, taking several hours to answer a 10 second question? And how did you feel when you finally discovered that it wasn't your fault, but was caused by vague, poorly written, or generally incomplete instructions presented by an otherwise flawless software package?

    Welcome to the Alpha Anywhere help documentation and tutorials!

    Alpha Anywhere is absolutely BEST development software EVER created, but has a few serious flaws related to the initial presentation of the software on the Alpha Software website, its documentation, and its learning path.

    The situation that triggered this post and subsequent rant was when I was browsing Alpha's YouTube videos, and I came across an exceptionally valuable video tutorial describing the use of Web Sockets. I was very excited about this, watched the video twice, and then ran off to the boss to present the great news.

    But when I fired up the development environment, the settings on the properties screen which enable the use of web sockets were nowhere to be found. Despite the embarrassment of looking like an idiot who failed to do his homework, I spent more time than I should have had to finding out why this feature was not in my package. Being new to the software, I attributed my difficulties to my unfamiliarity with it, but as time went on, I kept running into obstacles that should not exist in an otherwise perfect product. Now I want to find out why I keep running across features that aren't relevant to the build of Alpha that we purchased, tutorials that won't work due to the same reasons, and why the help system is so incomplete and incomprehensibly "organized".

    <rant>

    My first foray into Alpha Software's poor communications in general began when I was evaluating the Alpha Anywhere software for purchase.

    Forgetting for just a minute about the imperfect presentation on Alpha Software's home page about what Alpha Anywhere is and what it does, a great example of potentially sales-damaging ambiguity can still be found on the 'pricing" page, which remains ambiguous as it fails to convey whether or not the software becomes unusable after a "license term" expires. Sure, most of the information is present on the page, but at face value, it appears to me that a $1,499.00 subscription fee must be paid yearly to use the software.

    At the time I was evaluating development software of this type, companies like IronSpeed were hammering on me daily, and if I had assumed that Alpha actually required the yearly fee, I likely would have selected another platform. The only reason I took the time to contact Alpha to clear up the confusion (and I HAD to contact them via voice, since I had no clear Idea what was being offered from the website) was the fact that Alpha is the only package that provides robust "off-line" features.

    If not for these features, I would have passed-up Alpha and would certainly be developing on a different platform, never knowing what I missed, because I made a bad assumption due to poorly-presented information. I am convinced that Alpha has lost sales due to this very fact.

    In my opinion, Alpha Anywhere is without a doubt the best around for creating and managing the applications for which it was designed, and there is an enormous volume of help and tutorial information regarding its features, controls, and their use. Unfortunately, this large volume of information is useless when it is wrong, irrelevant, outdated, unsearchable, poorly presented, or ambiguously worded.

    The introduction of the Alpha Anywhere package on the Alpha Software website is not the only culprit in its lineup of ambiguous or incomplete information. Whoever is in charge of compiling this information really should take a more objective look at exactly what is being presented, how it is worded, and how complete the information is, and must cease assuming that the reader has knowledge that he or she may not actually posses.

    I say this because Alpha Anywhere's help and reference information is among the worst ever in terms of its organization, not to mention the ambiguous information that I had to filter through on the Alpha Software website when I was evaluating Alpha Anywhere in the first place..

    Citing some of the top examples of unexpectedly bad help documentation, let's take a look at the top of the list in the help system Table of Contents:

    My very first experience was naturally in the "Read me first" section, where I was met with its huge, bold heading that states "Welcome to Alpha Five!"

    Alpha Five? What the hell is "Alpha Five?" I thought I had bought "Alpha Anywhere?" I was fairly certain, although less, now, that I had bought "version 12"? This was a huge put-off, right out of the box, which had me wondering if I had installed the package incorrectly.

    I wondered this because even the installation was complicated by lack of OBVIOUS information concerning which of the installer files vs. the accompanying "patches" should be installed, and where to install them. Once again, all of the information necessary to complete the installation WAS available on the website, but finding out exactly which file did what was not as simple as glancing at some installation instructions laid-out in an intuitive manner. Of the thousands of packages I have installed in my career, this one was one of the most halting because I refuse to install software purely based on my "assumption" of where to install it, and how to set it up. In hindsight, the product was as easy to install as any of the best, so why did I have to go to the trouble of contacting Alpha to get a clear picture about what to do?

    Other entries under the "Read me first" section quickly began to erode my confidence, because here began the journey to discover the actual difference between a "desktop" application vs a "web" application; but I guess any idiot should know that.

    Well, I didn't, and I'm still not entirely sure, at least from the context of the Alpha development environment..

    But the sections I was reading started to create many more questions than they answered...

    - Why is the first entry under "What's New" an entry titled, "What's New in Version 11?" I was under the assumption that I bought version 12...

    - Why can't I find information about "Alpha Anywhere, V11"; it should be there if the help section has an entry about "What's new in Version 11"...

    - Is version 12 too new to have relevant entries describing what's new in the new version? I didn't recall purchasing a "beta" version after all...

    - And if I am running version 12, why are there no entries in the built-in documentation for this version?

    - Why is the top entry under "References" labeled for A5? I didn't know I was developing in Alpha 5; Isn't this package called Alpha Anywhere?

    - Oh I get it now; "Alpha Anywhere" is a derivative product "powered by" Alpha 5, which, I guess, is not a version, but a product name, because there was no "Alpha 4"?

    - Why is there an entry for "Action Scripting Reference (Desktop)", and none for "Action Scripting Reference (Web Applications)?"

    ...And my list of questions concerning "why, where, how, what version, what's actually compatible, etc, goes on, and on, and on....

    I had to learn about the naming and versioning of Alpha 5 and its various incarnations mainly by osmosis and extrapolation, because unless I wanted to study the revision history of Alpha products through the years, there was no OBVIOUS place to find any verbiage stating simply:

    "Alpha Anywhere is the new name for the Alpha 5 application development package, evolving through its various versions through the years until Alpha 5, V11. When version 12 was conceived, Alpha Software created its new title: "Alpha Anywhere," a derivative product "powered" by "Alpha 5 Version 12. Throughout the documentation, be aware that an extensive number of entries will be found titled for older versions, but due to Alpha's unprecedented maintenance of backward-compatibility throughout its history, all documentation and examples will function in the latest versions, without modification, unless otherwise noted."

    ...Or something to that effect, but with greater accuracy.

    How hard would that have been to include at the top of the "Read me first" section?

    Now, inside the package itself, among the other minor annoyances, there is a commonly repeating situation where I require help on a feature, function, or control, and a dialog box related to the control may have a "help" button.

    But when clicked, Alpha un-helpfully informs me that "There is no help information related to this topic." Really, Alpha? Some of these "missing topics" concern some fairly critical information...

    I absolutely abhor help systems which are loaded with all kinds of verbiage touting what a "feature" can do, but contain no syntactical examples which leaves me no option but to search forums or browse loosely-organized help files for more information, and then, upon finding it, having to struggle through experimentation because the help section is too terse or too ambiguously worded to provide direct, comprehensive help. Yes, the "references" sections in Alpha Anywhere are very extensive. And also practically useless, most of the time, presenting few useful syntactical examples, or links to the same.

    It is becoming exceptionally tiresome gleaning information relevant to my build out of Alpha's poorly-organized help and tutorial system. On too many occasions I have wasted significant amounts of time studying and then trying to apply lessons which turn out to be irrelevant to my particular version because they were created for earlier versions, or some that apply only to pre-release versions having features that I cannot employ, and I don't feel it should be necessary exerting the kind of time and energy required to research whether a given control, feature, or function will actually work with my project, even though I find that better than 90% do work as expected. It's that other 10% that give me headaches.

    There is also no obvious guide illuminating features that do or do not work with my version, and the conceptual presentations on many specific major feature differences are so poor that they fail to provide answers to very basic, yet critical questions, like, "what, exactly, is the difference between a "desktop" vs a "web" application in the context of the Alpha RAD environment?" It has taken me SIX months to get this worked out, and I am still running across surprises, like the necessity for a license to run the "Alpha Desktop Run-time," or why the run-time was necessary, or that it even existed in the first place. Why didn't I know about these requirements when I purchased the package? I would have paid for the additional license, no problem, but I wonder how I missed it?

    I realize that many of the textual examples present in the help documentation have lines that specify whether a particular control can be used within desktop or web applications, and occasionally which builds can be expected to contain controls and features, but this information is not clearly provided when browsing tutorial videos piecemeal.

    For example, somehow, from the help documentation within the development environment, I ended up on the AlphaPedia documentation site, and then on to YouTube, and found myself studying the 'websockets" tutorial series. Never once did the presenter mention that the feature was only available in pre-release versions, so I deemed the feature to be useful for my project, then went about studying the tutorial, downloading the component, and preparing a test project only to find that the properties were missing, but only after I blabbered to the boss that "The Alpha package can also do messaging via web sockets!
    It took an additional hour to find out exactly why this feature wasn't present in my package.

    You know, a lot of this stuff is conceptually simple, and easy enough to get a handle on once a user becomes comfortable with the package. But I find myself in a bad place when intuition fails to provide a solution to a problem which, in the end, turns out to be very easy to solve. But it is easy to obfuscate even the simplest instruction when it is poorly presented and demonstrated.

    My suggestion is this:

    Have the members of the Alpha staff who are responsible for presenting information to other human beings become intimately familiar with the concept of "intuitive information presentation," and then have them review the Alpha website, and the product help documentation, to discover why they are exactly the opposite.

    After that, have them observe a disinterested, inexperienced, third-party as he or she attempts to discover what exactly is being sold on the Alpha website, what is required to set up a system, what is included with a purchase, and how much it costs.

    If such a person can figure out the most basic of any one of these with any certainty, within two hours without help, I swear I'll eat my hat.

    Then, provide them with the same files that were provided to me, and see if they can figure out how to install the package without researching the subject, or asking for help.

    And finally, after they discover how easy it all actually was, and would have been had the information been more intuitive, have them look at the help system and see if it makes the slightest sense.

    If it does, I'll be checking in for cognitive therapy immediately.

    </rant>

    SUMMARY:

    For its website, Alpha needs to create comprehensible summary pages, accessible from a SINGLE location, illustrating foundational concepts without assuming that the reader understands Alpha's paradigm, how Alpha is similar to, or different from other kinds of development software, what support software may be required (like the desktop application run time environment), and exactly what features to expect. It's not that hard.

    The following is an example of the kind of verbiage that would have made it easy (for me, anyway) to ascertain exactly what Alpha is, and is not, along with a shallow overview of how it functions. If any of it is incorrect, it's because Alpha failed to communicate these properties in a comprehensible way:

    Alpha Anywhere is a one-of-a-kind development environment enabling development of complex, data-driven applications that will run on almost any operating system, for mobile and workstation platforms.

    Alpha Anywhere requires very little programming skill to create applications because it generates all the code necessary to bridge the many languages required to run applications on these diverse platforms.

    More advanced programmers can "burrow" into the functions created by Alpha for customization, or create entirely new custom controls, functions, and features. Advanced programmers will also find it easy to employ custom extensions created in other software, such as interfaces using externally developed COM or ActiveX objects.

    Alpha Anywhere is designed to create applications for two distinct environments: Web Server applications for both mobile and desktop on any operating system, and Windows Desktop-specific applications.

    Alpha Anywhere is not a typical RAD environment that compiles low-level code into executable packages; it is more like having an entire staff of the world's best programmers at your fingertips:

    * It does not create compiled executables as a finished project; Alpha Anywhere simultaneously creates server and client-side scripts in multiple languages, leveraging JavaScript, HTML5, CSS, and Ajax, and the finished project runs on a web server, deploying web applications pages to browsers on desktop and mobile devices. The Windows Desktop Runtime Environment is required to deploy Windows Desktop-specific applications to Windows workstations.

    * The major portion of the finished project runs on a server, while the client applications are exhaustively configurable to be run from mobile devices and workstations in a vast variety of modes, from simple access via a common browser, to leveraging deep, device-specific functions on mobile platforms using PhoneGap, integrated phenomenally well into Alpha's Development Environment.

    *Given that the deployment of Alpha Anywhere applications is provided from a central server, only a single instance of an application need be created and maintained; once a finished or updated application is published to the Alpha Application server, it will be updated on all devices as soon as their browser's are refreshed. Applications projects leveraging PhoneGap will create and manage Alpha's server-side code as usual, but the client-side applications must be deployed from a different source.

    *Alpha applications are primarily data-driven, and Alpha Anywhere makes it trivial to connect to almost any database engine in existence. Alpha can work with connected database objects in several modes, and does not present limitations in the way it manipulates database objects; if a user requires access to special functions present within a given database engine which is not available using Alpha's "portable SQL", Alpha easily accommodates the use of the database engines "Native Syntax," erasing any potential limitations.

    *Alpha applications leverage the use of advanced CSS to control the layout, format, and theme of an application without requiring any knowledge of CSS scripting. As with all of its other features, advanced programmers have absolute control over CSS.

    *Alpha Anywhere offers exceptionally deep documentation and tutorial information. Working through Alpha's extensive library of video and textual tutorials, users who have never programmed before can create useful applications within minutes. (Which will become exceptionally more useful if it ever gets organized)

    *A fully-rounded Alpha Anywhere development package contains three parts; The Alpha Anywhere development environment, the Alpha Application Server, and the Windows Desktop Runtime Environment. Each of these packages are sold and licensed separately, unless Alpha Software makes packages available that include two or more products.

    *The "Windows Desktop-specific" paradigm is fading away as it becomes less relevant due to the powerful features available within web-applications. Alpha Software still makes the desktop runtime environment available for deploying Windows Desktop-specific applications, but its benefits are slowly eroding away as its feature set becomes supplanted by more capable web-server applications. (I believe the availability of the runtime environment has been de-emphasized by Alpha because it has become redundant due to the increasing capability of web-applications)

    *Alpha Anywhere is extendable with "feature Packs" that may be offered by Alpha Software for inclusion in the development environment. Feature packs may be made available as paid or free add-ons at Alpha's discretion.

    *The Alpha Anywhere Developer Edition is available for purchase at $1499.00, which includes one full license for the developer environment, one full license for the application server, and all of the benefits of a one-year subscription. Extended subscriptions at $1,499.00 per year provide continued access to updates and upgrades as they become available. A license for the desktop runtime environment is available at an additional fee. Licenses for feature packs may become available for additional cost as well.

    Does the above seem to be blindingly obvious? Perhaps it is to users who are familiar with Alpha Software products, and Alpha's staff, but I defy anyone who is unfamiliar with the product to collect all of the above information exclusively by perusing the website, as doing so requires an uncomfortable amount of assumption.

    Regardless, the text above is a pale representation, glossing over the fantastic capabilities of the Alpha Anywhere package, but it would have provided exactly what I would have needed to know in order to quickly qualify the Alpha Anywhere package as a candidate for our projects, leaving no room for doubt about what it is in general, how much it costs, and what is delivered for the price. Lacking this summary easily added a week to my decision to purchase.

    The forums have been exceptionally useful in sorting out much confusion, but a lot of this could be avoided by executing a thorough examination of the help contents and its organization. There are thousands of perfect entries in the help system that leave no doubt about how to use their described feature, but there are hundreds upon hundreds of others that appear to have been created as place holders containing minimal relevant information, perhaps the intent being to flesh them out later, which appears to have never happened.

    I honestly hope the help system gets revised, and becomes better organized, because much of the time I might have saved using Alpha's Hyper-RAD environment has been absorbed by research into irrelevant or poorly-documented features, and much time asking questions on the forums concerning fundamental issues would be saved by better documentation.

    And I can't help but feel like Alpha Software could improve its bottom line a bit if it would take a good, hard look about how the product is being presented on its website, and revise it for a bit more clarity about what it is, how it is used, and how much it costs.

    I think everything about the Alpha Package itself and the way it is organized and operates is pretty close to perfect, but the learning path has been far steeper than necessary given Alpha's awesome capabilities. I assumed, wrongly it seems, that a package as well engineered and organized as Alpha Anywhere would have had a world-class help system to match.

  2. #2
    "Certified" Alphaholic
    Real Name
    David Kates
    Join Date
    Apr 2008
    Location
    Unionville, ON
    Posts
    7,722

    Default Re: Something needs to be done about the help system...

    The documentation system for Alpha is currently being rebuilt.

  3. #3
    Volunteer Moderator Steve Workings's Avatar
    Real Name
    Steve Workings
    Join Date
    Apr 2000
    Location
    The Dreaded Chair
    Posts
    5,604

    Default Re: Something needs to be done about the help system...

    Longest. Post. Ever.

    And yes, there was an Alpha 4. That was the DOS product. Trivia - it was originally going to be called Dolphin Software.

    Yup, developers at Alpha have outrun everyone -their competition, their documenters and me, trying in vain to keep up. Despite the documentation problems, as you say, this is terrific software.
    -Steve


  4. #4
    "Certified" Alphaholic kkfin's Avatar
    Real Name
    Kenneth
    Join Date
    Dec 2006
    Location
    EU
    Posts
    1,550

    Default Re: Something needs to be done about the help system...

    I remeber when I did bought my first version of Alpha it was version 7.
    Then the documentation was uptodate. But then we did just have xbasic and almost all were developing desktop. (Yes I did have Alpha server version 7)

    It was that time (version 9) the internet thing really began to hit Alpha.
    After that the development speed has been so quick that the documentation just left behind. (Most of the documentation that time were for desktop.)

    Today the development speed is again much faster. If we think what version 11 was and what version 12 is today. It is almost unbelibable what all features we today have. All doors are open to Alpha developer today.

    I think it is very hard to write documentation to Alpha and keep it uptodate. Lot of dialogs and lot of widgets. Hundreds of different alternatives. And they change all the time. New features comes day after day.

    We did have xbasic, but now we have also css, javascript, .net , node, web sockets, rest api, sql, json, ..The list is endless. It is just an impossible job to document all this in Alpha.

    I think they concentrate to examples at the moment (mostly videos) and what changes they make (release notes).

    But I hope we some day have a xbasic uptodate language reference.

    I know that they have priorities and that they are doing their best in Alpha at the moment and that they understand the problems also from developers point of view.

  5. #5
    "Certified" Alphaholic
    Real Name
    eric
    Join Date
    Mar 2009
    Location
    Amsterdam
    Posts
    1,284

    Default Re: Something needs to be done about the help system...

    With DOS we started with 4 install floppydisks

  6. #6
    "Certified" Alphaholic kkfin's Avatar
    Real Name
    Kenneth
    Join Date
    Dec 2006
    Location
    EU
    Posts
    1,550

    Default Re: Something needs to be done about the help system...

    Quote Originally Posted by bea2701 View Post
    With DOS we started with 4 install floppydisks
    Oh, now I understand the name Alpha 4...

  7. #7
    "Certified" Alphaholic
    Real Name
    eric
    Join Date
    Mar 2009
    Location
    Amsterdam
    Posts
    1,284

    Default Re: Something needs to be done about the help system...

    Quote Originally Posted by kkfin View Post
    Oh, now I understand the name Alpha 4...


    At that time Bill Gates was working as a Windows cleaner employee

  8. #8
    Volunteer Moderator Peter.Greulich's Avatar
    Real Name
    Peter Greulich
    Join Date
    Apr 2000
    Location
    Boston, MA
    Posts
    11,643

    Default Re: Something needs to be done about the help system...

    It is a daunting task to keep the documentation up to date. They are working on it now and it's in the road map. Unfortunately they ignored to so long they will never catch up. But at least they are now working on it, so that's good.

  9. #9
    "Certified" Alphaholic
    Real Name
    eric
    Join Date
    Mar 2009
    Location
    Amsterdam
    Posts
    1,284

    Default Re: Something needs to be done about the help system...

    I think the new upcomming release of Alpha should be called ROADRUNNER miep miep

  10. #10
    "Certified" Alphaholic iRadiate's Avatar
    Real Name
    Stephen
    Join Date
    Jan 2011
    Location
    London, ON
    Posts
    1,653

    Default Re: Something needs to be done about the help system...

    Yeah, I think general consensus has long been the documentation has been the weak link.
    Let's hope that it really does get some long overdue attention.

  11. #11
    "Certified" Alphaholic
    Real Name
    Lee Vasic
    Join Date
    May 2010
    Location
    Salt Lake City
    Posts
    1,211

    Default Re: Something needs to be done about the help system...

    I learned Alpha mostly through this message board and taking as many classes as possible. I also created a component I called "Cookbook" and every time I find some code I like I put it in the cookbook. Because the message board has been so good to me I try to pay it forward by adding videos or posts of things I discover to be helpful. The alpha help model really is the short video. This seems to be the fastest way to learn. Also, at the speed Alpha is developing, they can get the video to us quickly. I set aside about 10 mins per day to read the board and look at any new videos. It's a paradigm shift for sure.

  12. #12
    Member
    Real Name
    Mark Bunds
    Join Date
    Aug 2015
    Location
    Cypress, TX
    Posts
    68

    Default Re: Something needs to be done about the help system...

    Quote Originally Posted by lvasic View Post
    I learned Alpha mostly through this message board and taking as many classes as possible. I also created a component I called "Cookbook" and every time I find some code I like I put it in the cookbook. Because the message board has been so good to me I try to pay it forward by adding videos or posts of things I discover to be helpful. The alpha help model really is the short video. This seems to be the fastest way to learn. Also, at the speed Alpha is developing, they can get the video to us quickly. I set aside about 10 mins per day to read the board and look at any new videos. It's a paradigm shift for sure.
    Your "Cookbook" is pretty much what I am putting together in Alpha's code library, collecting snippets of code from worked-out examples.

    I can imagine that documenting Alpha Anywhere in a format that will satisfy all users is next to impossible, but I should soundly restate that I have no problem with the amount or the topical coverage offered by the help files and videos; just its organization, terse/incomplete examples, missing topics, conflicting information, outdated headings, ambiguous entries, and the occasional links that lead to a page or two on the Alpha website that won't display because the pages in that section report that the application server isn't properly licensed.

    Attachment 41184

    Twin Peaks is going to receive a P.O. from us shortly for training materials since they seem to be fairly up to speed.

    Meanwhile, I've been re-creating the Alpha help system as I go along in Microsoft One-Note, organized in a way that makes more sense to me as I get my mind wrapped around the Alpha Anywhere system.

    The largest difficulty may be that I have had to depart from data-bound controls in many parts of this project because of our extensive use of many-to-many linking tables, requiring a butt-load of Xbasic code:

    Attachment 41185

    Alpha is simply unbelievable in the way it assists the creation of complex table structures, but the automated functions, like drop-down-box cascading (or any other cascading) aren't designed to handle lookups from the linking tables along with the referenced table data meant to land in the drop-down choice list.

    And that's just fine; no complaints about that...we knew when we started this project that there would be a lot of custom code.

    So far, it looks like cascading controls in Alpha don't like being used with more than one table as a data source (and if I'm wrong, it's Alpha's fault), but I refuse to adjust my table structures just to accommodate easier programming; cascading Alpha controls works very well with flat, single tables, but it does not play nice when custom queries having complex joins are used from within the drop-down control's choice list properties to define the displayed and index values expected to filter data from the referenced field in the parent control.

    For this reason, I am spending most of my time in the underbelly of the Alpha codebase where most sane people wouldn't be in the first place since the entire Alpha Anywhere package was designed to insulate the user from having to write custom code. It's easy to imagine that Alpha didn't place much priority on the creation of documentation for low-level code when its target user-base is supposed to be using the package as it was designed; programmable legos for dummies.

    And I would be willing to bet that those who are very experienced with Alpha are probably wondering what all the complaining is about, because they know the system so well that every topic in the documentation makes perfect sense, and its placement is as logical as the complexity of the software will allow.

    But I don't know it very well, so I could benefit from some learning path related to custom coding in this environment, more so than the "insert tab A into slot B, and world hunger is solved!" approach.

    So far, I have never been able to open one or two examples that directly assist me to complete a function by using a direct search. Search terms that one would expect to provide multiple results don't really provide much help at all; I usually stumble across the information accidentally after moving on to the next challenge and studying its examples.

    It only took 5 days to figure out how to get two drop-down boxes to cascade from linking tables and pass the converted JavaScript array back to the caller. In the end, it was EASY, but the help files and videos kept dragging me off in different directions (because Alpha is so flexible, there are often many, many ways to accomplish the same thing, but ORGANIZATION...) If I had stayed the course and kept adamant about using native SQL from within Xbasic, I might have finished a few hours sooner.

    Now, back to the 8+ hour study as I attempt to populate a list box, programmatically, from terse/incomplete examples given in 12 help files and nine videos bridging how to do so using partial examples with poorly illustrated snippets of JavaScript, Xbasic, both, and neither, possibly using functions that the help system says will only work from the desktop, but are referenced from the UX sections exhaustively.


    Here's what took me five days to accomplish with the guidance of the help system in its present state:

    The following code is an AJAX callback from Xbasic built to cascade two drop-down boxes.

    The first function, "populateCategory" is called from the client-side "onRenderComplete" event. It selects unique records from the table "scp_block_instructions_category" by filtering them via an inner join to table "scp_block_instructions_sub_category_link", which contains only indices referencing back to rows in "scp_block_instructions_category". Why? Because ""scp_block_instructions_category" contains entries for both categories AND sub-categories.

    The next function, "populateSubCategory" is called from the "onChange" event fired by the drop-down box "DD_CATEGORY". It pulls a result set from table "scp_block_instructions_sub_category_link" filtered by the key value passed to the routine, and then the filtered record from each match queried from table "scp_block_instructions_category".

    Code:
    function populateCategory as c (e as p)
    
    'debug(1)
    
    Dim txt as c
    Dim list as c
    Dim catlist as c
    Dim subcatlist as c
    Dim js as c	
    Dim flag as l
    Dim sqlcommand as c
    Dim cn as sql::Connection
    'Dim args as SQL::Arguments
    Dim rs as SQL::ResultSet
    
    'args.add("category_id","1")
    
    
    
    flag = cn.open("::Name::MRIAPP01_MRISCOPE")
    
    	If flag = .f. then
    		populateCategory = "alert('Could not connect to MRIAPP01_MRISCOPE database.');"
    		exit function
    	end if
    
    sqlcommand = "SELECT DISTINCT scp_block_instructions_category.category, scp_block_instructions_category.id FROM scp_block_instructions_sub_category_link scp_block_instructions_sub_category_link INNER JOIN scp_block_instructions_category scp_block_instructions_category ON scp_block_instructions_sub_category_link.category_id = scp_block_instructions_category.id ORDER BY scp_block_instructions_category.id"
    
    'sqlcommand = "SELECT * FROM scp_block_instructions_category"
    ' WHERE Project_id = :projid"
    
    flag = cn.Execute(sqlcommand)
    ',args)
    
    	If flag = .f. then
    		cn.close()
    		populateCategory = "alert('Could not execute SQL statement.');"
    		exit function
    	end if
    
    rs = cn.ResultSet
    
    flag = rs.NextRow()
    
    	If flag = .f. then
    		'No records in ResultSet
    		cn.FreeResult()
    		cn.close()
    		populateCategory = ""
    	end if
    
    txt = ""
    
    
    'Create Category List
    
    'while flag
    	
    	
    	
    'end while
    
    
    
    'Create JavaScript Array
    
    'debug(1)
    
    	txt = "['Select Instruction Category','0']" + crlf()
    
    	while flag
    		txt = txt + "['" + js_escape(rs.Data("category")) + "','" + js_escape(rs.Data("id")) + "']" + crlf()
    		flag = rs.NextRow()
    	end while
    
    
    'Populate "list" string with crlf delimited JavaScript array...
    list = "[" + crlf_to_comma(txt) + "]"
    js = <<%txt%
    var data = __data__;
    var curData = '';
    var clearExisting = true;
    {dialog.object}.populateDropdownBox('DD_CATEGORY',data,clearExisting);
    %txt%
    js = stritran(js,"__data__",list)
    populateCategory = js
    
    end function
    
    
    
    
    
    
    
    function populateSubCategory as c (e as p)
    
    'debug(1)
    
    Dim txt as c
    Dim list as c
    Dim js as c	
    Dim idx_flag as l
    Dim out_flag as l
    Dim sqlcommand as c
    Dim cn as sql::Connection
    Dim idx_rs as SQL::ResultSet
    Dim out_rs as SQL::ResultSet
    Dim Category_LU as n
    Dim SubCategory_LU as n
    
    
    'Assign category variable sent to this sub at "e._currentRowDataNew.DD_CATEGORY" to "Category_LU"
    Category_LU = e._currentRowDataNew.DD_CATEGORY
    
    idx_flag = cn.open("::Name::MRIAPP01_MRISCOPE")
    
    	If idx_flag = .f. then
    		populateSubCategory = "alert('Could not connect to MRIAPP01_MRISCOPE database.');"
    		exit function
    	end if
    
    'Get result set from "scp_block_instructions_sub_category_link"
    
    sqlcommand = "SELECT * FROM scp_block_instructions_sub_category_link WHERE category_id = '" + Category_LU + "'"
    
    idx_flag = cn.Execute(sqlcommand)
    
    	If idx_flag = .f. then
    		cn.close()
    		populateSubCategory = "alert('Could not execute SQL statement.');"
    		exit function
    	end if
    
    idx_rs = cn.ResultSet
    
    idx_flag = idx_rs.NextRow()
    
    	If idx_flag = .f. then
    		'No records in ResultSet
    		cn.FreeResult()
    		cn.close()
    		populateSubCategory = ""
    	end if
    
    'The result set for "scp_block_instructions_sub_category_link" has been collected into SQL result set object "idx_rs"
    
    txt = ""
    
    	txt = "['Select Instruction Sub-Category','0']" + crlf()
    
    	while idx_flag
    	
    		'Get subcategory ID from current record in "scp_block_instructions_sub_category_link" result set
    		SubCategory_LU = idx_rs.Data("sub_category_id")
    	
    		'Assemble SQL command to get matching record from "scp_block_instructions_category"
    		sqlcommand = "SELECT * FROM scp_block_instructions_category WHERE id = '" + SubCategory_LU + "'"
    	
    	
    		'Execute assembled query...
    		out_flag = cn.Execute(sqlcommand)
    	
    			'Test for successful execution against "scp_block_instructions_category"
    			If out_flag = .f. then
    				cn.close()
    				populateSubCategory = "alert('Could not execute SQL statement.');"
    				exit function
    			end if
    	
    		out_rs = cn.ResultSet
    	
    		'Test for empty result set...
    		out_flag = out_rs.NextRow()
    	
    			If out_flag = .f. then
    				'No records in ResultSet
    				.Hide("DD_SUB_CATEGORY")
    				cn.FreeResult()
    				cn.close()
    				populateSubCategory = ""
    			end if
    	
    		'If we made it this far, we have one row from "scp_block_instructions_category" 
    		'where "scp_block_instructions_category.id" = "scp_block_instructions_sub_category_link.sub_category_id"
    	
    		'Create JavaScript Array
    		txt = txt + "['" + js_escape(out_rs.Data("category")) + "','" + js_escape(out_rs.Data("id")) + "']" + crlf()	
    	
    		idx_flag = idx_rs.NextRow()
    	end while
    
    'Populate "list" string with crlf delimited JavaScript array...
    list = "[" + crlf_to_comma(txt) + "]"
    js = <<%txt%
    var data = __data__;
    var curData = '';
    var clearExisting = true;
    {dialog.object}.populateDropdownBox('DD_SUB_CATEGORY',data,clearExisting);
    %txt%
    js = stritran(js,"__data__",list)
    populateSubCategory = js
    
    end function
    It looks like populating the list control is going to be extremely similar, but the help system won't return much help concerning the use of methods related to "{dialog.object}" and how the various methods work in this context.

    I'll figure it out eventually.

  13. #13
    "Certified" Alphaholic
    Real Name
    Lee Vasic
    Join Date
    May 2010
    Location
    Salt Lake City
    Posts
    1,211

    Default Re: Something needs to be done about the help system...

    You may have already figured this out, but stick with the UX controls and the List Controls. You have the most control in those areas. This is a good time to start using Alpha because the UX control and the list control are game changers. Build everything like it is on the ipad with Panels. Use mobile techniques for building your interfaces eg, pick lists etc. It works great on the web desktop and then it's device agnostic too.

  14. #14
    "Certified" Alphaholic
    Real Name
    Govindan Gandhi
    Join Date
    Aug 2008
    Location
    New York, NY
    Posts
    4,294

    Default Re: Something needs to be done about the help system...

    regarding post # 12
    disclaimer: i am a hobbyist not anywhere near your standard , just by looking at way you write the code. but i do have a question.
    The first function, "populateCategory" is called from the client-side "onRenderComplete" event. It selects unique records from the table "scp_block_instructions_category" by filtering them via an inner join to table "scp_block_instructions_sub_category_link", which contains only indices referencing back to rows in "scp_block_instructions_category". Why? Because ""scp_block_instructions_category" contains entries for both categories AND sub-categories.

    The next function, "populateSubCategory" is called from the "onChange" event fired by the drop-down box "DD_CATEGORY". It pulls a result set from table "scp_block_instructions_sub_category_link" filtered by the key value passed to the routine, and then the filtered record from each match queried from table "scp_block_instructions_category".
    since the post is rather long and the code is rather long i am unable to grip the question you have about cascading dropdown when multiple tables are involved.
    since you say alpha does well with flat table and the problem comes when multiple tables are involved and the code you have generously provided seems that it shows that when you select a record from one table then it uses the primary key to search the second table to construct the dropdown, and so on so on. is this correct?
    or i am proving what i said that i am nowhere near your standard.
    thanks for reading

    gandhi

    version 11 3381 - 4096
    mysql backend
    http://www.alphawebprogramming.blogspot.com
    ggandhi344@gmail.com
    Skype:ggandhi344@gmail.com
    1 914 924 5171

  15. #15
    Member
    Real Name
    Mark Bunds
    Join Date
    Aug 2015
    Location
    Cypress, TX
    Posts
    68

    Default Re: Something needs to be done about the help system...

    Quote Originally Posted by lvasic View Post
    You may have already figured this out, but stick with the UX controls and the List Controls. You have the most control in those areas. This is a good time to start using Alpha because the UX control and the list control are game changers. Build everything like it is on the ipad with Panels. Use mobile techniques for building your interfaces eg, pick lists etc. It works great on the web desktop and then it's device agnostic too.
    Thank you!

    I only recently began to suspect that the "Windows desktop" environment and its controls were being phased out because they would be redundant and much less powerful than the UX/Web applications environment. I never intended to use the Windows Desktop runtime environment, but it added to my confusion when I discovered references to "desktop" vs "web" applications withing the help system, and the first time I installed the Alpha development software, it presented a dialog asking if it should set up the environment for the production of desktop applications, web applications, or both. Being unfamiliar with Alpha, I let it set up for both. I never did find any definitive answers about the difference between the two.

    Now that I am fairly convinced that the "Windows Desktop" parts are irrelevant for this project, I'll be following your advice and concentrate on the UX and list controls.

    In fact, a few minutes ago I started working through some help documents describing the use of UX list controls. Too bad one of these same documents describes great benefits using dialog controls, which don't appear to be present in the build I am working from.

  16. #16
    "Certified" Alphaholic DaveM's Avatar
    Real Name
    Dave Mason
    Join Date
    Jul 2000
    Location
    Hudson, FL
    Posts
    6,022

    Default Re: Something needs to be done about the help system...

    v4 for dos was not the fist - seems there was a version 3? I just got on the tail end of it and there was a bit before that I never had.
    Ever heard electric desk? or Alphaworks?
    before my time.

    I do remember somethink like 7 or 8 3.5 floppies to install. I remember more with some apps though.

    I don't know about the desktop being less powerful or even less rich, but it is true that desktop anything is slowly going away just like dos fell to the wayside in the 90's.

    The trick right now is to build a web app that can sit on a cloud, website(several types here), all the different desktops depending on deployment.
    What do we do for the few million with a Mac that wants to run the software? we either build it on the web or build it so it can run on a mac if he has enough money.
    Last edited by DaveM; 10-21-2015 at 08:28 PM.
    Dave Mason
    dave@aldausa.com
    Skype is dave.mason46

  17. #17
    Volunteer Moderator Peter.Greulich's Avatar
    Real Name
    Peter Greulich
    Join Date
    Apr 2000
    Location
    Boston, MA
    Posts
    11,643

    Default Re: Something needs to be done about the help system...

    Quote Originally Posted by mbunds View Post
    In fact, a few minutes ago I started working through some help documents describing the use of UX list controls. Too bad one of these same documents describes great benefits using dialog controls, which don't appear to be present in the build I am working from.
    Just to be clear, there are 3 development areas in Alpha:
    1. Traditional Desktop (non-web) - typically dbf environment, but not exclusively
    2. Web (called "desktop" by the mobile guys)
    3. Mobile

    In ver 11 and previous, there were no UX controls in the web environment, but there were "dialogs". Those still exist in v12. They may be hidden under legacy controls.

    In the Traditional Desktop there are also dialogs, but those dialogs are a completely different animal from web dialogs. Never the twain shall meet.

  18. #18
    "Certified" Alphaholic
    Real Name
    David Kates
    Join Date
    Apr 2008
    Location
    Unionville, ON
    Posts
    7,722

    Default Re: Something needs to be done about the help system...

    Quote Originally Posted by mbunds View Post
    I only recently began to suspect that the "Windows desktop" environment and its controls were being phased...
    Possibly not suitable for your project, but the Alpha Desktop environment and its controls are not being phased out. Enhancements continue in this area.

  19. #19
    "Certified" Alphaholic DaveM's Avatar
    Real Name
    Dave Mason
    Join Date
    Jul 2000
    Location
    Hudson, FL
    Posts
    6,022

    Default Re: Something needs to be done about the help system...

    I have a friend that runs a very large software company that I worked for some time back. Friendship is now 40+- years.
    He is running vb6 almost entirely for his software and is just now looking for his web platform to build the next one.
    he started with basic and a database system, graduated to vb6 and access db in 97-98 after about 15 years with basic.
    We talked at length yesterday about what he would use for his next. Pretty sure he is going to vs and mssql, but he is still partially undecided. He is not a single developer. He has 4 programmers working for him now. He also does websites for the sector he is in and does the hosting himself. His customer base extends all of North America, Canada and parts of central/south America.
    Deployments number in the thousands for desktop. We were discussing SaaS as an option since that segment he is in is mostly rental now and not outright purchases.

    He told me that for him to stay profitable like he is now, he will have to go web. The other is just getting worn out. He wants to be useable on tablets(does not care about phones) and, desktops, laptops.

    He does know his market for sure.

    He seems to think that each working day for 6 days a week(half on Sunday), he will have several thousands of people on his sites/apps working at the same time. He also wishes to expand to crm wich will quadruple the online presence. I know he normally has 3 - 4 in a business in the segment on his system. Multiply that by at least 6500 businesses? Plus Quadruple+ the numbers it with crm?

    Scary numbers to me.
    Dave Mason
    dave@aldausa.com
    Skype is dave.mason46

  20. #20
    Member
    Real Name
    Mark Bunds
    Join Date
    Aug 2015
    Location
    Cypress, TX
    Posts
    68

    Default Re: Something needs to be done about the help system...

    Quote Originally Posted by GGandhi View Post
    regarding post # 12
    disclaimer: i am a hobbyist not anywhere near your standard , just by looking at way you write the code. but i do have a question.

    since the post is rather long and the code is rather long i am unable to grip the question you have about cascading dropdown when multiple tables are involved.
    since you say alpha does well with flat table and the problem comes when multiple tables are involved and the code you have generously provided seems that it shows that when you select a record from one table then it uses the primary key to search the second table to construct the dropdown, and so on so on. is this correct?
    or i am proving what i said that i am nowhere near your standard.
    You are almost right (actually you are totally right, but are probably wondering why I did what I did); and please don't take my word as gospel because I am very new at working with Alpha and have already done many things the hard way that an experienced Alpha developer would accomplish with a few clicks, but in my case, I believe the complications arise because of our use of linking tables.

    Using Alpha's automatic cascading works exceptionally well when they are being used with typical database schemas, and you are exactly right, that typically one control (it doesn't necessarily have to be a drop-down control, but Alpha has provided some special functions for working with these) gets populated with data from a table, and then can trigger a query that automatically populates the second control with data filtered by the search term, which is data passed to the query function by the user's act of making a selection.

    But the data passed to query for the population of the second control does not have to be a primary key; it can be sent as the actual text that appeared in the drop-down choice list. Alpha gives you the ability to populate your drop-down with single or dual values, so you can choose the best way to index your child query. A single value works very well for most applications, but value pairs provide you the option of displaying a different value than the one produced when a selection is made. And, of course, you may choose to display both values (but I believe you can only index by the second value when using automatic cascading). Alpha has some great videos illustrating this feature, and doing this the "conventional" way takes only a few minutes to produce really useful screens!

    Also keep in mind that the code I shared truly represents doing things the hard way inside of Alpha, which was designed primarily to allow developers to avoid writing low-level code. I have worked through many of the tutorials, and Alpha's automatic cascading works perfectly, is easy to understand and set up, but is unbelievably powerful and flexible in the options provided to facilitate cascading among various controls.

    The code examples are also lifted directly from the tutorials, existing only as placeholders representing my triumph over the Alpha help system; this code may not be totally complaint with their recommendations for best practices.

    So, on topic, you are absolutely correct about the typical way these controls are used. The confusion arises because, at the moment, I couldn't find a way to make automatic cascading work with our linking tables.

    I may be wrong, which would be a shame after all the time I've spent trying to get this to work, but it looks to me like Alpha wants these controls to operate on only one list, and pull data exclusively from only one table, at least that's what the examples appear to demonstrate. The demonstration for automatic cascading pulls customer names into the first drop-down, and then queries the very same table that the first data came from.

    This won't work for me because the MySQL project database has 67 tables in it already, and the Pervasive database has 1390 tables. I need to link tables, and I need to have extensive control over many-to-many relationships, which is something that Alpha does not provide unless you can create the custom code to manage it.

    And that is why my code examples are somewhat confusing when most Alpha users know there are usually easier ways, and is the same reason the code had to be created in the first place.

    You probably already know that linking tables are necessary to create many-to-many relationships, but these kinds of relationships are, well, let's say "unusual but not uncommon". One-to-one and one-to-many are far more common.

    So my table of categories (containing entries for sub-categories as well) might look like this:

    ID CATEGORY

    1 DRAWWORKS
    2 MUD PUMPS
    3 ROTARY TABLES
    4 FRAME
    5 FASTENERS
    6 PAINT AND FINISH
    7 SHAFTS
    8 GEARBOXES
    9 SPROCKETS

    If "MUD PUMPS" is a major category, it might have some sub-categories organized beneath it, because a mud pump has a frame, shafts, fasteners, and paint and finish. But a mud pump will never have a rotary table, and a fastener will never have a frame.

    It might be more intuitive to have made two tables, one for "categories," and one for "sub-categories," but since this data is non-repeating and self-related, it only needs one table.

    It might also seem easy to extend the columns to include a field which could reference which record in the table is a sub-category of the record in that row, but then if a category has more than one sub-category, the data in the major category row would have to be repeated. So you might add several columns that could contain entries for more than one sub-category, but now you've just limited yourself to allowing only that count of sub-categories, and I hate limits almost as much as I hate self-joins

    Normally, a linking table is used to join two tables, but it works exactly the same way in this instance. So if I want to produce a result set that populates the first drop-down with major categories only, ignoring the sub categories, I must run a DISTINCT query against the category table, but limited to only those records that appear in the linking tables "category_id" fields by an inner join.

    The linking table structure might look like this:

    ID CATEGORY_ID SUB_CATEGORY_ID
    01 1 6
    02 1 4
    03 1 5
    04 1 7
    05 2 4
    06 2 7
    07 2 5
    08 3 4
    09 3 8
    10 7 5
    11 7 9


    The DISTINCT query returns the first instance of EACH record that is joined to the link table by the (in this instance) category_id field. With the above configuration, the first drop-down would contain:

    DRAWWORKS
    MUD PUMPS
    ROTARY TABLES
    SHAFTS

    I had to store dual values, because the next query had to be performed against the link table alone, and obviously you can't query the CATEGORY_ID index value using the string "MUD PUMPS", so the data is stored in the drop-down choice list as the category string, and its numeric category_id index:

    DRAWWORKS 1
    MUD PUMPS 2
    ROTARY TABLES 3
    SHAFTS 7

    Also, I instructed the drop down to display only the text, but produce the index value when a selection is made.

    So if the user selects "MUD PUMPS", the DD produces "2" which is passed to the function that populates the sub-categories. It queries the link table for all records with a category id of "2", and the a loop is used to iterate through the result set, one record at a time, and issue a query against the category table for records where the ID of each category record matches one sub-category ID index value.

    Since the sub-category indices for the MUD PUMP are 4, 7, and 5, the second DD is populated with:

    FRAMES
    SHAFTS
    FASTENERS

    If the user selects "DRAWWORKS", the 2nd DD is cleared, and then populated with:

    PAINT AND FINISH
    FRAME
    FASTENERS
    SHAFTS

    This was the only way I could find to make this work, but I guarantee people working within Alpha's intended paradigm won't have these issues.

  21. #21
    "Certified" Alphaholic DaveM's Avatar
    Real Name
    Dave Mason
    Join Date
    Jul 2000
    Location
    Hudson, FL
    Posts
    6,022

    Default Re: Something needs to be done about the help system...

    I had to store dual values, because the next query had to be performed against the link table alone, and obviously you can't query the CATEGORY_ID index value using the string "MUD PUMPS", so the data is stored in the drop-down choice list as the category string, and its numeric category_id index:
    really?

    I have tables that have2 and 3 lookups built in with an index for each lookup.

    Just use different fields

    There are people on here with hundreds of dbf files - just for your info going forward
    Dave Mason
    dave@aldausa.com
    Skype is dave.mason46

  22. #22
    "Certified" Alphaholic
    Real Name
    Govindan Gandhi
    Join Date
    Aug 2008
    Location
    New York, NY
    Posts
    4,294

    Default Re: Something needs to be done about the help system...

    http://screencast.com/t/tPJ2bHx1bDI

    http://screencast.com/t/GNCOlxBKG

    I have made these screencasts to show what can be done with alpha, of course my example table are simple. the example is only to show you that you can make alpha do the heavy lifting and you can concentrate on other things that are vital to you.
    I will make one more video adjusting to show the name of the country, region, and subregion and storing the id which are primary keys but referenced to the cascading dropdown.
    if this example is not what you have in your mind please let me know.
    thanks for reading

    gandhi

    version 11 3381 - 4096
    mysql backend
    http://www.alphawebprogramming.blogspot.com
    ggandhi344@gmail.com
    Skype:ggandhi344@gmail.com
    1 914 924 5171

  23. #23
    "Certified" Alphaholic
    Real Name
    Govindan Gandhi
    Join Date
    Aug 2008
    Location
    New York, NY
    Posts
    4,294

    Default Re: Something needs to be done about the help system...

    last one showing name as a dropdown instead of the numbers so people can relate to it.
    http://screencast.com/t/qQCwzMqg
    thanks for reading

    gandhi

    version 11 3381 - 4096
    mysql backend
    http://www.alphawebprogramming.blogspot.com
    ggandhi344@gmail.com
    Skype:ggandhi344@gmail.com
    1 914 924 5171

  24. #24
    "Certified" Alphaholic kkfin's Avatar
    Real Name
    Kenneth
    Join Date
    Dec 2006
    Location
    EU
    Posts
    1,550

    Default Re: Something needs to be done about the help system...

    Quote Originally Posted by Peter.Greulich View Post
    Just to be clear, there are 3 development areas in Alpha:
    1. Traditional Desktop (non-web) - typically dbf environment, but not exclusively
    2. Web (called "desktop" by the mobile guys)
    3. Mobile
    Node has changed the game in Alpha. It ties all parts together.
    Today we are just using Alpha Anywere and its features.

    In my opinion in Alpha Anywhere version 12 it is all about data and how to handle it.

    If our application needs desktop part you add it. If you need to add a tablet/phone part you add this feature. If you need desktop browser support you add it. You can do this with Alpha Anywhere . And all these parts can be integrated using Node.

    Alpha Anywhere "destop application" can run any node module and for example start its own Node server and communicte directly with Alpha Anywhere browser/tablet/phone application and use browser/tablet/phone for reporting or input.

    Today I fully understand what Selwyn did mean a year ago in the Road Map telling that Alpha Anywhere is a full stack. Selwyn really knows what he is doing and all respect to him and his team. Today we are using amazing software: a full stack Alpha Anywhere.

  25. #25
    Member
    Real Name
    Mark Bunds
    Join Date
    Aug 2015
    Location
    Cypress, TX
    Posts
    68

    Default Re: Something needs to be done about the help system...

    Quote Originally Posted by DaveM View Post
    really?

    I have tables that have2 and 3 lookups built in with an index for each lookup.

    Just use different fields
    Thanks for taking a look at this.

    I meant that I had to store dual values in the drop-down, and configure it to display the text in its choice list, but supply the index value when a selection is made. The link table contains no text, just the foreign key values that map categories with sub-categories.

    Each key value in the link table corresponds to one record in the table supplying the category text, so the first query includes the joining syntax that filters the result set to only distinct, top-level categories. The first query populates the first drop-down with major categories immediately after the form is rendered.

    The second query is triggered by the action of the user making a selection from the first drop-down by the DD control's "onChange" event. The Xbasic function receives both the control text, and the index value as arguments passed to the function.
    Since the first DD choice list is populated only with records filtered by their major categories, and since I want to populate the second drop-down choice list with only entries filtered as "sub-categories," the query must be made against the linking table, and can only be done using index (key) values, which is why I stored the index value in the first drop-down.

    I considered using look-up fields within the same table, but they did not seem to be useful in this instance because of their intrinsic limitations. Look-up fields could work in a couple of different ways:

    • A single additional field could contain a pointer to a sub-category for another entry elsewhere in the table, but this would duplicate data if a major category had more than one sub-category...
    • Multiple additional fields could contain key values for sub-category entries elsewhere in the table, but this will limit the number of possible sub-categories to only the number of additional look-up fields, and could potentially set the stage for circular references...


    When you created your tables with multiple look-ups; did you use self-joins to produce record sets using recursive queries? These can be very useful, but can become very complex.

  26. #26
    Member
    Real Name
    John Smith
    Join Date
    Oct 2011
    Location
    Tulip Creek
    Posts
    110

    Default Re: Something needs to be done about the help system...

    @Ken
    Ken, I have read a lot of your posts and I'm really curious why you use Alpha? Which parts of Alpha do you use?

  27. #27
    Member
    Real Name
    Mark Bunds
    Join Date
    Aug 2015
    Location
    Cypress, TX
    Posts
    68

    Default Re: Something needs to be done about the help system...

    Quote Originally Posted by Peter.Greulich View Post
    Just to be clear, there are 3 development areas in Alpha:
    1. Traditional Desktop (non-web) - typically dbf environment, but not exclusively
    2. Web (called "desktop" by the mobile guys)
    3. Mobile

    In ver 11 and previous, there were no UX controls in the web environment, but there were "dialogs". Those still exist in v12. They may be hidden under legacy controls.

    In the Traditional Desktop there are also dialogs, but those dialogs are a completely different animal from web dialogs. Never the twain shall meet.
    Thanks for clearing this up!

    So, just to be sure I'm finally getting it:

    • "Traditional" desktop applications were usually created to run applications on a local machine, usually set up for data access from local data sources, usually using .dbf databases. These applications require the Alpha runtime environment, for which a license must be purchased for each seat. The runtime is required to create a local instance of an application server, and interprets the Alpha desktop project for the workstation OS API?


    • "Web applications" (A5W pages?) are nearly synonymous with "mobile applications," except for the fact that a "desktop" workstation usually won't employ a touch screen, so a "desktop web application" would not normally be expected to respond to "touch events," more often being created to respond to "mouse events"?


    • "Mobile applications" are created mainly to run on phones, tablets, and other compatible mobile devices, and differ from the "desktop web applications" only in the way their interface is designed for touch-response rather than mouse events, although mouse events will function if the mobile device has an HID connected. These applications may also employ special add-ons or UX components for the development environment that assist the developer in the creation of mobile device/tablet controls, like the "Tablet Optimized Forms" being developed by the Alpha team. These add-ons would not normally make sense for use in a "desktop web application" since desktop PC's don't traditionally use a touch-screen or stylus?


    This information is mainly academic now, since the good people on these forums have recommended working within the web applications environment, using UX components for desktop and mobile applications.

  28. #28
    "Certified" Alphaholic
    Real Name
    Govindan Gandhi
    Join Date
    Aug 2008
    Location
    New York, NY
    Posts
    4,294

    Default Re: Something needs to be done about the help system...

    "Traditional" desktop applications were usually created to run applications on a local machine, usually set up for data access from local data sources, usually using .dbf databases. These applications require the Alpha runtime environment, for which a license must be purchased for each seat. The runtime is required to create a local instance of an application server, and interprets the Alpha desktop project for the workstation OS API?
    NO
    >desktop applications may be built with dbf, the usual case or sql backend employing xdialogs to communicate to the db.
    > desktop application can run in single machine, aka single user, or in a local area network, aka multiuser. single user does not require runtime, multiuser requires runtime.
    > the runtime creates non dynamic skeletons to which dynamic data can be fetched and the look and feel can be recreated in each terminal.
    > application server is not needed for desktop applications even when grids are involved, as far a i know.

    web applications are just that, they need regular browser to run the applications, it can run in touch enabled screens too , i am sure. just run your browser application in an iPhone. it will work.

    mobile applications are built with chromeless or headless browser interface using most commonly employed phonegap which will convert regular html5 files to native phone codes without involvement of another language like obj-c.

    of course this is my impression, i could be wrong somewhere or totally.
    Last edited by GGandhi; 10-22-2015 at 07:32 PM.
    thanks for reading

    gandhi

    version 11 3381 - 4096
    mysql backend
    http://www.alphawebprogramming.blogspot.com
    ggandhi344@gmail.com
    Skype:ggandhi344@gmail.com
    1 914 924 5171

  29. #29
    "Certified" Alphaholic
    Real Name
    Lee Vasic
    Join Date
    May 2010
    Location
    Salt Lake City
    Posts
    1,211

    Default Re: Something needs to be done about the help system...

    Also, please master the panels. This is what makes it all work: UX, List Control, Panels.

  30. #30
    "Certified" Alphaholic Stan Mathews's Avatar
    Real Name
    Stan Mathews
    Join Date
    Apr 2000
    Location
    Bowling Green, KY
    Posts
    25,119

    Default Re: Something needs to be done about the help system...

    Multi user requires multiple seat runtime engine license or multiple developer licenses.
    There can be only one.

Similar Threads

  1. CRM system
    By Bob Whitaker in forum Application Server Version 11 - Web/Browser Applications
    Replies: 7
    Last Post: 03-29-2017, 10:25 PM
  2. Help with old system
    By kevinsink in forum Alpha Five Version 8
    Replies: 1
    Last Post: 01-21-2015, 11:53 PM
  3. Help System
    By Steve Workings in forum Application Server Version 11 - Web/Browser Applications
    Replies: 8
    Last Post: 10-13-2012, 11:41 AM
  4. system menu - system toolbar
    By Doug Chanley in forum Alpha Five Version 5
    Replies: 2
    Last Post: 12-01-2003, 05:26 PM
  5. Help System
    By Bill Griffin in forum Alpha Five Version 5
    Replies: 1
    Last Post: 01-18-2003, 08:11 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •