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

Extreme problem adding fields to a table.

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

    Extreme problem adding fields to a table.

    I am using a function to add fields to a table and I have been doing it this way for years without any problems but now I am trying to add fields to a table and it is blowing the table up deleting at least one field and changing field types on others.

    I will post the function code here but first I am trying to get a list of the fields in the table using A5_GET_FIELDNAMES() and then write it somewhere like a txt file so I can post the results here and also use it to check for problems.

    So if I use fld_list = a5_get_fieldnames( "wo_header.dbf" ) it puts the fields in a list.

    I think if I tried
    Code:
    fld_list = a5_get_fieldnames( "wo_header.dbf" )
    f=file.create("Filename",file_rw_exclusive)
    f.write_line(fld_list)
    f.flush()
    f.close()
    It would write all the field names to one line. I am going to try that and see.

    Here the function I am using to add the fields to the table.

    Code:
    FUNCTION wo_header AS L ( )
    DIM datapath as C
    IF a5.Get_Master_Path() = ""
        datapath = a5.Get_Path()+chr(92)
    ELSE
        datapath = a5.Get_Master_Path()+chr(92)
    END IF
     
    'Check table and LAST field updated first. If it has already been 
    'done, skip the rest. Don't need to use "datapath" to get field names.
    fld_list = a5_get_fieldnames( "wo_header.dbf" )
    IF "IS_Exported"$fld_list '2013-12-13
        GOTO Updates_done
    END if
    
    fld_list = a5_get_fieldnames( "wo_header.dbf" )
    IF .not. ("Is_Exported"$fld_list)
        new_flds = <<%list%
    Is_Exported,L,1,0         
    event_id,N,16,0
    Details,C,72,0
    tmstart,T,17,0
    tmend,T,17,0
    Alarm,C,20,0
    How,C,20,0
    Equip,C,20,0
    Export_It,L,1,0
    Add_Date,D,8,0
    Notes,M,10,0
    Priority,N,4,0
    Class_type,C,16,0
    Rev_Date,D,8,0
    Sch_datec,C,16,0
    Sch_Date,D,8,0
    Cust_email,C,60,0
    %list%
        a5_add_fields_to_table( datapath + "wo_header.dbf", new_flds )
     end if   
    Updates_done:
    END FUNCTION
    Last edited by preston2; 09-03-2015, 05:07 PM.

    #2
    Re: Extreme problem adding fields to a table.

    How about
    <Tbl>.FIELD_ADD()

    ???
    expanded:

    table.create_begin("firstname","c",30)
    table.field_add("lastname","c",30)
    table.field_add("price","n",5,2)
    table.field_add("quantity","n",2)
    table.field_add("birthday","d")
    'The create_end method creates the table and assign an object pointer to the table
    tbl = table.create_end("sample.dbf")

    or
    TABLE.FIELD_ADD()
    Dave Mason
    [email protected]
    Skype is dave.mason46

    Comment


      #3
      Re: Extreme problem adding fields to a table.

      Try this sample.
      Example

      This script adds several new fields to an existing table.

      fields = <<%str%
      Product,c,20
      Price,n,10,2
      Notes,m
      %str%

      table.add_fields("table1", fields)

      Comment


        #4
        Re: Extreme problem adding fields to a table.

        Thanks guys. I will test both methods out.

        Comment


          #5
          Re: Extreme problem adding fields to a table.

          Ok,

          Table.Field_Add() is only used between TABLE.CREATE_BEGIN() and TABLE.CREATE_END() so it looks like it is for creating new tables and not adding fields to an existing table.

          Using the example John post yields the same result I was having with my code above. In other words it trashes the table.

          I have something else I am about to try and see if that may be the problem.

          Comment


            #6
            Re: Extreme problem adding fields to a table.

            I give up. I even tried only adding one field and it still trashed the table. Beyond me that a function code I have used for years now stops working right. It may be something with the table, who knows.

            I think I am just going to add a child table and then redo all my forms and scripts to work off the child table data.

            Comment


              #7
              Re: Extreme problem adding fields to a table.

              Can you, as an alternate solution, create the new table with an additional linking field, then use create_set() to link one to one?

              Comment


                #8
                Re: Extreme problem adding fields to a table.

                If I do it as an update the new child table will already be linked one to one in the set.

                If I am understanding you correctly.

                Comment


                  #9
                  Re: Extreme problem adding fields to a table.

                  I'm not sure of your goal, but:

                  1) You have a table with, say, 10 fields.

                  2) You need to add 3 new fields "on the fly".

                  3) You can use tbl.field_add() to create a new table with the 3 new fields, and one additional field for linking back to the original table with 10 fields.

                  4) You use create_set() to link those two tables, with a one to one relationship giving the set a new, unique name.

                  Comment


                    #10
                    Re: Extreme problem adding fields to a table.

                    You haven't told us much about the base table. There are limits on the number of fields and the total of the field width. Can you add one field with your code?

                    Contrary to the song, the road does not go ever on.
                    There can be only one.

                    Comment


                      #11
                      Re: Extreme problem adding fields to a table.

                      table_restructure() will work without overwriting the data, but YOU MUST keep the existing order of existing fields the same.

                      Example....

                      If you were adding height to a table with two existing fields, FIRST_NAME and LAST_NAME

                      PTR = table.open("customers",FILE_RW_EXCLUSIVE)
                      PTR.table_restructure(<<%str%
                      FIRST_NAME,Character,25,0
                      LAST_NAME,Character,25,0
                      HEIGHT, Numeric,5,2
                      %str%)
                      PTR.close()

                      I stumbled on this looking to see if you could enumerate field structure info...

                      Comment


                        #12
                        Re: Extreme problem adding fields to a table.

                        Originally posted by Stan Mathews View Post
                        You haven't told us much about the base table. There are limits on the number of fields and the total of the field width. Can you add one field with your code?

                        Contrary to the song, the road does not go ever on.

                        Stan. I have all the fields added in the development, created an installer, installed it and everything works.

                        It is when the updates are installed to a previous version that everything goes south. This has never happened before.

                        In the beginning of this thread I was also looking for a way to either write the tables field list to a file or even print it out so I could post it here but have yet to find anything to do that either.

                        And yes, I tried having it add just one field as I stated above and it trashed the table.

                        I can add them all manually, just not with code.

                        Looking at the field properties it is 154 fields counting the ones I added manually.
                        Last edited by preston2; 09-03-2015, 10:55 PM.

                        Comment


                          #13
                          Re: Extreme problem adding fields to a table.

                          try this. it may bge easier

                          a5_add_fields_to_table("thedbf", "newfield,C,0")

                          http://wiki.alphasoftware.com/A5_ADD...TABLE+Function
                          Dave Mason
                          [email protected]
                          Skype is dave.mason46

                          Comment


                            #14
                            Re: Extreme problem adding fields to a table.

                            From my code above,

                            Code:
                               a5_add_fields_to_table( datapath + "wo_header.dbf", new_flds )
                            The "new_flds" is a list and it has always worked before.

                            But I guess I could try a a5_add_fields_to_table( ) line for each field and see if that still trashes the table.

                            Too tired tonight, will try in the morn.

                            Comment


                              #15
                              Re: Extreme problem adding fields to a table.

                              I just tested it and it works fine. Test it on a junk table somewhere first with a bunch of fields. If memory serves right, the newest field become the last in the table.

                              I have used it in the past with a dummy adb file on install. It has just been a while since I needed it.
                              Dave Mason
                              [email protected]
                              Skype is dave.mason46

                              Comment

                              Working...
                              X