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

Automated Network Optimization

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

    #16
    RE: Automated Network Optimization

    Cal (and all),

    Attached is the latest version (for A5V4) of the OptimizeNet function. This version has an option switch at the very beginning (Refresh=.f.) which will change the operation when you are currently using a shadowed database. If true, it will refresh the optimization. If false, it will run the full optimization. Since I don't believe there is much to be gained by just doing a refresh, I will always do a full optimization myself. One could also modify it to give the user a prompt to allow a choice though.

    As before, it just requires a little code (now about 10 lines) in the AUTOEXEC script.

    Regards,

    Ira J. Perlow
    Computer Systems Design & Associates
    [email protected]
    Regards,

    Ira J. Perlow
    Computer Systems Design


    CSDA A5 Products
    New - Free CSDA DiagInfo - v1.39, 30 Apr 2013
    CSDA Barcode Functions

    CSDA Code Utility
    CSDA Screen Capture


    Comment


      #17
      RE: Automated Network Optimization

      Ira (and Cal), thanks for performing a public service that benefits many of us. One question Ira - can the user intercept the control panel when it momentarily appears?
      Peter
      AlphaBase Solutions, LLC

      [email protected]
      https://www.alphabasesolutions.com


      Comment


        #18
        RE: Automated Network Optimization

        It's interesting the ruts we can get in. When I created a script some time ago to start one application from another, it was with the desire to keep the initial app (an A5 "Launcher") open so the user could go back and forth by clicking the icon on the Win95/98 task bar. Also, additional apps could be started from the "Launcher" without closing the current app or the "Launcher".

        This can't be done with 'send_keys' because opening another app from "File/Open" will automatically close the current app. Unfortunately, I left myself in that rut when working on this. I actually did get it to work about the same time Ira posted his solution but mine had a long delay while switching to the network app that was unacceptable.

        For anyone interested: If you want a launcher, it is easier and saves a lot of system resources to just create a directory with a bunch of shortcuts to the desired applications and then put a shortcut icon to that directory on your task bar. I did the "Launcher" thing because of all the questions on this board about starting one app from another.

        Comment


          #19
          RE: Automated Network Optimization

          I have been impressed with the way this thread has progressed. Cal, thanks for starting the thread and for all you others your responses indicate the quality of people using this board especially this thread.

          Bob Sullivan

          Comment


            #20
            RE: Automated Network Optimization

            A comment that may help developers:

            While adapting this script to my specific application, I wanted to run some tests on my own system. However, I couldn't get the pre-defined icon to work and then found that the files weren't in my shadow directory. WHAT???

            A little inspection turned up the following:

            I was installing my "Network" files to the G: drive and my "Client" files, which include the runtime, to the D: drive. But, after running optimize, the files weren't in my D: shadow directory! Well..., actually, I found out they were right where they were told to be - in the "private path>\shadow\"app_dir>. BUT, since I also have the full version installed on the computer, the program thinks the private path is where my full version is installed - at D:\A5v4 not D:\PTracker.

            My fix was to change all the ":A5.get_private_path()" commands to ":A5.get_exe_path()". I'm still not sure this is the best way to do it since the private path is the default but it seems to work fine so far.

            Comment


              #21
              RE: Automated Network Optimization

              Cal,

              Unless you have some odd configuration that I can't concieve, changing all of the
              :a5.Get_Private_Path() to some other value is incorrect. If you do need to change it (and I would think it through carefully 1st), the only place you should modify the script for a different shadow path is in the line;

              shadow_path=:a5.Get_Private_Path()+chr(92)+"Shadow"

              All of the other uses should be the current private path. This is the only unique directory (and sub-directories of it)on the network that a user can be guaranteed that they would have full rights to and that they do not share with any other user. This is required for the files (OPT_NETxx.TXT) that act as flags to the code.

              Regards,

              Ira J. Perlow
              Computer Systems Design & Associates
              [email protected]
              Regards,

              Ira J. Perlow
              Computer Systems Design


              CSDA A5 Products
              New - Free CSDA DiagInfo - v1.39, 30 Apr 2013
              CSDA Barcode Functions

              CSDA Code Utility
              CSDA Screen Capture


              Comment


                #22
                RE: Automated Network Optimization

                Ira, now you have me worried. Shouldn't both the exe and the private path be on the local drive? Especially if you want to run the shadow tables under it? If so, why not have the private path = the exe path?

                Basically, here's what I did: I modified the line you mentioned and all lines referring to the OptNet.. files in both the OptNet function and the Autoexec script. I'm also copying 8 other files from the network so I pointed those to the exe path as well.

                Note: In case you are wondering why 8, I'm copying an icon, help files(3), a bitmap, and (here's a teaser) the data dictionaries for a 'private' address book on the local drive. This allows me to update the private book without re-installing from the CD to the user's system. Adding the private book on the local system to the app was interesting but that's another issue.

                On a single user system, the default private path is the same as the exe path. This is the way I've set up my application. The data files are on the network but all other files are in the combined exe/private path on the local drive. Only the shadow tables are in a separate directory which is below the exe/private path at "exe_path>#92;shadow\PTracker. Is there some reason the private path should be somewhere else?

                The problem I encountered only occurs on a system which has both the full version and a runtime on the same computer. When using the runtime program, the private path is still seen as being under the full version. In other words:
                Full version at C:\A5v4 - private path = C:#92;A5v4
                Runtime at D:\A5v4runtime - private path still = C:#92;A5v4
                I checked this out from the View/Settings menu option and by putting a button on a form to list the various paths just as a double check. I also tried changing the private path for the runtime then closed it and opened the full version to find that the private path for the full version had also been changed.

                So, my problem was that when I ran the Optimize from the runtime version (which I wanted to test to be sure all the necessary files where included in my setup file) the optimized files where placed underneath the directory for my full version which was on a different (logical) drive.

                When the program is installed on a system where there is only the runtime or only the full version, there is no issue with using the private path.

                Comment


                  #23
                  RE: Automated Network Optimization

                  Cal,

                  Basiclly you are right. The EXE and Private paths are typically the same. It is better to have them different (I always put the private and all A5 related local drive paths under the EXE path so that it is easier to remove if required by just deleting the parent EXE folder). The reason to have the EXE different from the private is

                  1. Better control of EXE program changes and updates
                  2. Eliminating the clutter of private folder files (particularlly the MPX etc files) in the EXE folder
                  3. Minimizing corruptions to the EXE folder's files in case of crashes

                  I have found the Private path is typically the default of the last installed versions path.

                  The Opt_Netxx.TXT files should be in the private directory. It should work no matter what the state of the private directory is as it is just used temporarily and will always be the same when changing the app or doing a full refresh. The private directory is the correct location for them always.

                  "shadow_path" controls everything else that is relavant to your needs and thus that is the one (and only one) to change.

                  Regards,

                  Ira



                  Cal Locklin wrote:
                  -------------------------------
                  Ira, now you have me worried. Shouldn't both the exe and the private path be on the local drive? Especially if you want to run the shadow tables under it? If so, why not have the private path = the exe path?

                  Basically, here's what I did: I modified the line you mentioned and all lines referring to the OptNet.. files in both the OptNet function and the Autoexec script. I'm also copying 8 other files from the network so I pointed those to the exe path as well.

                  Note: In case you are wondering why 8, I'm copying an icon, help files(3), a bitmap, and (here's a teaser) the data dictionaries for a 'private' address book on the local drive. This allows me to update the private book without re-installing from the CD to the user's system. Adding the private book on the local system to the app was interesting but that's another issue.

                  On a single user system, the default private path is the same as the exe path. This is the way I've set up ....
                  Regards,

                  Ira J. Perlow
                  Computer Systems Design


                  CSDA A5 Products
                  New - Free CSDA DiagInfo - v1.39, 30 Apr 2013
                  CSDA Barcode Functions

                  CSDA Code Utility
                  CSDA Screen Capture


                  Comment


                    #24
                    RE: Automated Network Optimization

                    I really appreciate what both you gentlemen are doing here. Slowly, I'm hoping to gain an understanding of the issue at hand. I have a slightly different problem. On my PC at work, I have the full version, all other PCs have the runtime. Regardless, all PCs think they are shadowed, even though only three out of 10 have been shadowed to date (I'm breaking them in slowly (I already inadvertenetly overwrote the source data files twice!).
                    Here is the test script (from Ira's script) attached to a button:

                    ''XBasic
                    this_path=:A5.Get_Master_Path()
                    if len(alltrim(this_path))=0 then 'the database is not shadowed
                    ui_msg_box("THE CURRENT DATABASE is NOT shadowed", "and the path to the current database is "|+ A_Db_current_path)
                    else
                    ui_msg_box("THE CURRENT DATABASE is shadowed", "The path to the SHADOW database is "| +a_db_current_path+Chr(13)+Chr(13)+"The path to the SOURCE database is " + this_path)
                    end if
                    end

                    ''(| = backslash)

                    The results returned are:

                    On my PC w. the full version (Shadow table exists but using the source table on P-333)...
                    THE CURRENT DATABASE is shadowed
                    The path to the SHADOW database is ||P-333|C|dba5|
                    The path to the SOURCE database is ||P-333|C|dba5

                    On a PC with the P-333 C: drive mapped as Y: (with the runtime) and NOT Shadowed...
                    THE CURRENT DATABASE is shadowed
                    The path to the SHADOW database is C:|dba5|
                    The path to the SOURCE database is ||P-333|C|dba5

                    On the PC with the source data (with the runtime) and NOT Shadowed...
                    THE CURRENT DATABASE is shadowed
                    The path to the SHADOW database is C:|dba5|
                    The path to the SOURCE database is ||P-333|C|dba5

                    I don't get it. What is going on?
                    Peter
                    AlphaBase Solutions, LLC

                    [email protected]
                    https://www.alphabasesolutions.com


                    Comment


                      #25
                      RE: Automated Network Optimization

                      Peter,

                      Let's see where everything is. Get the values for all of the following for each system.

                      :A5.Get_Exe_Path()
                      :A5.Get_Master_Path()
                      :A5.Get_Name()
                      :A5.Get_Path()
                      :A5.Get_Private_Path()
                      :A5.Get_Shared_Path()
                      A_DB_CURRENT_PATH

                      I suspect A_DB_CURRENT_PATH may not always be uptodate, but that's just speculation. I haven't seen any problems with my code to date.

                      Regards,

                      Ira J. Perlow
                      Computer Systems Design & Associates
                      [email protected]
                      Regards,

                      Ira J. Perlow
                      Computer Systems Design


                      CSDA A5 Products
                      New - Free CSDA DiagInfo - v1.39, 30 Apr 2013
                      CSDA Barcode Functions

                      CSDA Code Utility
                      CSDA Screen Capture


                      Comment


                        #26
                        RE: Automated Network Optimization

                        Ira,
                        Thanks for taking the time to respond. Here is the global script (attached to a button) created per your suggestion:

                        ''XBasic

                        vGet_Exe_Path = :A5.Get_Exe_Path()
                        vGet_Master_Path = :A5.Get_Master_Path()
                        vGet_Name = :A5.Get_Name()
                        vGet_Path = :A5.Get_Path()
                        vGet_Private_Path = :A5.Get_Private_Path()
                        vGet_Shared_Path = :A5.Get_Shared_Path()
                        vA_DB_CURRENT_PATH = A_DB_CURRENT_PATH

                        ui_msg_box("Path Test","Get_Exe_Path = " + vGet_Exe_Path + Chr(13) +|
                        "Master_Path = " + vGet_Master_Path + Chr(13) +|
                        "Get_Name = " + vGet_Name + Chr(13) +|
                        "Get_Path = " + vGet_Path + Chr(13) +|
                        "Get_Private_Path = " + vGet_Private_Path + Chr(13) +|
                        "Get_Shared_Path = " + vGet_Shared_Path + Chr(13) +|
                        "A_DB_CURRENT_PATH = " + vA_DB_CURRENT_PATH + Chr(13))
                        END

                        Here are the results:

                        P-933 - On my PC w. the full version (Shadow table exists but using the source table on P-333)

                        :A5.Get_Exe_Path() = C:|Program Files|A5v4
                        :A5.Get_Master_Path() = ||P-333|C|dba5
                        :A5.Get_Name() = ||P-333|C|dba5|GEI_DB.adb
                        :A5.Get_Path() = ||P-333|C|dba5
                        :A5.Get_Private_Path() = C:|Program Files|A5v4
                        :A5.Get_Shared_Path() = C:|Program Files|A5v4
                        A_DB_CURRENT_PATH = ||P-333|C|dba5


                        P-333 - On the PC with the source data (with the runtime) and NOT Shadowed...

                        :A5.Get_Exe_Path() = C:|Program Files|A5v4
                        :A5.Get_Master_Path() = ||P-333|C|dba5
                        :A5.Get_Name() = C:|dba5|GEI_DB.adb
                        :A5.Get_Path() = C:|dba5
                        :A5.Get_Private_Path() = C:|Program Files|A5v4
                        :A5.Get_Shared_Path() = C:|Program Files|A5v4
                        A_DB_CURRENT_PATH = C:|dba5


                        P-200 - On a PC with the P-333 C: drive mapped as Y: (with the runtime) and NOT Shadowed...

                        :A5.Get_Exe_Path() = C:|Program Files|A5v4
                        :A5.Get_Master_Path() = ||P-333|C|dba5
                        :A5.Get_Name() = Y:|dba5|GEI_DB.adb
                        :A5.Get_Path() = Y:|dba5
                        :A5.Get_Private_Path() = C:|Program Files|A5v4
                        :A5.Get_Shared_Path() = C:|Program Files|A5v4
                        A_DB_CURRENT_PATH = Y:|dba5

                        Any insights?
                        Peter
                        AlphaBase Solutions, LLC

                        [email protected]
                        https://www.alphabasesolutions.com


                        Comment


                          #27
                          RE: Automated Network Optimization

                          Upon further reflection, it would seem that :A5.Get_Master_Path() returns the "immediate" data path on a network. At home, on a standalone PC, when pointing to the source database, :A5.Get_Master_Path() returns blank. On the network it returns the actual data path regardless if one is shadowed or not. Perhaps the "solution" is to test the return string for :A5.Get_Name() and/or :A5.Get_Path() for the string "shadow", to properly make a decision on whether to refresh the shadow/optimize network. Of course, this would assume that the shadowed network has the word "shadow" in the path and that the user does not have "shadow" in the actual source data path. Hardly fool proof.
                          Peter
                          AlphaBase Solutions, LLC

                          [email protected]
                          https://www.alphabasesolutions.com


                          Comment


                            #28
                            RE: Automated Network Optimization

                            Peter,

                            Repeat your tests using a shadowed database for comparison purposes.

                            Also, what are the particulars of your network? Server OS, Workstation OS's etc.

                            The test for whether the item is shadowed or not is a crucial comparison in the script.

                            I agree that testing for the word shadow in the path is a questionable method (although it should be exactly one folder up from the folder that has the database name, e.g. c:|Program Files|A5V4|Shadow|adbname|adbname.adb)

                            Post the results, and I'll see what can be ascertained.

                            Regards,

                            Ira J. Perlow
                            Computer Systems Design & Associates
                            [email protected]
                            Regards,

                            Ira J. Perlow
                            Computer Systems Design


                            CSDA A5 Products
                            New - Free CSDA DiagInfo - v1.39, 30 Apr 2013
                            CSDA Barcode Functions

                            CSDA Code Utility
                            CSDA Screen Capture


                            Comment


                              #29
                              RE: Automated Network Optimization

                              Here are the three PCs in my office that have been shadowed to date:

                              P-933 - On my PC w. the full version A5 (v.4.03/230) running Shadow table...

                              :A5.Get_Exe_Path() = C:|Program Files|A5v4
                              :A5.Get_Master_Path() = ||P-333|C|dba5
                              :A5.Get_Name() = C:|Program Files|A5v4|Shadow|dba5|GEI_DB.adb
                              :A5.Get_Path() = C:|Program Files|A5v4|Shadow|dba5
                              :A5.Get_Private_Path() = C:|Program Files|A5v4
                              :A5.Get_Shared_Path() = C:|Program Files|A5v4
                              A_DB_CURRENT_PATH = C:|Program Files|A5v4|Shadow|dba5|


                              P-450b - On the PC with the source data and Shadowed...

                              :A5.Get_Exe_Path() = C:|Program Files|A5v4
                              :A5.Get_Master_Path() = ||P-333|C|dba5
                              :A5.Get_Name() = C:|Program Files|A5v4|Shadow|dba5|GEI_DB.adb
                              :A5.Get_Path() = C:|Program Files|A5v4|Shadow|dba5
                              :A5.Get_Private_Path() = C:|Program Files|A5v4
                              :A5.Get_Shared_Path() = C:|Program Files|A5v4
                              A_DB_CURRENT_PATH = C:|Program Files|A5v4|Shadow|dba5|


                              P-90 - On a PC Shadowed...

                              :A5.Get_Exe_Path() = C:|Program Files|A5v4
                              :A5.Get_Master_Path() = ||P-333|C|dba5
                              :A5.Get_Name() = C:|Program Files|A5v4|Shadow|dba5|GEI_DB.adb
                              :A5.Get_Path() = C:|Program Files|A5v4|Shadow|dba5
                              :A5.Get_Private_Path() = C:|Program Files|A5v4
                              :A5.Get_Shared_Path() = C:|Program Files|A5v4
                              A_DB_CURRENT_PATH = C:|Program Files|A5v4|Shadow|dba5|

                              Peter
                              AlphaBase Solutions, LLC

                              [email protected]
                              https://www.alphabasesolutions.com


                              Comment


                                #30
                                RE: Automated Network Optimization

                                Mispoke - The 450b PC does not have the source data (source is on the P-333).
                                Peter
                                AlphaBase Solutions, LLC

                                [email protected]
                                https://www.alphabasesolutions.com


                                Comment

                                Working...
                                X