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

.NET and Alpha Five

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

  • .NET and Alpha Five

    So, starting with version 11 Alpha Five now offers support for the .NET v4 framework. Great.
    But who of you has until now ever used this feature and besides some fiddling around with it actually got some astonishing result doing so that could enlighten others?
    Yes, I have seen the video of the Swedish application for live stock.

    Looking into this matter right now, what strikes me is:

    1) The documentation on .NET support is extremely thin. It all starts here on the AlphaPedia and besides a few pages of text it quickly points to Microsoft as if all hail will come from that.

    2) There is no step-by-step instruction or example as Alpha has always used to do. There are examples, but they all throw the Alpha Five developer straight into the deep and are no "let's take you by the hand and let's do it together" type of examples where an Alpha Five developer would be able to start getting into use of this technology.

    3) You can't use C# or any other CLI language. Since Alpha's Xbasic is not a common intermediate language it can not be executed using an implementation of CLI like the CLR as part of the .NET framework. Point being that your knowledge of approaching the .NET framework using let's say C# is pretty useless. Well, not completely useless of course, but you can't approach .NET objects writing classes and utilizing methods etc in straight C# or C++ which is a pity. This all being not the case, you can't directly use xbasic, and you can't use any CLI in Alpha Five, you are stuck with using xbasic wrappers as I understand it. The use of those however is not explained to a satisfactory level as far as I am concerned (and I have confirmation already of some very knowledgeable developers that think likewise).

    4) You can't use Microsoft's visual studio to create code that you would copy to Alpha Five. See 3).

    So, what we are left with is a feature that is not quite open to everybody here on this forum since it is very hard to explore the route to go by yourself without Alpha Five grabbing you at the arm, and without plowing through millions of pages of Microsoft documentation that never ever anywhere state "How to use with Alpha Five" if you catch my drift. If you do some research on this very forum by entering .NET as a search word you see that there are only minor entries that actually get to the point. Some very well known and great developers on this forum even did not know the difference between ASP.NET and .NET and seem a bit helpless in the water. There are no serious attempts to be found (besides the one video I already mentioned which was if I may say only a connect to webservices) on this forum to utilize the .NET framework to tap into one of its feature-rich objects and get it to use in an Alpha application.

    Also, when you look at Wikipedia, most of its very limited entries are dated back to somewhere in may 2011 which shows that in the last 2 years nothing new has been added of any relevance to the AlphaPedia help on using .NET with Alpha Five.

    As I see it, this is really a pity. The connection to the .NET framework is way more important then it looks like it is given credit for, and the current effort to get the average Alpha Five developer on the road with this functionality is lacking spirit and content. I can't understand why. Why not take a simple and straight forward example in the line of "come on, we will help you, pay close attention we will start by step 1", a step-by-step tutorial showing you what you EXACTLY need to do, and WHY you need to do it in order to get good use of the .NET framework ? Why has this not been given more attention since 2011?

    As a result, it is still in the "feature storage room" with for instance "use of web components on the desktop" which is not used by many developers as well due to several issues that are not explained or things that are not possible: since when has Alpha changed its policy from: "we will make it easy for you" in to "please help yourself, here is a link to Microsoft" ? This does not help with the average Alpha Five user.

    So this post is for two reasons:

    1) To get this to attention of Alpha Five, with the request to add one of those fine "step-by-step" tutorials with some videos on how to achieve things, for instance on the matter how to make use of the Calendar object of the .NET framework in your Alpha Five application (or anything else for that matter).

    2) To get a discussion going on this on the forum, are there any developers that have something to share, have written good code, are willing to be a guide to others, maybe place some snippets here on how they have done things, that kind of stuff.

    The .NET framework is very rich, it really is a pity that (as it seems to me) this is left to hang somewhere in an exotic corner of the Alpha Five platform.

  • #2
    Re: .NET and Alpha Five

    The difficulty in discussing .Net in the abstract is that without a specific need it's just too large a topic for most Alpha people (myself included) to get their minds around. I don't know C++ programming, most of the code samples are at or beyond the limit of my programming knowledge and so on.

    Having said that, just like with ActiveX, if you DO have a specific need, there's a lot you can do. Speaking for myself, I have been working on and off on a time and attendance application in an environment powered by Schlage hand readers. Schlage provide a dot net interface to those readers and I am now able to use Alpha's dot Net extensions to do all that I need to. And although the link below ends in a somewhat undetermined fashion, I have been able to resolve all issues. The fact that Schlage provided outstanding documentation for their dll was a huge help.

    http://msgboard.alphasoftware.com/al...-DLL-Framework

    Here's another thread I found that shows another user doing something different.

    http://msgboard.alphasoftware.com/al...Text-to-Speech

    What would be of interest to me would be some sample code from Alpha as to how one might use this great new extensibility with something like the Codejock Calendar. As I read the Codejock website it looks to me like their Calendar comes in two flavors (1) ActiveX and (2) Dot Net. I'd love to know how to use the Dot Net version. How would you display it? Would I have to go back to a form to define a user object? What I absolutely loved about the .Net interface was that once the classes were properly defined, you could always see the methods and properties available (in the type-ahead drop down window) when typing the code. This is NEVER the case with ActiveX components in Alpha. This can make complex ActiveX components difficult to use (for example the Codejock ActiveX calendar, which I've done a lot of work with) even when good documentation is available. But I digress.
    Finian

    Comment


    • #3
      Re: .NET and Alpha Five

      We're using dot net to run hand scanners via serial port. I don't know anything about .NET but thanks to Kurt Raynor, he provided a working sample. I had to loan him one of our scanners though to get him to fix the bugs, which he did. I took his code and modified it and actually was testing and debugging today. We're running it in a background thread (Kurt's code was a simple xdialog). The background thread seems to make it pretty much bullet-proof and not susceptible to the scanner state (on/off, etc). But if Kurt hadn't provided the sample, we would have had a big problem. Keep in mind that in our case, the scanner is being used w/o a UI. Just a factory worker with a USB connection to the machine scanning barcodes all day.
      Peter
      AlphaBase Solutions, LLC

      Peter@AlphaBaseSolutions.com
      https://www.alphabasesolutions.com


      Comment


      • #4
        A few (too..?) early conclusions

        First of all, thanks for responding Peter and Finian! So, some have already experienced first hand that being able to use the .NET framework can be of huge benefit. In cases above this involved getting hand readers/scanners to work with an Alpha application. Needless to say, there are millions of possibilities. If only....

        Is it too early to draw any conclusions from these 2 posts? Of course. No doubt about it. Who can say something conclusive after just 2 posts?
        But let's draw some preliminary conclusions anyway and see how they should be changed as we go along with this thread. If we go along with this thread to start with.

        1)
        There is a population of Alpha Five users out there. That's for sure. There must be thousands of them.
        But we don't see all of them on this forum on a regular basis. Some do, we all know them. Their posts are mostly valuable for any of us in some way (and sometimes can be even a project-saver for others) and they can be found contributing to this forum in some section on a daily basis. Some of them are true (and acknowledged) experts. Some Alpha Five users frequent this board only to read-up on stuff and will not post themselves. Maybe because they think they have nothing worthy to contribute (which is by the way sad and likely not true). Some Alpha Five users will only visit this board when they have specific problems they are looking to resolve. Some might even never visit this forum because they are working in a team and take their orders in working with Alpha Five from a team manager. So, there is a heap of users out there doing all kinds of things with Alpha, but those who eventually will react to this post or any other post is only a small slice from the total. We must remember that.

        2)
        Alpha Five users are mostly non-coders. They have been attracted by Alpha's "No coding required" promotions which not only started up the Alpha Software business but is still expressed by Alpha today. Although we all know that to write a bit more complex application basically requires coding of some sort. However, this is not a group of die-hard C# coders. Quite on the contrary I would say. Again, that is if you look at the total group of users. There will be those among us who are schooled in C#, C++, .NET, ASP.NET, Javascript, NHibernate, Linq or any other stuff that is market standard with the professional software industry nowadays. These are exceptions though in the desktop-section. From the web-section since this is a more current venture we expect the part of schooled and trained coders to be quite larger. My guess is, that there is a distinct difference in qualifications between Alpha Five's desktop-developers and their web-developers. Not a popular thing to say, I know, but I consider it to be reality.

        3)
        If you are attracted to Alpha Five for it's non-coding capabilities, then you are not likely at all to go into the far corners of the product. I reckon that most of that type of developers will create forms, put objects on it by drag-and-drop, use some action scripting for functionality, write reports and even use some occasional xbasic, but not happily. Their toolkit will grow on them as they go forward with Alpha Five and gain experience.
        Personally, I consider this to be the largest part of Alpha Five users in the desktop section.
        Those users will not use any feature of Alpha Five that requires anything more then very simple, basic, straight forward, easy to follow xbasic. They will most certainly not dive into .NET as long as there is no ".NET action scripting" available. It does not matter whether what is offered by the .NET framework is "huge" or not: they don't see themselves fit to do the job, and are not even attracted to it mostly because they think it is above their skill level. They will wait until Alpha Five offers them a handle to work with these features. They won't try and invent the wheel themselves.

        4)
        So my gripe (if any) with this whole situation is, that something like .NET capability is promoted but not supported to the masses of Alpha Five supporters. Only supported (but then full heartily as it seems!) in individual cases where professionals try to "get something done" against the .NET framework but get stuck. In itself, the latter thing is a very good thing, but the lack of support for the primary customer base in the desktop section is not. Alpha should make this accessible to the masses. Of course creating some action scripting would be the max, but they could also start with some easy, step-by-step examples, well explained, and usable to other developers for copy-past-adjust and to get a grip on what's needed. What is not needed is links to Microsoft's Documentation Jungle. Practical examples are needed. Possibly with some videos from Selwyn explaining more into the depth. As is now, we can promote ".NET capability" so much as we want, but really this is for the time being only of practical use for experienced and well trained experts. Not the average "Alpha Five Joe". That could change with just some attention.

        5)
        Wouldn't it be great if we could use C# in a special editor to write our code to approach the .NET framework, or make it possible to implement code from Visual Studio straight into that editor so we can use what we already know and have. I understand this is far-future-wishful-thinking though.

        6)
        Something else to consider is, that this technology mainly comes from Alpha Five's need to use the .NET framework for the creation of their own product. It is more a spring-off to Alpha's customers. But given the credo "when you do something better do it right" if you promote it as "feature" then see to it that it is available for all customers and not just for a very small group of developers.

        So far my thoughts. Let's wait a bit more and see if any more reactions on this subject will appear.

        Comment


        • #5
          Re: .NET and Alpha Five

          Sounds like there is a lot of money to be made by someone willing to fill in the .Net documentation and resource gap.

          We use .Net from Alpha to write Excel workbooks from an SQL data source of telephone charges. The output is an Excel Workbook with multiple tabs as you see in the attached images. Output includes various fonts, totals, grand totals, etc. The routine kicks out 500 separate workbooks, one for each department manager. It then sends an email to each manager with a link to open the workbook, check off that they reviewed it, etc.

          Although I found the coding process a bit difficult, the documentation was pretty clear.

          Since writing the original code, I modified it to create the workbook on demand, when the department manager logs in, rather than pre-build all of them.
          Attached Files
          Steve Wood
          Join the ALPHA DEVELOPERS NETWORK
          There is no Cloud. It's just someone else's computer.
          Web - Mobile - Hosting - Products - Frameworks - Developer Resources
          AlphaToGo | IADN (100% Alpha Anywhere Websites)

          Comment


          • #6
            Re: A few (too..?) early conclusions

            Originally posted by mronck View Post
            First of all, thanks for responding Peter and Finian! So, some have already experienced first hand that being able to use the .NET framework can be of huge benefit. In cases above this involved getting hand readers/scanners to work with an Alpha application. Needless to say, there are millions of possibilities. If only....

            Is it too early to draw any conclusions from these 2 posts? Of course. No doubt about it. Who can say something conclusive after just 2 posts?
            But let's draw some preliminary conclusions anyway and see how they should be changed as we go along with this thread. If we go along with this thread to start with.

            1)
            There is a population of Alpha Five users out there. That's for sure. There must be thousands of them.
            But we don't see all of them on this forum on a regular basis. Some do, we all know them. Their posts are mostly valuable for any of us in some way (and sometimes can be even a project-saver for others) and they can be found contributing to this forum in some section on a daily basis. Some of them are true (and acknowledged) experts. Some Alpha Five users frequent this board only to read-up on stuff and will not post themselves. Maybe because they think they have nothing worthy to contribute (which is by the way sad and likely not true). Some Alpha Five users will only visit this board when they have specific problems they are looking to resolve. Some might even never visit this forum because they are working in a team and take their orders in working with Alpha Five from a team manager. So, there is a heap of users out there doing all kinds of things with Alpha, but those who eventually will react to this post or any other post is only a small slice from the total. We must remember that.

            2)
            Alpha Five users are mostly non-coders. They have been attracted by Alpha's "No coding required" promotions which not only started up the Alpha Software business but is still expressed by Alpha today. Although we all know that to write a bit more complex application basically requires coding of some sort. However, this is not a group of die-hard C# coders. Quite on the contrary I would say. Again, that is if you look at the total group of users. There will be those among us who are schooled in C#, C++, .NET, ASP.NET, Javascript, NHibernate, Linq or any other stuff that is market standard with the professional software industry nowadays. These are exceptions though in the desktop-section. From the web-section since this is a more current venture we expect the part of schooled and trained coders to be quite larger. My guess is, that there is a distinct difference in qualifications between Alpha Five's desktop-developers and their web-developers. Not a popular thing to say, I know, but I consider it to be reality.

            3)
            If you are attracted to Alpha Five for it's non-coding capabilities, then you are not likely at all to go into the far corners of the product. I reckon that most of that type of developers will create forms, put objects on it by drag-and-drop, use some action scripting for functionality, write reports and even use some occasional xbasic, but not happily. Their toolkit will grow on them as they go forward with Alpha Five and gain experience.
            Personally, I consider this to be the largest part of Alpha Five users in the desktop section.
            Those users will not use any feature of Alpha Five that requires anything more then very simple, basic, straight forward, easy to follow xbasic. They will most certainly not dive into .NET as long as there is no ".NET action scripting" available. It does not matter whether what is offered by the .NET framework is "huge" or not: they don't see themselves fit to do the job, and are not even attracted to it mostly because they think it is above their skill level. They will wait until Alpha Five offers them a handle to work with these features. They won't try and invent the wheel themselves.

            4)
            So my gripe (if any) with this whole situation is, that something like .NET capability is promoted but not supported to the masses of Alpha Five supporters. Only supported (but then full heartily as it seems!) in individual cases where professionals try to "get something done" against the .NET framework but get stuck. In itself, the latter thing is a very good thing, but the lack of support for the primary customer base in the desktop section is not. Alpha should make this accessible to the masses. Of course creating some action scripting would be the max, but they could also start with some easy, step-by-step examples, well explained, and usable to other developers for copy-past-adjust and to get a grip on what's needed. What is not needed is links to Microsoft's Documentation Jungle. Practical examples are needed. Possibly with some videos from Selwyn explaining more into the depth. As is now, we can promote ".NET capability" so much as we want, but really this is for the time being only of practical use for experienced and well trained experts. Not the average "Alpha Five Joe". That could change with just some attention.

            5)
            Wouldn't it be great if we could use C# in a special editor to write our code to approach the .NET framework, or make it possible to implement code from Visual Studio straight into that editor so we can use what we already know and have. I understand this is far-future-wishful-thinking though.

            6)
            Something else to consider is, that this technology mainly comes from Alpha Five's need to use the .NET framework for the creation of their own product. It is more a spring-off to Alpha's customers. But given the credo "when you do something better do it right" if you promote it as "feature" then see to it that it is available for all customers and not just for a very small group of developers.

            So far my thoughts. Let's wait a bit more and see if any more reactions on this subject will appear.
            .

            I see that there angrily asks for essential improvements to the desktop that is a good thing, because sitting still is going backwards and that can not be in our world of rapid change. Not only in the past few months but far before. Everywhere and outside the forum and comments can be found on the Desktop. There is still a formal WishList where everyone can express his wishes and Alpha Team has in the past promised there ability to respond to it. What I see that the WishList really has no value and that is woefully regrettable because the intention is certainly good, crisp and clear. However, if there is no reply, and nothing is done then disappears confidence in such a list quickly, restoring trust is not easy and takes time. There are so many comments on and placed so that they do not lose the overview discussed priorities Desktop developers Hobby or profession, and the ratio between these two numbers I have no idea. I take at least that a hobby developer no expensive subscription decreases but chooses only the desktop and / or runtime Be it for both. Order line to get in and demand seems to me the best solution that the forum a formal request aimed at Alpha Software is an email to send out to all desktop developers with a request to answer by filling in a questionnaire, which Richard has been done for web applications in the past.

            Finally the desktop wish list is so big the question is in outline form of browser functions to C # Net Client-Server native SQL Support with or without X-dialog and much more UI update. I personally think that most Web and Mobile users have no interest in the Desktop features is their interest is more focused on an IDE Web / Mobile so why should an Alpha Web Developer includes a subscription close Desktop / runtime when only the Web / Mobile uses the desktop and then pull it out for me that saves me a decent amount annually, not least in a difficult economic time. The forum comments are clearly not the answer but I have enough confidence that it arrives and Alpha formally issuing a statement on this subject in the coming months of this year.
            I'm not a desktop developer but 100% web and mobile focused I see here the long-term future, however, from the LOB desktop is definitely not dead. m2p

            Comment


            • #7
              Re: .NET and Alpha Five

              I came to Alpha 5 from the VB.Net, ASP.Net world. I had coded in the Microsoft world for years and was comfortable there. I am not a fan of VBA though there are many talented VBA programmers that do impressive work on LOB apps in Office products. I came to A5 to see if I could find a RAD tool that reduce the lines of code I needed to create. To a degree A5 has done that, but like any tool it has its own quirks and issues. At this point I am not sure I gained much in time savings. Keep in mind my app is also my A5 learning project, so. maybe those I will create in the future will be faster.

              I prefer to build my apps in an 3-tier configuration. I like to set it up using business (UI)->data(classes)-> db back-end. When I first started my project I did not see a way to do that using A5 so I forged ahead with a 2 tier app. Perhaps I could do it now, but I am not sure. For example, I have not idea how A5 would handle moving recordsets back and forth between classes and layers. I never done it so all may be fine.

              .Net should in theory solve a lot of problems, it should solve things like not having a calendar component you like, you should for example be able to add an MS Outlook object and code it to your hearts content. Where it breaks down again is how would I distribute an app but in such manner and using .Net objects? Will the current installer provided with A5 be able to create an install package for an app that uses .Net. Something tells me it may not.

              .Net brings a lot to the table, but how much can we really use it? I hope in the future to explore both it and classes when I have more time. I look forward to hearing from others who are looking at this possibility and report on their experiences.
              Regards,

              John W.
              www.CustomReportWriters.net

              Comment


              • #8
                Re: .NET and Alpha Five

                Originally posted by jkwrpc View Post
                .Net brings a lot to the table, but how much can we really use it?
                I feel John, that when you offer these features to your customers there is some kind of responsibility attached (at least that should be the case) to at least provide full documentation on the what and how. You can't just promote your product by saying "we now have .NET support" and leave it there with a couple of pages of text without a context of instruction and point towards the Microsoft Library. Since Alpha also has responsibilities to its "own and old" customer base, I think this needs to go further then that and there should be a "lets-take-you-by-the-hand-and-lets-do-it-together" tutorial. Obviously more then one.

                This is done by the dozens already on other features, just for the .NET framework approach there is none. And that is strange. And by looking at the date of the last additions to the documentation that lives on Alphapedia one can say it looks more like "the hobby of one" then the "mission of all" inside Alpha. That would be sad for such a huge resource, not to see it for what it can be worth to your customers.
                Now, personally I have been schooled and trained in .NET C# and some other things and I trust (with some help) I will be able to find my way. However, looking into this it just surprised me how small this is kept by Alpha where it could be a huge thing. One quickly assumes then that there must be good reason for keeping it small and not pursuing this any further (for the customer!) since 2011. And when IIS-Support is not yet available (although it had been announced for release with v11 once) for Alpha as well (for which good .NET connections are required) then one tends to add 1 and 1 up and that assumption would insinuate that there is something still troubling in the complete chain of events.

                Comment


                • #9
                  Re: .NET and Alpha Five

                  Originally posted by Steve Wood View Post
                  Sounds like there is a lot of money to be made by someone willing to fill in the .Net documentation and resource gap.

                  We use .Net from Alpha to write Excel workbooks from an SQL data source of telephone charges. The output is an Excel Workbook with multiple tabs as you see in the attached images. Output includes various fonts, totals, grand totals, etc. The routine kicks out 500 separate workbooks, one for each department manager. It then sends an email to each manager with a link to open the workbook, check off that they reviewed it, etc.

                  Although I found the coding process a bit difficult, the documentation was pretty clear.

                  Since writing the original code, I modified it to create the workbook on demand, when the department manager logs in, rather than pre-build all of them.
                  I doubt somewhere that there is "a lot of money" to be made from Alpha Five developers
                  Could you elaborate a bit more on what you found difficult in the coding process (Alpha > .NET ? Or do you mean the logic of your app?) and how the documentation served you with that?
                  What drove your choice to using .NET in this specific case?

                  Comment


                  • #10
                    Re: .NET and Alpha Five

                    I doubt somewhere that there is "a lot of money" to be made from Alpha Five developers.
                    Why not, Alpha does; and so do many of the Developers here.

                    Could you elaborate a bit more on what you found difficult in the coding process (Alpha > .NET ? Or do you mean the logic of your app?) and how the documentation served you with that?
                    What drove your choice to using .NET in this specific case?
                    What drove me is I could not create the slightly-complex Excel workbooks using CSV output or anything Alpha provided. Plus it had to be scripted, part of a larger routine, run unattended. What made it difficult was me not being used to the .Net syntax. Looking back, the code below looks simple, but I struggled to make it work:

                    Code:
                    FUNCTION CreateSheet as V (Doc as Office::ExcelDocument,curCostcenter as c)
                    
                    ' Create a new spreadsheet. All formatting is done in FormatSheet()
                    dim cn as sql::connection
                    dim args as sql::arguments
                    dim Sheet as Office::Spreadsheet  ' Pointer to the spreadsheet
                    
                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                    dim HeaderFormat 	as Office::Format
                    dim ColHeaderFormat 	as Office::Format
                    dim DetailFormat 	as Office::Format
                    dim NumaricFormat 	as Office::Format
                    dim Font 		as Office::Font
                    dim LabelFont 		as Office::Font
                    
                    'set base font
                    Font		= Doc.AddFont()
                    Font.Color	= Office::Color::Black
                    Font.Name 	= "Calibri"
                    Font.Size	= 11
                    Font.Bold 	= .f.
                    
                    'set TitleFont
                    TitleFont		= Doc.AddFont()
                    TitleFont.Color	= Office::Color::Green
                    TitleFont.Name 	= "Calibri"
                    TitleFont.Size	= 12
                    TitleFont.Bold 	= .t.
                    
                    'set ColHeadFont
                    ColHeadFont		= Doc.AddFont()
                    ColHeadFont.Color	= Office::Color::Black
                    ColHeadFont.Name 	= "Calibri"
                    ColHeadFont.Size	= 11
                    ColHeadFont.Bold 	= .t.
                    
                    'set TitleFormat
                    TitleFormat 		= Doc.AddFormat()
                    TitleFormat.Font 	= TitleFont
                    
                    'set ColHeadFormat
                    ColHeadFormat 		= Doc.AddFormat()
                    ColHeadFormat.Font	= ColHeadFont
                    
                    'set NumericFormat format
                    NumericFormat 		= Doc.AddFormat()
                    NumericFormat.Font 	= Font
                    NumericFormat.HorizontalAlignment = Office::HorizontalAlignment::Right
                    NumericFormat.NumericFormat = Office::NumericFormat::CurrencyDec2NegBracketedInRed
                    
                    'set 2 decimal number format
                    CostFormat 		= Doc.AddFormat()
                    CostFormat.Font = Font
                    CostFormat.HorizontalAlignment = Office::HorizontalAlignment::Right
                    CostFormat.NumericFormat = Office::NumericFormat::NumberDecimal2 
                    
                    'right format
                    RightFormat			= Doc.AddFormat()
                    RightFormat.Font 	= ColHeadFont
                    RightFormat.HorizontalAlignment = Office::HorizontalAlignment::Right
                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
                    
                    	if cn.open("::name::conn")=.f.
                    		errorout(cn.callresult.text)
                    		end
                    	end if
                    
                    '	curCostcenter = "1034600000" ' test value
                    
                    	'Use this statement below to get only records that HAVE charges
                    '	vSql = "SELECT billingid as Item ,sum(callcost) as Charge FROM cb_calldetail_imp WHERE costcenter = '{curCostcenter}' GROUP BY billingid ORDER BY billingid"
                    	'use this statement below to get all Extensions, even if they have no charges
                    	vSql = <<%txt%
                    	SELECT
                    	extension.extension AS Item,
                    	Sum(ISNULL(cb_calldetail_imp.callcost,0)) AS Charge,
                    	equip_type.charge AS EquipCharge
                    	FROM
                    	extension
                    	FULL OUTER JOIN cb_calldetail_imp
                    	ON extension.extension = cb_calldetail_imp.billingid
                    	FULL OUTER JOIN equip_type 
                    	ON extension.equip_type = equip_type.equip_type_id 
                    	WHERE extension.costcenter = '{curCostcenter}'
                    	GROUP BY
                    	extension.extension,equip_type.charge
                    	ORDER BY
                    	extension.extension ASC
                    	%txt%
                    	
                    	vSql = evaluate_string(vSql)
                    
                    	Sheet = Doc.AddSheet("Summary")
                    
                    	dim arr[0] as p
                    	cn.ToPropertyArray(vQ,args,arr)
                    	dim crgsum as n
                    	detailcount = arr.size()	
                    	if arr.size() > 0
                    		for x = 1 to arr.size()
                    			vname = sql_lookup(cn,"extension","extension = "+arr[x].Item,"alltrim(firstname) + ' ' + alltrim(lastname)")
                    			Sheet.Write(x + 3,1,"Total Charges for extension " + arr[x].Item + " ("+vname+")")
                    			extchg = arr[x].Charge + arr[x].EquipCharge
                    			Sheet.Write(x + 3,2,extchg)
                    			crgsum = crgsum + extchg
                    		next 
                    		Sheet.Write(x + 4,1,"Total",RightFormat)
                    		Sheet.Write(x + 4,2,crgsum,RightFormat)
                    	end if
                    
                    	dim curMonth as c = sql_lookup(cn,"defaults","tid=1","cur_period_mm")
                    	dim curYear as c  = sql_lookup(cn,"defaults","tid=1","cur_period_yy")
                    
                    	Sheet.Write(1,1,GetMonth(val(curMonth)) + " " + curYear + " Telephone Charges for " + curCostcenter)
                    	Sheet.Write(3,1,"Item")
                    	Sheet.Write(3,2,"Charges")
                    
                    	Sheet.SetFormat(1,1,TitleFormat)
                    	Sheet.SetFormat(3,1,3,10,ColHeadFormat)
                    	Sheet.SetFormat(4,2,500,2,NumericFormat)
                    	Sheet.SetColumn(1,1,60)
                    	Sheet.SetColumn(2,2,13)
                    	Sheet.SetMerge(1,1,1,5)
                    
                    	'Add sheets for each extension
                    
                    	if arr.size() > 0
                    		for x = 1 to arr.size()
                    			vname = sql_lookup(cn,"extension","extension = "+arr[x].Item,"alltrim(firstname) + ' ' + alltrim(lastname)")
                    			vSql = <<%txt%
                    			SELECT
                    			count(*) AS CNT,
                    			sum(callminutes) as sumcallminutes,
                    			sum(callcost) as sumcallcost
                    			FROM cb_calldetail_imp
                    			WHERE costcenter = '{curCostcenter}' and billingid = {arr[x].Item}
                    			%txt%
                    			vSql = evaluate_string(vSql)
                    			if cn.execute(vSelect)=.f.
                    				errorout(cn.callresult.text)
                    			end if
                    			
                    			dim resultsetcnt as n	= cn.resultset.data("cnt")
                    			dim sumcallminutes as n	= cn.resultset.data("sumcallminutes")
                    			dim sumcallcost as n 	= cn.resultset.data("sumcallcost")
                    			dim stationeqid as n 	= sql_lookup(cn,"extension","extension="+arr[x].Item,"equip_type")
                    			dim stationcharge as n	= if(convert_type(stationeqid,"C")<>"",sql_lookup(cn,"equip_type","equip_type_id="+stationeqid,"charge"),0)
                    
                    			vSql = <<%txt%
                    			SELECT
                    			convert(varchar(10),calldatetime,101) as CallDate,
                    			substring(convert(varchar(20),calldatetime,9),13,5) + ' ' + substring(convert(varchar(30),
                    			calldatetime,9),25,2) as CallTime,
                    			dialednumber,
                    			location,
                    			callminutes,
                    			callcost
                    			FROM cb_calldetail_imp
                    			WHERE costcenter = '{curCostcenter}' and billingid = {arr[x].Item}
                    			%txt%
                    			vSql = evaluate_string(vSql)
                    			if cn.execute(vSql)=.f.
                    				errorout(cn.callresult.text)
                    			end if
                    			Sheet = Doc.AddSheetFromResultSet(cn.ResultSet,"x"+ alltrim(str(arr[x].Item)),.f.) 
                    			Sheet.InsertRow(1,3)
                    			Sheet.Write(1,1,"Calls for " + vname + " (x"+alltrim(str(arr[x].Item)) + ")")	
                    			Sheet.Write(3,1,"Call Date")
                    			Sheet.Write(3,2,"Call Time")
                    			Sheet.Write(3,3,"Dialed Number")
                    			Sheet.Write(3,4,"Location")
                    			Sheet.Write(3,5,"Minutes")
                    			Sheet.Write(3,6,"Call Cost")
                    			Sheet.SetFormat(1,1,TitleFormat)
                    			Sheet.SetMerge(1,1,1,5)
                    			Sheet.SetColumn(1,1,12)
                    			Sheet.SetColumn(2,2,12)
                    			Sheet.SetColumn(3,3,22)
                    			Sheet.SetColumn(4,4,35)
                    			Sheet.SetColumn(5,6,10)
                    			Sheet.SetFormat(3,1,3,10,ColHeadFormat)
                    			
                    			'totals
                    			Sheet.Write(resultsetcnt + 5,4,"Call Totals:")
                    			Sheet.Write(resultsetcnt + 5,5,sumcallminutes,CostFormat)
                    			Sheet.Write(resultsetcnt + 5,6,sumcallcost,CostFormat)
                    			Sheet.Write(resultsetcnt + 6,4,"Fixed Charges:")
                    			Sheet.Write(resultsetcnt + 6,6,stationcharge,CostFormat)
                    			Sheet.Write(resultsetcnt + 7,4,"Total:")
                    			Sheet.Write(resultsetcnt + 7,6,sumcallcost + stationcharge,CostFormat)
                    			
                    	next 
                    	
                    	end if
                    
                    	curBillingid = 3000
                    
                    end function
                    Steve Wood
                    Join the ALPHA DEVELOPERS NETWORK
                    There is no Cloud. It's just someone else's computer.
                    Web - Mobile - Hosting - Products - Frameworks - Developer Resources
                    AlphaToGo | IADN (100% Alpha Anywhere Websites)

                    Comment

                    Working...
                    X