What is Referential Integrity?

One of the fundamental differences between an Excel spreadsheet and a Microsoft Access or SQL Server database is the database’s ability to group data by subject into tables and create links between that information.  This type of organization enables the user to store large amounts of data and retrieve specific information quickly by writing queries that will search on the various fields. Referential Integrity is actually a simple but essential concept to understanding how databases like Access or SQL Server work.  Once you understand it, you will be able to use these tools to better organize and report on your data.

To demonstrate this concept, I’m going to use a few tables in a Microsoft Access database.  Access is a great environment to start learning about databases as it provides a user-friendly interface and is widely available through Office365.

Watch the companion video for this article on YouTube or continue article below …

Continue reading

On Success …

This is my latest Ice Breaker speech that I delivered to the Early Bird Ocala Toastmasters group on November 3, 2018.  Toastmasters is a great way to develop your public speaking and leadership skills and there’s probably at least one group in your local area.  Check out ToastMasters.org for more information on the club and where you can find it in your area.

What is success?

You can tell a lot about a person by how they answer that and whether they are actually trying to achieve their definition of success. Not everyone defines it personally for themselves.

Continue reading

Custom User Controls and Events in C#

One of the interesting features of C# is the ability to add custom user controls to your forms. If you have some specific functionality centered around a group of form controls that you use repeatedly, you can save it as a custom control in a class library and then add it to other applications. This is a great example of code reuse and saves a lot of time.

I’m starting to get the hang of creating demo videos with Camtasia and other tools and my latest videos show how to create user controls and implement them within Visual Studio.

Part 1:

Very often, you’ll want your custom controls to communicate with the host application, passing data back and forth and one way to do this is to have your control raise custom events at specific times.  The host application listens for these events and responds as it needs to.  This is a very powerful ability that enables your classes to interact in more dynamic ways.  Once you understand how to raise and catch custom events, you’re no longer dependent on the C# event model and your applications can signal and respond to any condition you want them to.

The second video builds on the first part to show how to add custom events to your classes.

I encourage you to follow along with the videos and try creating the controls yourself. Also, experiment with your own ideas so that you’ll better understand the concepts.

If you would like to read more about creating custom events in C#, you can find more detail on the Microsoft website at the following links:

How to Raise and Consume Events

Handling and Raising Events


Using JavaScript with ASP.NET

Why Use JavaScript?

There are a few technologies that you must be comfortable with if you want to do any serious web development. HTML for content, CSS for formatting and JavaScript for dynamic programming are recognized as the three foundation skills that any good web designer needs.

ASP.NET programmers might be tempted to do away with the last item given that .NET code can do virtually anything when combined with HTML and CSS but JavaScript is still very important and the reason lies in the different domains in which each language operates.

Continue reading

My Virtual Vacation and Free Stuff

Summer vacation has mercifully arrived for me and my students.  Unlike many teachers, I’m at the school through most of the Summer.  My students get three weeks off – I get one week followed by a couple weeks of what will essentially be teacher workdays.  Judging from the sympathetic looks I was getting from other staff members and the sudden, dramatic drop-off in attendance of my classes, I’m thinking the break didn’t come a moment too soon.

Continue reading

The Accidental Teacher

The following is the text from my speech to the Ocala Early Bird Toastmasters on May 19, 2018.  If you’re in Ocala and would like to learn more about leadership and public speaking, come join us for breakfast on Saturday mornings at The Egg and I.

My name is Andrew Comeau and I am … a public school teacher?

I say it that way because It’s been a study in irony for me. If you told me just a couple years ago that I’d be teaching a nighttime programming class for vocational students, I’d have laughed. When others suggested I should be a teacher, I said it wasn’t for me.

Then when I was told that a new programming course was needed in Ocala and I had the choice of designing and teaching it myself or hoping someone else did it well, I automatically said Yes.

Continue reading

Site Changes

Looking over my web presence earlier this year, I decided to do some consolidation. I had three sites – Drewslair.com, which has been in operation for 15 years, my business site, ComeauSoftware.com, which hasn’t changed much for quite awhile and the site for my networking group, OcalaITProfessionals.com, which needs a lot more attention and content.

Comeau Software Solutions is my consulting business which, in one way or another, is meant to encompass any technology-related business that I do from my work with clients to my various writing projects to some future projects I have ideas for.  I decided it was time to let it take its proper place and that means merging ComeauSoftware.com and Drewslair.com into one site.

I’ll be keeping the Drewslair.com domain for at least another year to maintain the many links that have been made to it over the years.  One of the things I like about modern web hosting is how domains and sites can be moved around pretty quickly with just a few changes in settings.

I’m thinking about some changes to the look and feel of the site but all the content will remain and I hope to provide a lot more great articles and posts in the coming year.



How to Convert Between Roman and Arabic Numerals in C#

The Challenge

My latest challenge to my database programming students was to create a C# class that would perform various number conversions, starting with Arabic numbers (0 to 3999) to Roman numerals and vice versa.

I required that all public functions in the class needed to be declared as static, so that they could be called from outside the class without having to create a new instance. Also, the class was to be completely portable;  it must not use any functions such as message boxes that would prevent them from copying the entire class into any other type of project and referencing it.  Of course, all code must also have error handling and commenting.

My students came up with various solutions and I think some had more help from StackOverflow than others.  I know that one of them learned the hard way not to search for “XXX” on Google.

One popular strategy was to use the C# Dictionary class to hold the Roman characters and their equivalents.  I don’t always get around to writing up my own solutions to these challenges before I assign them, so I happily swiped that strategy for my own code which was otherwise written from scratch. I ended up using the SortedDictionary class instead.

Continue reading

How to Create Lookup Fields in C#

I started my (more or less) serious database development training many years ago in Microsoft Access.  One of my favorite controls was the Combo Box, a nice little drop-down field that enabled the user to select one of many values but collapsed down onto a single line.  The Combo Box control in Access was very configurable and one of the nice features was that  you could display one value while actually saving another value to the field the control was bound to.  For example, you could display the Customer Name while saving the associated CustomerID that the database would use to reference the customer record.

C# also has a Combo Box control that can do much the same thing but offers a lot more options through code.  The .NET version maintains a collection of objects, any kind of objects, and displays whatever text is presented by the object’s ToString() method.   The code can then use any other property of the object to carry out operations in the background.

Continue reading

How to Retrieve Data from SQL Server into C#

The .NET framework has a few different automated methods for managing connections to SQL Server and other databases. The framework has been around since 2003 and various versions have introduced new, improved data management tools while maintaining the old ones for backward compatibility.

It’s still possible, however to retrieve data from SQL Server and other database systems with just a few lines of code and it’s important to know how to do this to truly understand how the communication between SQL Server and a language like C# actually works.

Continue reading