views:

268

answers:

6
+4  A: 

Given your Access experience and the requirements you've listed, I would suggest .NET for a platform, VB for a language, WPF as an UI framework, and raw ADO.NET (+ possibly datasets) for database backend. You might also want to try LINQ to SQL and see if it makes sense to you, but you will probably find plain ADO.NET more familiar.

EDIT

I've missed the part of the question about database. For the task you describe, consider the free SQL Server Compact Edition. It's in-process, just like Access, and so there is no hassle deploying the service etc, that you get with SQL Express. Other free server-less DB options are SQLite and Firebird/Embedded.

Regarding deployment - for a simple application (that needs just copying .exe and .dll files over and creating the shortcuts), .NET Setup project will probably be sufficient, and is very easy to create.

Pavel Minaev
Thanks. Of all the things I've looked at, VB wasn't one. Do you know off the top of your head if there are there free tools and libraries with suitable licenses to be found? Are the tools easy for a beginner to use?
ChrisC
For free tools, go for Visual Basic Express and SQL Server Express. If you need a more powerful DB, I hear that Firebird has pretty decent ADO.NET provider for it, while being feature-complete; PostgreSQL is another one I'd look at (generally prefer it to Firebird, but I don't know anything about the quality of its ADO.NET provider). For libraries, I think that you'll find .NET Framework itself quite sufficient for the tasks that you've described in your question. You can definitely use Express and .NET to create closed-source commercial applications.
Pavel Minaev
I'd probably choose NHibernate over LINQ to SQL so that Data Access would work with the DB of the customer's choice.
Russ Cam
@Russ, I don't think I'd want to let users choose their own db type, would I? Wouldn't that be asking for trouble?
ChrisC
He's developing a desktop application. I don't see the point in having support for multiple database backends there. In fact, from the description, the audience for the product is likely such that they shouldn't even know there's a database there.
Pavel Minaev
As a side note, regarding web application angle - if your write your application as "WPF browser application" (XBAP), it can work both standalone and hosted in a browser page. Last I checked, WPF browser applications supported all browsers I've tried (IE, Firefox, Opera). But it would still be Windows-only, as it's still the exact same .NET application, just running in a browser sandbox.
Pavel Minaev
Interesting. What would it mean, in practical terms, to "write it as 'WPF browser application'"?
ChrisC
In practice, so long as you limit yourself to a certain subset of WPF and .NET in general, your application will "automatically" be browser-hostable. Wikipedia article has pretty decent coverage of the specifics: http://en.wikipedia.org/wiki/XBAP. Perhaps the most noticeable difference is that you'll have to avoid windows (except for stock common dialogs such as "Open File" and message boxes), and use the `Page` class instead. If run outside of browser, your application will have a top-level window in which your pages are displayed, with Back/Forward buttons on top a la browser.
Pavel Minaev
Here is a demo of a WPF browser application: http://download3.xceedsoft.com/demo/gridwpf/Xceed.Wpf.DataGrid.Samples.LiveExplorer.xbap.
Pavel Minaev
That is really sharp. That's what WPF can look like? Is it very difficult for a new programmer to get that nice of a look? If it's running in a browser, is it susceptible to problems if browser settings are changed?
ChrisC
Yes, it's a pure WPF application. It uses a custom control, Xceed DataGrid (that's what the demo is of), but all the neat visual effects therein - smooth transitions, translucency, gradients etc - come from WPF itself, and are fairly easy to use. No, it's not susceptible to browser settings changes, since it's not an HTML application - it's just a plugin hosted inside browser, and all drawing etc is done in exact same way as when you run it in desktop mode (same as Java applets or Flash).
Pavel Minaev
I still am not wanting to run it web-based (personally don't like any web-based financial apps) or even browser-based (I prefer the stand-alone look) but I am very impressed with the how WPF looks. Do you know where I can find other examples of more typical (non-custom) WPF programs?
ChrisC
The default WPF look is the same as OS look, actually. It just gives you the ability to change it very easily, with mechanisms not dissimilar to CSS styling in HTML. Regarding better demo apps - I'll ask some more knowledgeable people around here (I'm a Microsoft employee), and get back to you. We might have something specifically designed to showcase WPF features, with source to also see how easy it is to do all those things.
Pavel Minaev
Oh, one not-quite-demo :) but still worth a look if you want to see how real-world WPF apps look, is Microsoft Expression suite (http://www.microsoft.com/expression/). All applications in it are written in WPF. They aren't free, but you can download a trial version just to see how it looks and feels. I'd suggest downloading Expression Blend, because it is in fact a WPF/Silverlight IDE for designers, centered around XAML editing, so not only you can see how it looks, you can quickly experiment in it to see what you can make with WPF...
Pavel Minaev
I downloaded it and Expression Blend looks like a combo of building a form in Access and the tools that are in Paint.net. And looking at it makes me think that one needs to be an artist to build a really good gui from the ground up. Are there places I choose from prebuilt styles (suitable for commerical use)?
ChrisC
Blend is specifically oriented towards graphics designers (it's intended to counter Flash design tools). Visual Studio itself also has a WPF designer that is more programmer-centric. Which one - or which combination of both - is best used for a particular WPF project depends on the approach used in development. Premade WPF visual themes do exist - e.g. see http://www.codeplex.com/wpfthemes and http://www.xamltemplates.net/
Pavel Minaev
Is there a free IDE for WPF that allows commercial development?
ChrisC
Visual C# Express and Visual Basic Express editions (which are both pretty much Visual Studio with only single language support and no ability to install plugins) - http://www.microsoft.com/express/
Pavel Minaev
+1  A: 

I would suggest QT 4.5 from TrollTech/Noika

A) QT Windows can be skinned

B) I am not so clear about how QT can be distributed (yet), but one thing is that it is cross-platform

