Sunday, January 08, 2006

SqlExpress connection under Remote Desktop

While developing a small website this week I ran across an unusual error. 

When on my lapop, I generally remote into my desktop PC because it has Visual Studio and all the tools I need.

I decided to use a SqlExpress file as the database, since there won’t be much data for the application.  This worked for about 2 weeks until I got this error upon opening a connection:

Failed to generate a user instance of SQL Server due to a failure in starting the process for the user instance. The connection will be closed.

This error has to do with the fact that I am using remote desktop to develop.  When I access a file-based sql express database, the data is actually copied locally, which is why it takes so long to start up. 

Kevin Jones says:

SQLExpress creates a directory per user in "c:\Documents and Settings\[user]\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS" that it uses to store information. Deleting this directory has fixed both of my problems.

I’ll update this with my results.

Update:  It worked!  How weird.  This fix definitely looks temporary but it’s working for me so far.

Thursday, December 08, 2005

I'm all banged up!

On Thursday, I was involved in a serious car accident.  I hit a dump truck head on.

My car was mangled beyond belief, both airbags deployed, and I was in bad shape.  My right leg was obviously broken; it looked like a pillow doubled-over on itself. (Ouch!)  My left arm was also obviously broken.

Paramedics arrived quickly, they pulled me out of my car (quite painfully) and I was laid on a stretcher.  I heard someone say “be still, this might hurt,” and then followed the most painful thing I have ever encountered.  He pulled my leg to re-set my femur.  My leg popped loudly 3 times while I begged him to stop.

I was put on a helicopter and flown to the hospital.

Later that evening I had surgery on my arm and leg.  On my right femur, they inserted a titanium rod to fuse the bones back together.  For my left radius, they inserted a few pins to fasten a loose piece of bone.

I stayed in the hospital until Tuesday evening.  I am home now, basically immobile for I assume quite a while.

I guess I should consider myself lucky.  I am thankful for all my friends and family who showed support and came to visit or called during this tragedy.

Tuesday, November 29, 2005

Adding Javascript to ANY CommandField control

In the previous post, I mentioned how annoying it is to have to treat an ImageButton separate from a Button and separate from a LinkButton when they are all essentially the same thing.

The answer here lies in the IButtonControl interface, (whose name strongly suggests that it should be a direct parent, not an interface, but oh well)…

Here’s how you’d add javascript and tool tips to those CommandField button controls, without having to write specific versions for all three:

    1 protected void gvCrews_RowDataBound(object sender, GridViewRowEventArgs e)

    2         {

    3             //grab last column (the command column)

    4             int cmdCol = gvCrews.Columns.Count - 1;

    5             foreach (Control ctrl in e.Row.Cells[cmdCol].Controls)

    6             {           

    7                

    8                 IButtonControl btn = ctrl as IButtonControl;

    9 

   10                 if (btn != null)

   11                 {           

   12 

   13                     if (btn.CommandName == "Delete")

   14                     {

   15                         ((WebControl)ctrl).Attributes.Add("onClick", "return confirm('Are you sure you want to delete the crew and its ENTIRE history?  This cannot be undone...');");

   16                         ((WebControl)ctrl).ToolTip = "Click here to delete";

   17                     }

   18                     else if (btn.CommandName == "Edit")

   19                     {

   20                         ((WebControl)ctrl).ToolTip = "Click here to edit";

   21                     }

   22                 }           

   23             }   

   24         }

 This way I can still change the look & feel of the GridView CommandField and I don’t have to recompile to support it.  Unfortunately the IButtonInterface doesn’t allow for javascript attributes or tooltips, so I have to cast the control as a WebControl to add those in.  Setting CausesValidation=true still causes an exception for the ImageButton though, so I haven’t figured out a way around this yet.

Now playing: Nine Inch Nails - The Hand That Feeds

GridView CommandField Validation woes

Today I was working with a simple form, a single textbox at the top with a button for adding items, and a gridview below for editing/deleting.

With 2.0’s validation groups, we can have validation on the “Add” form by setting validationgroup=’AddGroup’ and we can have our CommandField column of the GridView have validationGroup=’editDelete’.  Ideally this will separate the 2 actions into their own validation groups and they won’t bother each other.

Well, if you are using ImageButtons instead of LinkButtons for your CommandField, there is a slight problem.  The ImageButton actually gets instantiated as DataControlImageButton, which cannot use the CausesValidation property.  Here’s what happens:

DumbException

Now why does this generate a NotSupportedException?  This is a perfectly valid scenario for validation?  In this particular case I do not care about the edit/delete validation, but I do care about the Add validation. 

If I change this scenario to work with LinkButton or just Plain Button, it all works out fine.

