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

.NextResult()

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

    .NextResult()

    Jerry,

    Can you show how to use .NextResult() ? I need to iterate through result sets to get to the last one, but don't know how many there will be. This seems like the answer, but I can't get the syntax right.

    Pat
    Pat Bremkamp
    MindKicks Consulting

    #2
    Re: .NextResult()

    Can you show use your code?
    Last edited by coleresources; 07-08-2014, 01:31 PM.

    Comment


      #3
      Re: .NextResult()

      To put this in context, this is what I'm after:
      Capture.PNG
      Column at left is what the analyst has entered, column at right is what will print on the report. In this project, there are 301 lines of various types. What I want to do is display a message box that shows how many lines were calculated.

      An action button calls the following Alpha code:
      vCall = "CALL calc_lines_display_values(:argJobno, @rslt @kount)"
      exe_OK = cnx.execute(vCall,args)
      crs = cnx.ResultSet

      if crs.NextRow() = .f. 'there were no results
      vMsgTitle = "ERROR"
      vMsgText = "No results in processing display values"
      goto PLErrorOut
      end if

      while crs.NextResult() 'check for more result sets
      if crs.NextResult() = .t.
      crs=cnx.ResultSet
      end if
      end while

      vPLResult = crs.data(1)
      vPLineCount = round(crs.data(2),0)

      The calc_lines_display_values routine loops through all the lines and calls other routines that return the display values for various type of lines

      This routine processes a total of 191 lines, and the first result set from a sub-routine is 'OK', 3.9, .15, '#22 | 3.9mm | .15 in'

      But, the vPLineCount ends up with a value of 4 instead of the 191 I want.
      Pat Bremkamp
      MindKicks Consulting

      Comment


        #4
        Re: .NextResult()

        Hey Pat,

        You could try using .NextRow() with a WHILE LOOP

        sqlstr = "SELECT * FROM EMPLOYEE"
        cn.execute(sqlstr)
        rs = cn.ResultSet

        dim recCnt as n = 0
        while rs.nextrow()
        recCnt = recCnt + 1
        end while

        if recCnt = 0 then
        ? "NO RECORDS FOUND"
        else
        ? recCnt + " records FOUND"
        end if
        KayBee

        Comment


          #5
          Re: .NextResult()

          Thanks, KayBee, but that's my point. The problem is not rows in a result set, it is multiple result sets. I need to iterate through the result sets to get to the last one, then I can read the row value in that set.
          Pat Bremkamp
          MindKicks Consulting

          Comment


            #6
            Re: .NextResult()

            You can always do nested loops.
            KayBee

            Comment


              #7
              Re: .NextResult()

              Originally posted by Pat Bremkamp View Post
              To put this in context, this is what I'm after:
              [ATTACH=CONFIG]38467[/ATTACH]
              Column at left is what the analyst has entered, column at right is what will print on the report. In this project, there are 301 lines of various types. What I want to do is display a message box that shows how many lines were calculated.

              An action button calls the following Alpha code:
              vCall = "CALL calc_lines_display_values(:argJobno, @rslt @kount)"
              exe_OK = cnx.execute(vCall,args)
              crs = cnx.ResultSet

              if crs.NextRow() = .f. 'there were no results
              vMsgTitle = "ERROR"
              vMsgText = "No results in processing display values"
              goto PLErrorOut
              end if

              while crs.NextResult() 'check for more result sets
              if crs.NextResult() = .t.
              crs=cnx.ResultSet
              end if
              end while

              vPLResult = crs.data(1)
              vPLineCount = round(crs.data(2),0)

              The calc_lines_display_values routine loops through all the lines and calls other routines that return the display values for various type of lines

              This routine processes a total of 191 lines, and the first result set from a sub-routine is 'OK', 3.9, .15, '#22 | 3.9mm | .15 in'

              But, the vPLineCount ends up with a value of 4 instead of the 191 I want.

              use a flag to indicate if there are more results and use that in the while loop
              dim flagresult as l
              flagresult = crs.NextResult()
              while flagresult
              do what you want to do
              flagresult = crs.NextResult()
              end while

              hth

              Pieter

              Comment


                #8
                Re: .NextResult()

                Originally posted by Pat Bremkamp View Post
                Thanks, KayBee, but that's my point. The problem is not rows in a result set, it is multiple result sets. I need to iterate through the result sets to get to the last one, then I can read the row value in that set.
                The only example I have seen was from the v12/v10 alpha release notes in a discussion about AlphaDAO - SQL Server - Stored Procedures - Output Arguments
                The following is an extract of example from the release notes
                Now, From the interactive window:



                dim cn as sql::Connection
                cn.open("::Name::sqlserver")
                delete args
                dim args as sql::Arguments
                dim Message as c = "test message"

                'need to pad out the argument so it matches the definition in the stored procedure
                message = padr(Message,50," ")
                args.set("InParam" , "1234567890")
                args.set("OutMessage",Message,sql::ArgumentUsage::InputOutputArgument)
                ?cn.Execute("{CALL TestSP(:InParam, :OutMessage)}",args)
                = .T.




                Now try to read the output parameter value

                ?args[2].data
                = "test message"


                This is not what we expect!. The output parameter cannot yet be read because we have not yet looped through all of the result sets returned by the stored procedure.



                So, execute:

                ?cn.ResultSet.NextResult()

                = .t.

                and again:

                ?cn.ResultSet.NextResult()

                = .t.

                and again (the .f. return value tells you that there are no more resultsets):

                ?cn.ResultSet.NextResult()

                = .f.



                Now, that there are no more resultsets, you can read the output arguments:

                ?args[2].data

                = "initialized"

                https://appsbydesign.co.uk/

                Comment


                  #9
                  Re: .NextResult()

                  I know this has been while but did you ever figure this out? I'm having the same issue.

                  Comment


                    #10
                    Re: .NextResult()

                    No, I ended up writing the results to a temporary table and taking the last entry. I talked to Jerry and he said he never uses it. So, it probably doesn't work.
                    Pat Bremkamp
                    MindKicks Consulting

                    Comment

                    Working...
                    X