C) I find coding GUI in QT straightforward and is not as contrived as MFC; the tutorials there are good enough to get started with.

D) QT has SQLlite (allowing you to have a database without the need of a server) and has packages for interfacing with SQL databases, but I am not sure about Access

E) After merging with Nikola, QT 4.5 is now LGPL, so as long as you link to the library, you shouldn't have issues with distributing your software. Changes made to the QT 4.5 files have to be released, as per LGPL.

Another point - QT 4.5 has a robust view/scene architecture for graphical programs and the signal/slot mechanism makes coding GUI and linking their changes to their data class much easier than MFC or even with delegates in C# WinForms.

Extrakun
A: 

Dear I suggest that you write your application as a web application using macromedia flash for the front end and java for the back end. Hear me out.

A). Flash has a very rich library of slick looking ui widgets. Designing the look and feel of a flash ui as easy as click and drag. Very illustrator like.

B). Out of the box flash is cross platform, works all on versions of windows. You also get osX, linux and soon mobile device users. No need to worry about security permissions, corrupt installs, or weird dlls. Plus, if you need to release a patch, you update the flash app on your web server and all the users get the new version next time they use it. You don't need to worry about packaging or shipping.

C). The future software is likely to be more and more web centric. While web applications may not replace all applications, certainly they will replace most. Growing these skills now is important.

D). Yeah, sql is an improvement over access. There is a lot of sql know-how out there, SQL is a good choice.

e5
Flash development tools are not free, are they?
Pavel Minaev
There is the flex SDK. It's a bit bare bones, but it'll get you there (though I'd go the .net route for this particular case)
brendan
Thanks for the suggestion, and I see there are many benefits. I know a lot of people are big on web-based apps, including financial apps like Mint, etc. Personally, though, I wouldn't use one, so I don't think I want to make this one that way.
ChrisC
@Brendan FlexBuilder is an eclipse plugin. Also he is going to school, so I'm sure he can get one of those student edition flash IDE's for around 10 dollars.
e5
@ChrisC Fair enough, although you can use adobe air to develop desktop applications as well, Adobe air is basically flash with additional security permissions.
e5
@e5, that's interesting, especially if it's simpler to program and good looking. My first question/concern would be, how stable would the program be if it ran on Air? 2) Would there be problems similar to how browser apps have problems when some browser settings change? 3)Is Air a platform like Java is a platform? 4) What do you mean when you say it would use Java for the back-end? 5) Can you point me to any nice looking Air apps? Thanks.
ChrisC
@ChrisC Adobe Air is to java as java applets are to flash. Its pretty stable, all Air code runs the same on all systems that have Air installed(no wierd browser settings type stuff). Here is a list of air apps you can check out http://airapps.pbworks.com/ . Other than the slick ui tools, Java is probably a better match for what you want(faster, more support/tools/knowledge, etc).
e5
@e5, thanks for the info.
ChrisC
+1  A: 

I see you saying two contradictory things:

nothing "Windows" looking.

Windows-only is fine.

You should strive to make your application look and feel like any Windows application, especially if OS-independence is not a concern. One of the fundamentals of human-computer interaction is that consistency reduces the amount of time it takes for new users to learn the application you have written.