I have another rant regarding this same concept.  The above screenclip is showing the RowDataBound event handler, and I am looping through the controls in the last column of the GridView.  Now the last column is going to be the CommandField, so I know that there will be some commandcontrols in there.  At this point I should not care whether it is a Button, an LinkButton, or an ImageButton because I will be treating them all the same:  I will compare their CommandName properties to see what they are doing.  So why can’t I just cast the control as Button?  Well ImageButton doesn’t even derive from Button!  I am sure there are reasons for that, but I don’t see them.  This means I have to recompile my code if some UI guy decides they want a link instead of an image for their Edit command.  Dumb, I say.  An ImageButton, by nature, is a button, not an image.  It’s behavior is a button.  The way we treat it as developers is just like a button.  It’s view or representation however is an Image, just like a standard button has a raised, rounded rectange as its view.  Someone please explain to me why I’m wrong….

Now playing: Jimi Hendrix - Red House

Sunday, November 27, 2005

Engaged!

I proposed to my girlfriend, Silvia, on Thanksgiving in front of her entire family.  She said yes!  It was quite an occasion.  We aren’t yet sure when the date will be.

I’ll post some pictures of our trip to upstate New York soon, one of them has me on one knee .

Tuesday, November 15, 2005

vs2005 beta 2

Visual Studio 2005 Beta 2 is dying on me…  I wonder if it knows that I am about to replace it with the RTM version.

Any time I Rebuild All or run my app and play with it for 1 or 2 minutes Visual Studio just exits, no error message, no restart, nothing.  Makes it quite hard to develop, donchathink?

I am kind of reluctant to update to RTM too soon since we have apps in development under beta 2.

 

Now playing: Dave Matthews Band - All Along the Watchtower

Wednesday, November 09, 2005

A cool free online service.

I just thought I’d plug a cool website I found today.  It’s called Side Job Track and it’s pretty sweet.  It allows you to track side projects for just about any type of project.  Includes free invoicing, simple reports, and a client list.

This is perfect for my few-and-far-between computer service/networking jobs I get from time to time. 

Check it out, it’s totally free.

Now playing: Nirvana - The Man Who Sold The World

Monday, November 07, 2005

doh! of the day

Holy crap.  I can’t believe I wasted 45 minutes on this stupid, stupid, mistake.

When dealing with .NET and IDbCommands, you can execute the command in various ways:

  • ExecuteReader() – which will execute the command and return an IDataReader with the resultset loaded.
  • ExecuteScalar() – which will return a single value from the database, generally used for returning a COUNT or an @@IDENTITY
  • ExecuteNonQuery() – which is used for, well, just plain executing a query.  This function DOES have a return value, though:  the number of records affected.

I just spent almost an hour trying to figure out why this:

//Execute command and return the primary key of the item we just inserted
base
._id = Convert.ToInt32(cmd.ExecuteNonQuery());

was returning 1, always, even though the current primary key in that table is in the 90’s.

Looks like I need to get some sleep…

Now playing: Staind - Mudshovel - Winamp *** 1514. Staind - Mudshovel

Wednesday, November 02, 2005

My thoughts about the .NET Rocks! show in Austin

 

I’m listening to .NET Rocks! live in Austin right now (you can download it here)

I enjoyed listening to Jeffrey Palermo and Scott Bellware, as I read their blogs often.

I’d just like to vent about this moron:

Leeman

.. who said “C# Sucks!” live on the air.  His name is Leeman Schmitt.  Obviously this guy is incredibly narrow-minded, and cannot easily understand (let alone take advantage of) the differences and superiorities of another language.  VB.NET, while a great language, is not the panacea of development.  I get completely annoyed when someone is tied so tightly to ONE particular viewpoint on a problem.

I believe it was Scott Hanselman who said, “C# and VB.NET are just different flavors of IL” –  I couldn’t agree with this more.

Given the choice, I will choose C# because that’s what I prefer.  I don’t push it on anyone else, I don’t claim that it’s the best, or that everything else sucks.  I am perfectly happy to work on a project in VB.NET because I am versatile.  I would be happy to use PHP or Ruby, or JSP for that matter, since I believe being multi-faceted benefits my work in ALL languages.

I have been hearing a lot of this whiny attitude toward C# lately.  I wouldn’t hire anyone if they couldn’t program comfortably in VB.NET and C#.  I would also frown upon anyone who would just JUMP to using a particular technology for every problem they come across.

Anyway, I cast my blogvote to C#, thought I still respect any language or tool that will help me work productively. 

Ok, I’m done ranting…  flame on

Ed: Ok, so I was a little harsh.  Apparently there was more to this story.  So Leeman, no offense…  I just get really worked up about this topic

Tuesday, November 01, 2005

Extreme Programming Explained, 2nd Ed.

I just finished reading Extreme Programming Explained, 2nd Edition, by Kent Beck.

The book is a very easy read, weighing in at 160 pages.  I was able to easily finish it in the spare minutes I have during the day.

I thoroughly enjoyed the book and will be applying a few of the principles immediately at my job.  I enjoyed taking a break from purely technical book and focusing on values and principles.  There is also an extensive annotated bibliography in the back which will probably serve as my new-books-to-read source.

Next up is the Pragmatic Programmer, which I probably should’ve read a LONG time ago, but always put it off.  I’ll write a short review when I finish it.

Credit - Refinance - Personal Loan - Debt Help