Report generators?
-
So I'm editing some Crystal Reports again (excuse my inappropriate language). I have this one project that still uses them. I've searched for alternatives plenty of times, found stuff like DevExpress reporting, and heard good stuff about that one too. Not that I'm going to rewrite all reports for this particular project, but maybe for a future project. However, for other projects I don't even bother anymore and simply use MigraDoc and create PDF files in code manually. Writing stuff like:
frame = section.AddTextFrame();
frame.Width = "12cm";
frame.Left = "10cm";
frame.RelativeHorizontal = RelativeHorizontal.Margin;
frame.Top = "6cm";
frame.RelativeVertical = RelativeVertical.Page;It's not ideal, but it still beats CR (but pretty much anything would). To me, the whole reason to use a report generator like CR is that your clients can create their own reports. Kind of like a no-code solution for your reports. In practice, however, clients don't understand these tools anyway and still ask me to change reports for them. Meanwhile, a bit of code reuse ensures your reports have the exact same headers, footers, etc. while not being all that much harder for me (or even lots easier in case of CR). Thoughts? Generator vs. in-code? Your generator of choice?
Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript
I haven't had any reporting needs for years now, but back when, I grew so tired of Crystal Reports that I converted everything I could and used this one instead: Perpetuum Soft Report Sharp-Shooter[^] As far as I recall, it was much easier to work with than Crystal...
Anything that is unrelated to elephants is irrelephant
Anonymous
-----
The problem with quotes on the internet is that you can never tell if they're genuine
Winston Churchill, 1944
-----
Never argue with a fool. Onlookers may not be able to tell the difference.
Mark Twain -
So I'm editing some Crystal Reports again (excuse my inappropriate language). I have this one project that still uses them. I've searched for alternatives plenty of times, found stuff like DevExpress reporting, and heard good stuff about that one too. Not that I'm going to rewrite all reports for this particular project, but maybe for a future project. However, for other projects I don't even bother anymore and simply use MigraDoc and create PDF files in code manually. Writing stuff like:
frame = section.AddTextFrame();
frame.Width = "12cm";
frame.Left = "10cm";
frame.RelativeHorizontal = RelativeHorizontal.Margin;
frame.Top = "6cm";
frame.RelativeVertical = RelativeVertical.Page;It's not ideal, but it still beats CR (but pretty much anything would). To me, the whole reason to use a report generator like CR is that your clients can create their own reports. Kind of like a no-code solution for your reports. In practice, however, clients don't understand these tools anyway and still ask me to change reports for them. Meanwhile, a bit of code reuse ensures your reports have the exact same headers, footers, etc. while not being all that much harder for me (or even lots easier in case of CR). Thoughts? Generator vs. in-code? Your generator of choice?
Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript
For most of my 23 years programming, I've used Seagate/Crystal Reports/Crystal Decisions/Business Objects for reports in both desktop and web development. Lately, we have switched over to DevExpress which I really like. No ORMs for either one, just feed them a datatable, parameters, and formula fields. I'll also use straight up HTML for reports when the paging is somewhat predictable. :)
"Go forth into the source" - Neal Morse "Hope is contagious"
-
So I'm editing some Crystal Reports again (excuse my inappropriate language). I have this one project that still uses them. I've searched for alternatives plenty of times, found stuff like DevExpress reporting, and heard good stuff about that one too. Not that I'm going to rewrite all reports for this particular project, but maybe for a future project. However, for other projects I don't even bother anymore and simply use MigraDoc and create PDF files in code manually. Writing stuff like:
frame = section.AddTextFrame();
frame.Width = "12cm";
frame.Left = "10cm";
frame.RelativeHorizontal = RelativeHorizontal.Margin;
frame.Top = "6cm";
frame.RelativeVertical = RelativeVertical.Page;It's not ideal, but it still beats CR (but pretty much anything would). To me, the whole reason to use a report generator like CR is that your clients can create their own reports. Kind of like a no-code solution for your reports. In practice, however, clients don't understand these tools anyway and still ask me to change reports for them. Meanwhile, a bit of code reuse ensures your reports have the exact same headers, footers, etc. while not being all that much harder for me (or even lots easier in case of CR). Thoughts? Generator vs. in-code? Your generator of choice?
Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript
The only reason I would use a reporting tool is to simplify my code. Giving "users" access to the database is a support nightmare..... Oh, wait. I'm a consultant and paid for support - never mind ;)
Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.
-
They are generated sequential because random data is horrible for efficient indexes in large databases. Earlier versions of guids where constructed with the mac address + timestamp + a random component. Due to security concerns of leaking mac addresses (real or not) and the increase of software generated mac addresses this was changed. But some databases do - for compatibility reasons - keep the ordering based on the bytes that used to contain the timestamp.
I think my logic and database logic are slightly different. Good thing we don't meet very often :D If you need "sequential GUIDs" why not just use a counter? Peano's Axioms basically say: if you've got enough bits, I've got enough numbers. If you want to make them unique over a number of different computers just add a computer GUID. In essence that's what version 1 and version 2 GUIDs do, except that they use a supposedly unique MAC address. Now I'll go my merry way trying to keep away from databases as much as I can :)
Mircea
-
I think my logic and database logic are slightly different. Good thing we don't meet very often :D If you need "sequential GUIDs" why not just use a counter? Peano's Axioms basically say: if you've got enough bits, I've got enough numbers. If you want to make them unique over a number of different computers just add a computer GUID. In essence that's what version 1 and version 2 GUIDs do, except that they use a supposedly unique MAC address. Now I'll go my merry way trying to keep away from databases as much as I can :)
Mircea
I inherited the project designed this way. One of the reasons given was a request to be able to clone the database and update it in different locations (no, the whole world does not yet have internet), but obviously that was never realized - and the problems that would need to be solved to support data merge are so huge that dealing with integer ids at the same time is not exactly making it a lot worse. X| The projects where I was responsible for the initial data design use integer ids - though if there is a specific use case that is served by using a guid as primary key in a low volume table I will of course do it. Typically anything above the data layer I simply lie and claim the ID is a string (or a struct of some kind) no matter what it is in the database. I do not want a UI to break because of something as trivial as changing primary key format in a table. Sure, gives a bit more conversion, but nothing that compares to the time spend waiting for data from the database.
-
Why not try the original[^]?
Software rusts. Simon Stephenson, ca 1994. So does this signature. me, 2012
Where would Sander find an IBM 1401 today? Would it even fit into his house office? Could he afford the electricity bill for one of those dinosaurs? (To say nothing of getting tech support via séance...)
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows. -- 6079 Smith W.
-
Where would Sander find an IBM 1401 today? Would it even fit into his house office? Could he afford the electricity bill for one of those dinosaurs? (To say nothing of getting tech support via séance...)
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows. -- 6079 Smith W.
Daniel Pfeffer wrote:
Where would Sander find an IBM 1401 today?
:-) On the more serious side: RPG II became a standard report generator for more than one computer generation - more like a human generation :-) I saw RPG II in use in the 1980s, and according to Wikipedia, it is still in use, including for MS-Windows. We have the rule "If it works, don't fix it!" and apparently, RPG II still works (in some places).
-
They are generated sequential because random data is horrible for efficient indexes in large databases. Earlier versions of guids where constructed with the mac address + timestamp + a random component. Due to security concerns of leaking mac addresses (real or not) and the increase of software generated mac addresses this was changed. But some databases do - for compatibility reasons - keep the ordering based on the bytes that used to contain the timestamp.
lmoelleb wrote:
random data is horrible for efficient indexes in large databases
Not necessarily so, it would depend on how the database is used. Random keys are good for writes. If you have a sequential key all inserts happens in the same leaf node at the end of the index which leads to waits because of pagelocks. Same goes for updates since most updates happens on fresh data. If you use a random key, all writes happen at random places which means pagelocks are more seldom a problem. Also, the index tend to stay balanced. The drawback with random keys is that they cause page splits. On a simple index this isn't a problem since it would happen every hundredth insert or so, but If the table is clustered the amount of page splits could probably cause serious performance issues. So, don't cluster a table on a random key since the drawbacks are serious and the advantage (index scan) is gone.
Wrong is evil and must be defeated. - Jeff Ello
-
So I'm editing some Crystal Reports again (excuse my inappropriate language). I have this one project that still uses them. I've searched for alternatives plenty of times, found stuff like DevExpress reporting, and heard good stuff about that one too. Not that I'm going to rewrite all reports for this particular project, but maybe for a future project. However, for other projects I don't even bother anymore and simply use MigraDoc and create PDF files in code manually. Writing stuff like:
frame = section.AddTextFrame();
frame.Width = "12cm";
frame.Left = "10cm";
frame.RelativeHorizontal = RelativeHorizontal.Margin;
frame.Top = "6cm";
frame.RelativeVertical = RelativeVertical.Page;It's not ideal, but it still beats CR (but pretty much anything would). To me, the whole reason to use a report generator like CR is that your clients can create their own reports. Kind of like a no-code solution for your reports. In practice, however, clients don't understand these tools anyway and still ask me to change reports for them. Meanwhile, a bit of code reuse ensures your reports have the exact same headers, footers, etc. while not being all that much harder for me (or even lots easier in case of CR). Thoughts? Generator vs. in-code? Your generator of choice?
Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript
I roll my own. When I was first starting to learn C# (wow, was that really twenty years ago?) one project used ActiveReports and it was awful -- it may have improved since. A few years later I had to write a subsystem which could execute (previously defined) Crystal Reports (and provide values to any required parameters) -- which I hope I never have to do again. One of my main peeves with "reports" is that all too often someone walks into the office with a scruffy sheet of paper and says something like, "Joe used to run this report for me at the start of every month, but he's gone now, can you run it for me?" To which the only answer is "no". Even provided a soft-copy, no, I can't, I have no idea how it was generated. To wit -- the output does not contain the original input. So, what I chose to do for an employer about fifteen years ago was to define my own simple report engine. The report definition is in XML -- it basically only supports executing one SQL SELECT statement against a database, which was "good enough". The output is the same XML with the result data included (plus parameter values and such). So then, given a soft-copy of a report, I can feed it in as the input and re-run it -- providing new parameter values as required. The process then allows the recipient to view the report with either Excel or a Web Browser by using XSLT to transform the XML to either CSV or XHTML. Slick as snot. What's the next worst peeve about "reports" (in PDF or whatever)? Having a middle-manager bring one (a soft-copy I hope) to you and say, "we need you to load this data into our analysis database so we can analyze it". FFS! It came from a database; just get the raw data! Nope, they're not allowed access to the database. :sigh: Well, given one of my reports, they have the data in XML or CSV, so it's not that difficult to ETL into whatever analysis database they choose.
-
The only reason I would use a reporting tool is to simplify my code. Giving "users" access to the database is a support nightmare..... Oh, wait. I'm a consultant and paid for support - never mind ;)
Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.
"CONSULTING If you're not a part of the solution, there's good money to be made in prolonging the problem." -- Despair dot com
-
Where would Sander find an IBM 1401 today? Would it even fit into his house office? Could he afford the electricity bill for one of those dinosaurs? (To say nothing of getting tech support via séance...)
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows. -- 6079 Smith W.
-
Why not try the original[^]?
Software rusts. Simon Stephenson, ca 1994. So does this signature. me, 2012
Still better than Crystal Reports!
Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript
-
Hand-coding PDF margins etc?? :omg: For most reporting, I tend to use HTML. If it's simple enough to use data-bound repeaters / grids, embed them in the page then render them on the server into an HTML string. For more complex reports combine that with external templates. Then shoot the resulting HTML into an HTML -> PDF converter (I use Pechkin, even though it has a bunch of dependencies and is 32-bit; but it generates a good result). That way all I need to do is adjust the HTML template or on-page data controls. Once the PDF is done, hide the data controls and show the page with a link to the PDF, or just redirect to the PDF - depending on requirements.
Yeah, hard-coding, but that's not very different from the HTML to PDF generators I've used. My problem with HTML to PDF is that HTML is not created for a fixed size (A4, in my case). It literally doesn't know pages, so a footer or a header is very difficult. All in all, I didn't like it. Hard coding means you have to tweak once, but at least it won't change as both your hard coding and A4 size remain the same. Unfortunately, the same can't be said about HTML formatting.
Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript
-
So I'm editing some Crystal Reports again (excuse my inappropriate language). I have this one project that still uses them. I've searched for alternatives plenty of times, found stuff like DevExpress reporting, and heard good stuff about that one too. Not that I'm going to rewrite all reports for this particular project, but maybe for a future project. However, for other projects I don't even bother anymore and simply use MigraDoc and create PDF files in code manually. Writing stuff like:
frame = section.AddTextFrame();
frame.Width = "12cm";
frame.Left = "10cm";
frame.RelativeHorizontal = RelativeHorizontal.Margin;
frame.Top = "6cm";
frame.RelativeVertical = RelativeVertical.Page;It's not ideal, but it still beats CR (but pretty much anything would). To me, the whole reason to use a report generator like CR is that your clients can create their own reports. Kind of like a no-code solution for your reports. In practice, however, clients don't understand these tools anyway and still ask me to change reports for them. Meanwhile, a bit of code reuse ensures your reports have the exact same headers, footers, etc. while not being all that much harder for me (or even lots easier in case of CR). Thoughts? Generator vs. in-code? Your generator of choice?
Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript
I have looked at report generators since the 80's and concluded long ago they aint worth the hassle, because they rarely give you exactly what you want, and from a customer point of view they are difficult to use with no-one wanting to take responsibility for learning them, and even if they do when that person leaves it's back to square one. When designing a solution i try make my reports give all the options i can think, and usually also have a 'dump to csv' checkbox, so as well as producing a pdf, it will create a file the customer can manipulate themselves in excel. If there's really something in there not initially discussed or wanted later as needs change, i quote and charge, unless it's a quick mod to filter data in a certain way as a one off and takes me less than an hour, which i do as part of the support contract. GL Bob
-
So I'm editing some Crystal Reports again (excuse my inappropriate language). I have this one project that still uses them. I've searched for alternatives plenty of times, found stuff like DevExpress reporting, and heard good stuff about that one too. Not that I'm going to rewrite all reports for this particular project, but maybe for a future project. However, for other projects I don't even bother anymore and simply use MigraDoc and create PDF files in code manually. Writing stuff like:
frame = section.AddTextFrame();
frame.Width = "12cm";
frame.Left = "10cm";
frame.RelativeHorizontal = RelativeHorizontal.Margin;
frame.Top = "6cm";
frame.RelativeVertical = RelativeVertical.Page;It's not ideal, but it still beats CR (but pretty much anything would). To me, the whole reason to use a report generator like CR is that your clients can create their own reports. Kind of like a no-code solution for your reports. In practice, however, clients don't understand these tools anyway and still ask me to change reports for them. Meanwhile, a bit of code reuse ensures your reports have the exact same headers, footers, etc. while not being all that much harder for me (or even lots easier in case of CR). Thoughts? Generator vs. in-code? Your generator of choice?
Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript
I've used Crystal Reports Writer (CRW) and ReportBuilder (http://www.digital-metaphors.com/products). ReportBuilder was almost as powerful as CRW, but I found it harder to use. Though I admit this could have just been because I am very experienced with CRW. We have WinForms DevExpress, but have never used it for reporting. I find DevExpress to have so many options, that interact with each other in so many mysterious ways, that it is hard to configure everything correctly. I like CRW. I find it simple to use, and I can quickly spit out almost any report that has been asked for. Caveats: 1. This is Windows desktop development only. 2. All reports are effectively client-side only. The data is retrieved from the server, but the report is local. 3. We have a standard (to us) library that displays CRW reports. We just pass in the path to the RPT file and the parameters. The library displays the report with all the UI options. 4. We use the CRW IDE to create the reports; we don't do that via code.
Bond Keep all things as simple as possible, but no simpler. -said someone, somewhere
-
So I'm editing some Crystal Reports again (excuse my inappropriate language). I have this one project that still uses them. I've searched for alternatives plenty of times, found stuff like DevExpress reporting, and heard good stuff about that one too. Not that I'm going to rewrite all reports for this particular project, but maybe for a future project. However, for other projects I don't even bother anymore and simply use MigraDoc and create PDF files in code manually. Writing stuff like:
frame = section.AddTextFrame();
frame.Width = "12cm";
frame.Left = "10cm";
frame.RelativeHorizontal = RelativeHorizontal.Margin;
frame.Top = "6cm";
frame.RelativeVertical = RelativeVertical.Page;It's not ideal, but it still beats CR (but pretty much anything would). To me, the whole reason to use a report generator like CR is that your clients can create their own reports. Kind of like a no-code solution for your reports. In practice, however, clients don't understand these tools anyway and still ask me to change reports for them. Meanwhile, a bit of code reuse ensures your reports have the exact same headers, footers, etc. while not being all that much harder for me (or even lots easier in case of CR). Thoughts? Generator vs. in-code? Your generator of choice?
Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript
We use DevExpress XtraReports in our solution. One of our customers was ready to invest 2 hours in a training (we did the training) to be able to design his own reports. After that they were self-sufficient to create their own reports.
-
So I'm editing some Crystal Reports again (excuse my inappropriate language). I have this one project that still uses them. I've searched for alternatives plenty of times, found stuff like DevExpress reporting, and heard good stuff about that one too. Not that I'm going to rewrite all reports for this particular project, but maybe for a future project. However, for other projects I don't even bother anymore and simply use MigraDoc and create PDF files in code manually. Writing stuff like:
frame = section.AddTextFrame();
frame.Width = "12cm";
frame.Left = "10cm";
frame.RelativeHorizontal = RelativeHorizontal.Margin;
frame.Top = "6cm";
frame.RelativeVertical = RelativeVertical.Page;It's not ideal, but it still beats CR (but pretty much anything would). To me, the whole reason to use a report generator like CR is that your clients can create their own reports. Kind of like a no-code solution for your reports. In practice, however, clients don't understand these tools anyway and still ask me to change reports for them. Meanwhile, a bit of code reuse ensures your reports have the exact same headers, footers, etc. while not being all that much harder for me (or even lots easier in case of CR). Thoughts? Generator vs. in-code? Your generator of choice?
Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript
I didn't realize that Crystal Reports was still around. I have used multiple versions of this software during my career and never liked any of them. You may want to try the Syncfusion reporting product. As a developer you can obtain a community license...
Steve Naidamast Sr. Software Engineer Black Falcon Software, Inc. blackfalconsoftware@outlook.com
-
So I'm editing some Crystal Reports again (excuse my inappropriate language). I have this one project that still uses them. I've searched for alternatives plenty of times, found stuff like DevExpress reporting, and heard good stuff about that one too. Not that I'm going to rewrite all reports for this particular project, but maybe for a future project. However, for other projects I don't even bother anymore and simply use MigraDoc and create PDF files in code manually. Writing stuff like:
frame = section.AddTextFrame();
frame.Width = "12cm";
frame.Left = "10cm";
frame.RelativeHorizontal = RelativeHorizontal.Margin;
frame.Top = "6cm";
frame.RelativeVertical = RelativeVertical.Page;It's not ideal, but it still beats CR (but pretty much anything would). To me, the whole reason to use a report generator like CR is that your clients can create their own reports. Kind of like a no-code solution for your reports. In practice, however, clients don't understand these tools anyway and still ask me to change reports for them. Meanwhile, a bit of code reuse ensures your reports have the exact same headers, footers, etc. while not being all that much harder for me (or even lots easier in case of CR). Thoughts? Generator vs. in-code? Your generator of choice?
Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript
we used stimulsoft reports (with wpf back in the day) since it needed just limited dot net dll to render and did not need the cr runtime etc and all the mess. and came with a designer you could give the client if he needed to roll his reports.. save the report add to app and run wella and it had multiple export options .since then they have multiple engines and solutions
Caveat Emptor. "Progress doesn't come from early risers – progress is made by lazy men looking for easier ways to do things." Lazarus Long
-
So I'm editing some Crystal Reports again (excuse my inappropriate language). I have this one project that still uses them. I've searched for alternatives plenty of times, found stuff like DevExpress reporting, and heard good stuff about that one too. Not that I'm going to rewrite all reports for this particular project, but maybe for a future project. However, for other projects I don't even bother anymore and simply use MigraDoc and create PDF files in code manually. Writing stuff like:
frame = section.AddTextFrame();
frame.Width = "12cm";
frame.Left = "10cm";
frame.RelativeHorizontal = RelativeHorizontal.Margin;
frame.Top = "6cm";
frame.RelativeVertical = RelativeVertical.Page;It's not ideal, but it still beats CR (but pretty much anything would). To me, the whole reason to use a report generator like CR is that your clients can create their own reports. Kind of like a no-code solution for your reports. In practice, however, clients don't understand these tools anyway and still ask me to change reports for them. Meanwhile, a bit of code reuse ensures your reports have the exact same headers, footers, etc. while not being all that much harder for me (or even lots easier in case of CR). Thoughts? Generator vs. in-code? Your generator of choice?
Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript
I believe our company has a software solution that may pique your interest. I suggest you take a quick look at our product, INSYTE for SQL. Link: www.responsetech.com/insyteforsql. I am the INSYTE Product Manager, which includes the duties of both developer & tech support. If you have questions please contact me directly by email: kevin(at)responsetech.com and simply mention you learned about the software from CodeProject.
-
So I'm editing some Crystal Reports again (excuse my inappropriate language). I have this one project that still uses them. I've searched for alternatives plenty of times, found stuff like DevExpress reporting, and heard good stuff about that one too. Not that I'm going to rewrite all reports for this particular project, but maybe for a future project. However, for other projects I don't even bother anymore and simply use MigraDoc and create PDF files in code manually. Writing stuff like:
frame = section.AddTextFrame();
frame.Width = "12cm";
frame.Left = "10cm";
frame.RelativeHorizontal = RelativeHorizontal.Margin;
frame.Top = "6cm";
frame.RelativeVertical = RelativeVertical.Page;It's not ideal, but it still beats CR (but pretty much anything would). To me, the whole reason to use a report generator like CR is that your clients can create their own reports. Kind of like a no-code solution for your reports. In practice, however, clients don't understand these tools anyway and still ask me to change reports for them. Meanwhile, a bit of code reuse ensures your reports have the exact same headers, footers, etc. while not being all that much harder for me (or even lots easier in case of CR). Thoughts? Generator vs. in-code? Your generator of choice?
Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript
Don't laugh. I have converted several apps that used to use CR to put the output to Excel. More recently I have just used Excel to query the database to replace a CR. Users really like when I do that and going back a year later, I find many of the reports I did have been edited. Everyone works with Excel. Most of the time is it is just secondary calculations. Many get very skilled. Seeing how I did the queries several have even changed the queries. In all cases the reports are now better suit the needs. Using Excel has now achieved the goal(dream) of letting users edit reports.
So many years of programming I have forgotten more languages than I know.