If it looks like every other application, has the same icons in roughly the same place, with the same boundaries and colours as other applications, you're taking advantage of the fact that users already know all of these things. If you specifically skin your application and use non-standard icons, colours or even metaphors, users are going to have to learn the new theme as well as all of the functionality the application offers.

It would be better if you wrote your application to be skinnable, and have it default to the regular Windows look and feel, so that users can learn its functionality without learning a new look and feel. Then, once they understand the app they can switch to the skinned mode to learn that independently of the functionality.

Welbog
+2  A: 

Given your expertise and background, VB .NET using Windows Forms for the interface would would be easiest for you to pick up and start working with. SQL Server Express or Compact edition will meet your DB needs, is similiar enough to Access that it won't feel 100% foriegn, and can easily ported to full SQL Server if you ever need something more.

I will also mention C# as a possible language. As a novice programmer with no experience outside of VBA it will be harder for you to pick up, but there is a LOT more community support, technical books, and free source code available in C#.

I really like WPF for developing user interfaces, but the learning curve is very steep. It is not for novices at this time.

Win Forms has terrific, easy to use, tools for building the most common types of interfaces, and will be similiar enough to the form designer in Access that you will be able to get going quickly.

Spend extra time in your design phase to make the business logic as seperated from the presentation logic, that way you may be able to replace Win Forms with something snazzier later.

Here is a link to the official site for learning about Windows Forms and WPF. There are lots of videos and exercises and other materials for new developers. Spend a little time everyday studying some of the material there and you'll pick up a lot. Microsoft has similiar sites for other technologies as well, such as SQL Server, ASP, and so forth.

Make sure you have a decent source control solution. It will save you on more than one occasion. If you can't afford your own, or don't want to go to the hassle of setting up and maintaining one, there are places online like CodePlex that will provide source control for free if you make your project open source.

Good luck with your project.

