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

Novell Server - Records Crossover

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

  • Novell Server - Records Crossover

    We are currently in testing stages for Alpha5V9. The application data files reside on a Novell 6.5 server.
    The clients are working on XP Pro.
    Is there a downside to using Alpha5V9 on Novell versus Windows 2003 server.

    One problem we are having is when two users are entering parent records, sometimes information from another record shows.
    For example,
    User 1 is entering an order, leaves the header to go into the parts region.
    User 2 starts entering an order and the parts from User 1's order is showing in User 2's form. When we leave the header and go into the parts database the parts from the other record disappears and then you can add your part.
    Help!!

  • #2
    Re: Novell Server - Records Crossover

    when two users are entering parent records
    When are you assigning the parent record unique identifier. Your description sounds like you have an open record with a new unique id assigned but not saved at the time of creation, another user begins a record and gets the same id assigned since the other record is not saved.
    There can be only one.

    Comment


    • #3
      Re: Novell Server - Records Crossover

      So what's the solution? We will have at least 20 people including remote users who will be accessing the database. We can't have records crossing over like that.
      We're also having issues with order numbers, not record numbers changing, they are two differnent things. I start off with one order number and by the time I'm done entering my information, it changes. I know it's because two people are working at the same time.
      We don't want to enter a new record, save the record and then change it. That doesn't make sense. Once we click enter new record it should stay on that record just like Alpha4 until the recorded is saved.

      Comment


      • #4
        Re: Novell Server - Records Crossover

        No knowledge of A4 and you provide no information of how you are generating the unique record identifier for the parent record. The record number does not change. You may be having unintended linkage of multiple child records to the as yet unsaved parent record based on the temporarily non unique identifier. (not the record number)

        We don't want to enter a new record, save the record and then change it. That doesn't make sense.
        Actually it does. It guarantees uniqueness of the id. If the record is abandoned for some reason you need to mark it void or delete it.

        From discussions I've read on this board it seems to be fairly common practice to autoincrement some id field, save the record, then begin editing that record.
        There can be only one.

        Comment


        • #5
          Re: Novell Server - Records Crossover

          This just doesn't make sense to start a record, save right away and then edit. Other fields are required so you cannot save the record without filling those fields. In the mean time someone else is entering another record and your crossing over.

          Comment


          • #6
            Re: Novell Server - Records Crossover

            Nancy

            Below is a function I wrote (borrowed most of the code from some code on Cal Locklin's site actually). The function uses a seperate table to house the next available number. When the user the presses the save button - the function goes out to this table and gets gets the next available number. Then it increments the table so the next user that comes gets the next proper number. All of this takes place in a blink of an eye. This method does not require saving the record prior to filling in fields on the parent / header portion of the record (neither does Alphas either actually). If you want to leave the parent for some reason without finishing it and go to the child table - you must do as Stan says and save the record with a Unique ID so the child records have something to relate to. Even though everything might be on one screen it is not one table and you have to make sure that you can relate the tables properly. Not saving the unique indentifier on the parent table gives no chance for relating the other (child table) to the parent.

            You would not have to use my function to do what you want - you can use's Alpha's built in functionality. I just like this method better.

            Regards,

            Jeff

            Code:
            'Date Created: 24-Aug-2006 05:54:45 PM
            'Last Updated: 02-Feb-2007 11:39:02 PM
            'Created By  : Jeff
            'Updated By  : Jeff Kletrovets
            FUNCTION auto_incr_c as C (incr_table as C,Fldname as C)
            	'Modification of Cal Locklin's auto_incr function to allow for passing
            	'field name in the increment table since I am going to use one table
            	'with multiple fields.  Each field will be the increment holder for
            	'the data tables in the application.
            	'Date: 08/24/06
            
            	'Open the increment table with exclusive access, then get the appropriate number, then close increment table quickly
            	'to avoid confilct with another user
            	DIM tries as N
            	tries = 0
            	'---------------
            	Restart_here:
            	'---------------
            
            	ON ERROR goto Not_exclusive
            	tp = table.open(incr_table,file_rw_exclusive)	
            	'This insures we are on the first (and only record) in the table.
            	tp.fetch_goto(1)
            	fld = tp.field_get(Fldname)	'Get a pointer to the appropriate increment field in the record.
            	curval = alltrim(fld.value_get())
            	newval = str(val(curval)+1)
            	'Store the next value in the increment table and quickly close the table to avoid conflicts with other users.
            	tp.change_begin()
            		fld.value_put(newval)
            	tp.change_end()
            	tp.close()
            
            	' This passes the return value.  Must be same name as the function
            	auto_incr_c = alltrim(newval)
            	'From Dr. Wayne Xbasic for Everyone page 77.  We must now clear the error trap and allow the function
            	'to exit.  Prevents the possibility of an endless loop.
            	ON ERROR goto 0
            	EXIT FUNCTION
            
            	'---------------
            	Not_exclusive:
            	'---------------
            	' Create a loop if table was locked to allow time for whoever has it locked to finish and release the table
            	WHILE tries < 4
            		tries = tries+1
            		' This was sample code I put in to test the function.  It closes the table after the second try and then the
            		' function proceeeds like it should.	
            		'	IF tries=2
            		'		table.close()
            		'		end if
            		'	sleep(2)
            		'	goto Restart_here
            		'	end while
            
            		'ui_msg_box("Locked","Lock - error",UI_STOP_SYMBOL)  Took this line out because I just had the message box
            		' in to show how the function was progressing
            
            		' Now pause the script for 2 seconds to allow the table to be closed and goto restart to try again
            		sleep(2)
            		GOTO restart_here
            	END WHILE
            	' Function just left the loop because it has tried 3 times and could not get exclusive access
            	' Now show message to user.  This should NEVER come up.
            	ui_msg_box("Increment Failure","Error! - An exclusive lock could not be achieved on the increment table.  Contact Jeff!",UI_STOP_SYMBOL)
            	ON ERROR goto 0
            	EXIT FUNCTION
            
            
            END FUNCTION

            Comment


            • #7
              Re: Novell Server - Records Crossover

              Thanks Jeff, I'll have my programmer look at this. You understand and that's a good start for us to figure this out.

              Comment


              • #8
                Re: Novell Server - Records Crossover

                Jeff,
                we have tried your function and implemented it after clicking a new record in the table and received this message:

                Error! - An exclusive lock could not be achieved on the increment table. Contact Jeff!

                Now what?

                Nancy

                Comment


                • #9
                  Re: Novell Server - Records Crossover

                  Originally posted by jkletrovets View Post
                  ...Below is a function I wrote (borrowed most of the code from some code on Cal Locklin's site actually).
                  WHAT!? I'm not sure I can allow that - especially for someone who misspells separate.:D (Hi Jeff!)

                  Comment


                  • #10
                    Re: Novell Server - Records Crossover

                    Nancy,
                    Did you create a separate table to house the incrementing number? The function Jeff and Cal provided doesn't tell you what the error is. There could be two causes of the failure to obtain an exclusive lock:
                    1) the table doesn't exist, or
                    2) you have the table open in a browse or some other way in which it doesn't close and no one else can obtain an exclusive lock on it.

                    Comment


                    • #11
                      Re: Novell Server - Records Crossover

                      Originally posted by CALocklin View Post
                      WHAT!? I'm not sure I can allow that - especially for someone who misspells separate.:D (Hi Jeff!)
                      Well....now I feel like a dunce!! :o Hi Cal!

                      Nancy......what Dr. Wayne said.......and possibly......

                      You might want to make sure that the field name in the increment table and the field name in your actual table are the EXACT same name.

                      For example - I call my incrementing table - "incr_nums" If your field name in your actual table is "UIDF" for Unique ID Field. Just make sure that UIDF is in the incr_nums table. As you have more tables you want to use a auto increment number for just add the field to incr_nums and make sure it has the same field name as the actual table. So, you would not be able to use UIDF again since that field already exists in the incr_nums table. I normally prefix it with something like POUIDF if it was my purchase order table. Probably goes without saying but......you can just set your starting number by whatever value you enter into the incr_nums table.

                      This function works - I use it all the time.

                      Regards,

                      Jeff

                      Comment


                      • #12
                        Re: Novell Server - Records Crossover

                        Jeff,
                        Where do you call that function from?
                        Nancy

                        Comment


                        • #13
                          Re: Novell Server - Records Crossover

                          Nancy

                          I normally put it in the OnPush Event of my Save Record pushbutton.

                          Here is some sample code:
                          Code:
                          'Create pointer to current table
                          DIM tbl as p 
                          tbl=table.current()
                          
                          If tbl.Mode_Get()=2 'Enter Mode
                          'Set the uid value
                          tbl.attuidf=auto_incr_c("incr_nums","attuidf")
                          end if
                          Regards,

                          Jeff

                          Comment


                          • #14
                            Re: Novell Server - Records Crossover

                            Jeff,
                            Attached is an example of our order screen. We need to attach order numbers to each order at the start of the NEW RECORD. So when each user clicks on NEW RECORD button that user keeps that order number.
                            Shouldn't the code be implemented at the NEW RECORD button and not the SAVE RECORD button according to your code?

                            Nancy

                            Comment


                            • #15
                              Re: Novell Server - Records Crossover

                              Sure Nancy....if that works for your situation then it is fine to do it on the front side of creating a record. In my situation, I do not need to assign the UID number until the save process occurs.


                              Regards.

                              Jeff

                              Comment

                              Working...
                              X