Posts Tagged ‘database’

Getting ASP With JET Access Working On 64-bit vista

Sunday, December 28th, 2008

There are quite a few issues in getting classic asp scripts working on vista. I want to quickly go over what I did, so that when I need this information available in the future I have an easy place to find it. So to save time I am just trying to get this written as fast as possible and continue on with my work. Sorry for any typos.

Install IIS through control panel -> programs and features -> (left panel) “turn windows features on or off”

Once the feature listing window populates:
expand the “internet information services” item
check web management tools and world wide web services
…really I went through the options and selected the majority of them.
Key ASP related items to make sure you have selected:
“world wide web services” -> “application development features” -> ASP

I needed windows authentication, so I needed:
“world wide web services” -> “sercurity” -> “windows authentication”

After that, I had issues when trying to read access database files with JET. The main issue here is that a 64-bit driver does not exist. So we need to change the webserver to allow 32-bit software to run. I found generally how to fix this here.

That link above didn’t exactly work for me though. It was probably done with a slightly older or newer version of IIS that I have installed.

Start up the IIS control panel by going to “control panel” -> “administrative tools” -> “Internet information services manager”

First, select the “application pools” item in the left panel. If you only have one application pool (displayed in the middle window after selecting “application pools”), then you should add a new one called something like “classic 32-bit asp application pool.” Mine came with a “classic .net app pool,” which I used.

click on the pool that you want to make 32-bit. From the right-most panel you should see an option for “set application pool defaults…” Inside the window that pops-up change the option “enable 32-bit applications” to TRUE.

Next, we need to change our site to use that pool. Select “sites” from the left-most panel. Select “default website” or whatever site you want to assign. Then select “basic settings…” from the right-most panel. the pop-up will have a button labeled “select” for application pools. Click that and select our 32-bit pool.

Now you should be able to develop classic ASP sites that use MS Access database files. Just make sure you have the Jet access database drivers installed. If not, do a search on “MDAC” (Microsoft Data Access Components) or maybe “JET Access Driver” on microsoft.com and find the drivers to install.

This website showed how to enable error displaying to the web browser:
%windir%\system32\inetsrv\appcmd set config -section:asp -scriptErrorSentToBrowser:true

Run that command in a command prompt that has administration abilities. If you don’t do that, you will just get a generic error message when something doesn’t run in the script.

C# .NET Programming Tip: Keeping A History With Properties

Saturday, February 16th, 2008

The program I am writing at work’s primary functionality is a checklist. One of the requested features is the ability to record what actions a user performs on the checklist. So there needs to be some additional code that updates a history table whenever a user makes any changes to the checklist.

Let’s define when a history event should fire off:
When the user makes a new checklist.
When the user updates any property of the checklist.
When a user archives a checklist (eg: discard in so many works).

Making a history entry when the user makes a new checklist or archives a checklist is easy. There would generally be only one function for each, so just before or after adding or archiving the checklist from the database, the history process is called.

What about when the user updates a single field in a checklist? It is important to track those changes, because a single little change is generally the most important (he said, she said situation).

In my program checklistprocessor, checklist, checklistitem, history, and database are all separate objects. So what would be an easy way to update each property individually and also record the before/after state in a history entry?

Use properties!

Here is an example of one such property:

class CheckListItem
{
   private int id;
   private int checkListId; //foreign key to CheckList
   private string notes;
   ...

   //will hold a reference that is received from a calling object
   private Database dbConnection;

   public string Notes
   {
       get { return this.notes; }
       set
       {
           //create history entry for this change
           History.add(id, checkListId, this.notes, value);

           //update instance variable
           this.notes = value;

           //update database with new value
           dbConnection.queryNoResult("UPDATE ... WHERE... ;")
       }
   }

   ...

Remember that C# is case sensitive. That means we can have a Notes property and a notes class variable. It makes things a lot simpler naming wise and is, from what I have read, an unofficial standard practice.

As you can see from the code, all the checklist has to do to update a checklistitem variable called “notes” is call the property Notes. Everything else is handled by the set method.




The Way Of Coding



 
Scott J. Waldron Photography
Stock Photo Website
Tech Learning Site
Follow me on Twitter

Popular Article Tags

Archives

Pages