RB Davidson
Thanks. Would you say the support network and resources for VB are nearing inadequate for me? Other than the lack of help available, what are other disadvantages to VB? You said, "Spend extra time in your design phase to make the business logic as separated from the presentation logic". I understand being able to replace the GUI later, but could you tell me more about how to use the design to keep the two parts separated? Is a "source control solution" a place to keep versions of code? Thanks again.
ChrisC
VB.Net is on par with C# as far as capabilities. The problem is the culture of programmers that has evolved around VB. "Professional" programmers tend toward C#, and support follows them. VB has good support, C# has great.Separation of a progam into distinct layers is a BIG topic I can't cover in a comment or even a long answer. Ask specific questions here or contact me through my website and I'll give you some advice.Source control=version control. Examples are Visual SourceSafe (don't reccomend) Team Foundation Server (expensive and hard to setup) and Subversion (no experience).
RB Davidson
I hear what you're saying and therefore I feel little sheepish when I say that it does seem (from what I've been reading) like maybe VB might be better for me on this project. While I do want the programming path of least resistance, to a point, I do however fully realize the value of coding discipline with its forward-looking, and practical, reward of easier-to-maintain-and-modify products. What type of thinking/advice should I be wary of in VB forums?
ChrisC
What should you be wary of? There isn't a checklist of do's and don'ts. You need to find a process that works for you. I spend a lot of time working through a problem looking for the answer that works best for my situation. I experiment and rewrite a lot. When I encounter a *specific* problem where I don't know the answer I turn to forums. If I can't identify a specific problem, I do basic research (read books and blogs, watch videos, etc...) on a variety of subjects until I know enough to ask specific questions. This works for me. You need to find a similiar process that works for you.
RB Davidson
The main reason why I suggested WPF over WinForms in my answer is requirement A in the question: _I'll definitely want an attractive looking GUI. And nothing "Windows" looking._ Otherwise I agree that WinForms would be more familiar to an Access developer. I wouldn't say WPF is hard, however - it's more unfamiliar than anything, but not really that complicated.
Pavel Minaev
I agree that if a cool interface is a top priority then WPF is *much* better WinForms. That said, I think WPF is significantly more complicated than WinForms. I consider myself moderately talented as a programmer, but I have regular running battle with WPF and have lept through mental hoops learning the "right" way to do things in it. Since ChrisC clasified himself as a novice I think he would do well to reduce the number of technologies he has to learn at one time. Hence my advice for using WinForms, though that does go against one of his stated goals.
RB Davidson
What do you guys think about the idea that maybe, since I am new to programming, I might have a somewhat easier time learning WPF since I don't bring very many preformed habits? (I'm trying to find reason to hope that WPF will work for me because I really do want a great UI)
ChrisC
Obviously Pavel and I differ on how hard WPF is. Experiment with it and WinForms for yourself. Creating the same screens in both, then customize each to look the way you like. See which has the features you want, need, and can live without. Do something hard in both. When working in WPF, I suggest you look at the MVVM pattern. WPFs advance databinding capabilities makes MVVM a natural choice. Do web searches on MVVM for examples. Also look up Josh Smith at http://joshsmithonwpf.wordpress.com/ and http://www.codeproject.com. He writes many excellent articles on using MVVM with WPF.
RB Davidson
Two questions on this. 1) If I keep the business model separated from the ui, how much effort does it take to change ui's? 2) When test driving WinForms and WPF, what would be an example of "something hard" to do, so I can do it and check it out?
ChrisC
Changing UI's for a small # of simple screens isn't hard, for a large number of complex screens is rarely practical. The real point of keeping the layers seperate is to simplify unit testing and improve maintenance. As an sample of "something hard" try something like a master with multiple details form that uses a variety of controls. List boxes, datagrids, combo-boxes, etc... and have data changes in one affect the data displayed in other control, which controls are shown or enabled, etc. Add CRUD operations for maste and all detail items. Pull that off in either and you can do anything.
RB Davidson
That sounds quite similar to designing forms in Access and making some controls react to events in other controls. Is form design with WPF very different than in Access? Also, I've never heard of CRUD operations, what are those? Thank you again.
ChrisC
I looked up CRUD and I think I understand that. Sorry to ask a question on something that was easily understandable by a generic definition.
ChrisC
Winforms is similiar Access forms. Concepts in one port to the other, details vary. Winforms and Access forms are collections of classes that can display themselves. WPF is different. WPF is a dynamic programming language in its own right. Big difference there. If you try to approach WPF like its Winforms with XAML, the result is an explosion of complexity and maintenance nightmares. The better way is to rely on databinding, templating, commands, and styles to do the work for you. Master those items and WPF becomes easier to work with and your proram much more maintainable.
RB Davidson
Thanks a lot RB. From what I'm gathering then, Win Forms looks about like Access forms (or not too much better). Is that right? If it is, that's too bad. I know that's perfectly fine for a business setting, for myself at home, mmm, I want better. After going through all the trouble to convert this program out of Access and into an independent program, I want it to look good. haha
ChrisC
Yes, the look and feel of WinFroms is similiar to Access. WinForms is better, more configurable, but similiar enough to be familiar. Since you said you were a novice I felt it would be easier for you to relate to. Many professional apps are built using WinForms. WPF will let you make a better looking app, and will let you do things impossible in WinForms. But it will take a *lot* of work on your part to make the leap in how to think about the programming the user interface. WPF is *very* different from WinForms and you can get into real trouble if you don't realize that early.
RB Davidson
Yeah, I'm thinking it's best for me to ditch the WPF idea for now and go Winforms instead. Are there any free IDE's for C# and Winforms? Or am I asking for the wrong thing? Thanks again.
ChrisC
RB Davidson
Chris, regarding developer tools, you might also consider enrolling into Microsoft BizSpark programme. From your description of the project, you would most likely qualify. It gives you access to the best tools Microsoft has to offer (Visual Studio Team Suite, TFS, Expression) for the entire team without any upfront costs. You would only have to pay $100 exit fee when leaving the program (either when time - 3 years - runs out; or if you no longer qualify as a startup - e.g. you get more than $1,000,000 in annual revenue). More here: http://www.microsoftstartupzone.com/BizSpark/Pages/FAQ.aspx
Pavel Minaev
That looks great but I'm not a business (yet). Thanks though.
ChrisC
+1  A: 

Python

  • Since it's quite unlikely you will ever encounter data volumes where it makes a difference (and if so, I/O, not code is probably the bottleneck.) you should get a language that is as pleasant to develop in as possible.
  • Python has nice, standardized db libs, start with sqlite3, since the db just lives in a file. If you need to, you can swap it for an oracle db later.
  • It also has a number of GUI options, so having the discipline to keep the GUI separate is easier. (you should anyway, but...)
  • Very good multiplatform support, even some of the GUI alternatives manage this. (Some better than others, though)

Python is also friendly, in that doing the wrong thing feels wrong, and doing the right thing feels right. I can't even begin to explain the wonders of that feature.

Anders Eurenius
Thanks, Anders. I've read good things about Python, but how much would using it increase the complexity/difficulty of a user installing the program on their machine? Or are there possibly other increases in difficulty/problems for users?
ChrisC
There's a way to bundle up python apps for windows: http://docs.python.org/using/windows.html#py2exe
Anders Eurenius