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

How to run xbasic code upon printing report?

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

  • How to run xbasic code upon printing report?

    Hi
    In a report (and also needed in a label report) i need to set a Printed field for all the printed records in the report's underlying mysql table to .T. .
    How can i implement that?

    Many thanks
    Jaime

  • #2
    Re: How to run xbasic code upon printing report?

    I found the onRecord event in the detail section, and the only sample utilization in the documentation is when using dbf tables as backend. How can i create the update sql in onRecord event when uding a SQL backend?

    Comment


    • #3
      How can i use onRecord report event with mySql?

      I need to use the onRecord detail section event in order to do a simple field update ( set printed = .T. for each printed report ). The sample in the documentation uses dbf tables, anyone knows how to use it with a mySql backend ?

      Comment


      • #4
        Re: How can i use onRecord report event with mySql?

        Unless I am missing something...

        SQL::UpdateStatement::Execute()
        There can be only one.

        Comment


        • #5
          Re: How can i use onRecord report event with mySql?

          Thanks for jumping in Stan
          I dont understand.
          I have a report where the underlying table is Orders.
          For each printed record i'd like update to run UPDATE Orders set Printed=1 where ????? ( how can i tell it for currently printing record )?

          Thanks

          Comment


          • #6
            Re: How to run xbasic code upon printing report?

            Here is the only mention of onReport in the documentation ( 2 results in google as well - talk about an obscure feature )
            Code:
            You can use the OnRecord event to update records after they have printed. For example, in an invoicing application, you might have a Status field in the invoice_header table. After you print out invoices, you might want to update this field to say Printed. Here is how you could do this:
            
            t = table.current()
            t.change_begin()
            t.status = "Printed"
            t.change_end(.T.)

            Comment


            • #7
              Re: How to run xbasic code upon printing report?

              The example for the suggested function is.

              Code:
              dim conn as SQL::Connection
              dim connString as C
              dim upd as SQL::UpdateStatement
              dim sql_update as C
              connString = "{A5API='Access', FileName='c:\program files\a5v7\mdbfiles\alphasports.mdb'}"
              sql_update = "update customer set bill_city = 'Phoenix', bill_postal_code = '08000', bill_state_region = 'AZ' where customer_id = 1"
              if .not. conn.open(connString) then
                  end
              end if
              if .not. upd.parse(sql_update) then
                  ui_msg_box("Error", upd.callresult.text)
                  end
              end if
              if .not. upd.execute(conn) then
                  end
              end if
              So in addition to providing the proper connection string I suppose you need to modify the

              sql_update = "update customer set bill_city = 'Phoenix', bill_postal_code = '08000', bill_state_region = 'AZ' where customer_id = 1"

              line "on the fly".

              something like

              sql_update = "update your_table_name set printed_flag_field = TRUE where record_identifier_field = " +record_identifier_value_of_current_record
              There can be only one.

              Comment


              • #8
                Re: How to run xbasic code upon printing report?

                Assuming i have OrderID as primary key for the table, and in fact it's a printed field as well, my issue is how to refer to i in the onRecord?

                sql_update = "update orders set Printed=TRUE where OrderID = " + ?????????? <--- how do i retrieve the value of current record's OrderID ?

                Comment


                • #9
                  Re: How to run xbasic code upon printing report?

                  sql_update = "update orders set Printed=TRUE where OrderID = " + orders->order_id

                  Probably should use

                  sql_update = "update orders set Printed=TRUE where OrderID = " + s_quote(orders->order_id)

                  to insure data type handling.

                  Tested this with a report designed on an active-link table based on the AlphaSports.mdb. Not guaranteeing it will work with MySQL.
                  Last edited by Stan Mathews; 10-25-2017, 02:37 PM.
                  There can be only one.

                  Comment


                  • #10
                    Re: How to run xbasic code upon printing report?

                    Just curious... why do you need to update on a Report - Per Record Printed basis? E.g. You print 50 records... you're running 50 updates.

                    When you run the report... you know the report criteria... is that right? Run the report... and then run the Update based on the same criteria. If it's one record... or 500... in the report... you'll always only run 1 update.

                    Comment


                    • #11
                      Re: How to run xbasic code upon printing report?

                      For a report based directly on an sql backend it appears the syntax would be

                      sql_update = "update orders set Printed=TRUE where OrderID = " + s_quote(sqldatasource->order_id)

                      Note: s_quote() may not be appropriate in an sql statement as it inserts double quotes around character values. If the order_id is character the proper usage would be


                      sql_update = "update orders set Printed=TRUE where OrderID = '" + sqldatasource->order_id+"'"
                      Last edited by Stan Mathews; 10-25-2017, 03:27 PM.
                      There can be only one.

                      Comment


                      • #12
                        Re: How to run xbasic code upon printing report?

                        i am curious:
                        jaime usually works on web side and asked this question on the browser/mobile section.
                        first, the ui_msg_box will not work if and truly this is web side,
                        secondly, in web usually the report is created and shown as pdf and then printed, so unlike desktop, the printer is not in direct communication with the report printing mechanism, unless of course there are stuff i do not know. so this onRecord calling an xbasic function may not be suitable in this scenario, if you ask me.

                        so the questions will be
                        how are you printing your records?
                        is this web side or desktop?

                        (i know you are using mariaDB.)
                        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

                        Comment


                        • #13
                          Re: How to run xbasic code upon printing report?

                          Originally posted by Davidk View Post
                          Just curious... why do you need to update on a Report - Per Record Printed basis? E.g. You print 50 records... you're running 50 updates.

                          When you run the report... you know the report criteria... is that right? Run the report... and then run the Update based on the same criteria. If it's one record... or 500... in the report... you'll always only run 1 update.
                          Thanks for jumping in
                          Indeed i was looking at first for a report event that runs at the end of printing where i could set the Printed field value for all printed records, but found no help in docs how to do this (onPrintExit is the only suitable event i found). The report is run directly from the tabbed_ui and that's why i was looking to run the update from the report.

                          Comment


                          • #14
                            Re: How to run xbasic code upon printing report?

                            Originally posted by GGandhi View Post
                            i am curious:
                            jaime usually works on web side and asked this question on the browser/mobile section.
                            first, the ui_msg_box will not work if and truly this is web side,
                            secondly, in web usually the report is created and shown as pdf and then printed, so unlike desktop, the printer is not in direct communication with the report printing mechanism, unless of course there are stuff i do not know. so this onRecord calling an xbasic function may not be suitable in this scenario, if you ask me.

                            so the questions will be
                            how are you printing your records?
                            is this web side or desktop?

                            (i know you are using mariaDB.)
                            Hi gandhi
                            Indeed, as all my apps, this is web side. I am running a report from the tabbed_UI and just need to update a field ( Printed ) to True for all printed records that's all...

                            Comment


                            • #15
                              Re: How to run xbasic code upon printing report?

                              In the TabbedUI - Report Button - is that what you're using to run the report? If so, it has a property... "After print Javascript". Run an Ajax Callback in this event... and update.

                              Comment

                              Working...
                              X