Quicken 2009 Bugs

This is just an online, public bug report about bugs in Quicken 2009. I’m hoping that publishing them will quicken (pardon the pun) Intuit in fixing them.

See Also

Here are the bugs I’ve found so far:

  • When setting up a new credit card account to download transactions, after it’s successfully connected, the “Account Setup” dialog box has some display problems and looks like it’s hiding some information:

image

  • Renaming Rules: This is quite an annoying bug. I personally do not want Quicken to rename my payees, yet there seems to be NO WAY to prevent Quicken from doing so. I participated in 3 online tech support chats and 2 call-back phone support incidents in the last week. NONE of their suggestions worked AND they refuse to accept that this is a bug. Here’s the problem: When you download transactions using PC Banking, then go and accept your transactions, Quicken will suggest renaming rules… actually, it will DICTATE renaming rules. You cannot tell it “No”. Furthermore, the dialog box that pops up informing you of the new dictatorial renaming rules being forced on you, has a check box that says something like “don’t inform me of renaming rules again”. There are 2 problems with this. 1. I believe that checking it only causes to Quicken to not inform you of new renaming rules, but it’ll still make new renaming rules. You only have 2 buttons “Apply” and “Cancel”. If you click “Apply”, it’ll apply the rule(s) that it’s showing you. I think that’s the only way to enforce the checkbox for “don’t tell me anymore”. If you click “cancel”, you’re canceling the dialog box and therefore canceling your check box “don’t tell me anymore” which means it’ll continue to tell you. Also, canceling the dialog box does not prevent it from enforcing the rule.

I’ve spent about 4 hours with tech support over the last week trying to undo this. There’s a dialog box buried in the app where you can tell it don’t create new rules. It was already configured to NOT do those rules, yet it does them anyway. This is clearly a bug and Intuit needs to step up to the plate and admit it and fix it. I’ve been reporting this bug since Quicken 2007. I skipped Quicken 2008, so I can neither confirm nor deny that the bug is in Quicken 2008, but I’d assume that it’s there as well.

  • No Sound:  Quicken has several sounds for different events like startup (a short tune), accept transaction (cha-ching), and others.  All of a sudden, Quicken 2009 has stopped playing sounds.  Yes, the play sounds option is indeed checked and yes, sound works in all other programs (this is not my first time messing with a computer, BTW 🙂
  • File corruption:  This is a serious issue.  EVERY TIME I call Quicken support, they claim the file is corrupt.  This seems to be their excuse for all bugs in the software.  They want to dismiss any issue as a bug and claim it’s a corrupt file.  Fine, it’s a corrupt file.  Now, fix Quicken so it STOPS CORRUPTING my files!  This has been going on through at least 2 versions of Quicken (2007, 2009 (I skipped 2008)).  A bug this serious requires a complete rewrite of their file access data layer routines.

Intel DG33FB Motherboard stalls for 2:45 minutes when booting – SOLUTION!

Usually I’ve got programming posts here, but occasionally I’ll rant or post a solution to a problem that’s just computer related and not programming related. This is one such post.

PROBLEM:
I’ve been experiencing a painfully slow boot process even though I’ve got a pretty powerful system at the time of this writing (2008-01-24). I’ve got an Intel DG33FB motherboard with a processor with 4 cores (an Intel Core2 Quad CPU Q6600 running at 2.4Ghz) and 4GB of RAM, plus other, non-boot time relevant hardware added. The problem is the motherboard would stall for 2 minutes and 45 seconds BEFORE attempting to boot from a drive.

To add insult to injury, not only does the motherboard stall for 2 minutes and 45 seconds BEFORE it even attempts to boot from any drive (this means you can’t blame Windows), then after Windows starts booting, it then stalls for ANOTHER 2:45!!! I had presumed that it too was waiting on some sort of hardware response from the motherboard since the timings were awfully suspicions. So, that means I’m waiting for 5:30 for ABSOLUTELY NOTHING! This doesn’t even count the actual Windows boot up time.

So, I did what anyone else would do. I Google’d for a solution. I found many blogs and posts from other users experiencing the same problem. Few found a solution. Several had contacted Intel and Intel didn’t know what the problem was. So, I went to the Intel site and searched for a solution to the problem anyway. I did find that the latest BIOS update (1/5/2009) addressed a “slow bootup” problem, so I downloaded and installed it. No luck. Other blog posts were saying that they fixed the problem by down-grading their BIOS to an older version. For some reason, Intel found and fixed this problem, then intentionally removed the fix from subsequent BIOS updates. I wasn’t real keen on downgrading my BIOS. Sometimes there are bug fixes for some serious stuff… even more serious than a painfully slow boot up.

I decided I’d try ONE LAST thing before I went the route of downgrading my BIOS. I shut down the PC and unplugged EVERYTHING. And by “everything”, I mean all my internal hard drives (3 of’em), my DVD drives, all my USB devices (including keyboard and mouse), my FireWire devices, and my network cable. The only things left were my video cable and audio cables (all analog output, so virtually no chance that they were causing problems). I turned on the computer and low and behold, it only waited about 19 seconds at the same spot it was stalling at before. So, I’ve determined it was an external peripheral somehow causing a problem. So, I plugged all the USB cables back in, turned it on and got the stall again. Narrowed it down to USB devices. So, I unplugged them all, rebooted for a sanity check and it only stalled 19 seconds. I then plugged each USB cable back in one at a time, booting after each one. I narrowed it down to my USB 2.0 hub (or one of the devices connected to it). So, I then left the hub plugged in but unplugged everything from it and rebooted… quick start. OK, now I plugged each USB device back into the hub, 1 at a time and rebooting after each one until the problem returned.

SOLUTION!
Turns out the thing that slowed it down was a USB cable… JUST a USB cable THAT WASN’T PLUGGED INTO ANYTHING!!! Actually, it was before I started the test, but just the cable itself seemed to cause the problem. It was a cable that I normally have plugged into my external USB Seagate 500GB FreeAgent Pro drive. I thought, what the heck, let’s plug it back in and reboot, and the problem was now gone. Strange! So I plugged everything back in, rebooted and the problem is now gone!!! Even the secondary delay during the Windows boot.

So, problem gone, but I’m still a little amiss that the computer’s hardware configuration is now back in the exact same configuration it was when I had the problem. But I’m good to go.

So, if you’re one of the unlucky DG33FB owners experiencing this problem, unplug everything and plug them back in 1 at a time, rebooting between plug ins until you find the culprit.

Hope this helps!

Type ‘System.Web.UI.WebControls.Parameter’ does not have a public property named ‘DbType’.

I recently got this error after deploying a .NET 2.0 web site from my dev machine to a development web server. It ran fine on my machine, but continuously generated the error:

Type ‘System.Web.UI.WebControls.Parameter’ does not have a public property named ‘DbType’.

on the dev server. I validated that both my dev machine and the web server had the exact same version of the .NET framework AND that the web site on the dev server was configured for the 2.0 framework.

My dev machine is running Windows XP Pro 64bit and the dev server is Windows Server 2003 Standard Edition 32bit. The app was developed with Visual Studio 2005.

As a sanity check, I started my VM with Windows Server 2003 32bit with Visual Studio 2005. I checked in the app from my XP 64bit host to VSS, then retrieved it from VSS in my VM. Compiling and running in the VM worked just fine but deploying it to dev still had the error. I created a new typed dataset, dragged the same table to it and copied the queries from the offending datatable in the original typed dataset. I then changed the code to reference the new dataset. Compiled, ran locally, and it worked (no surprise), then deployed to dev, and it worked! Huh? It still had the DBType in the dataset files… which is where the dev server was pointing me to for the error before. This makes no sense. I then checked that code into VSS from my VM and got the latest onto my XP 64bit host. Compiled locally, ran, and it worked, then deployed to dev and it worked. So, I went back to my original typed dataset and pulled the designer up side by side by the new dataset and examined the fields, the queries, and the parameters… all the same! I then deleted some extra datatables in my dataset that weren’t being used (and had referential links to the offending table), excluded the new dataset from the project (rather than deleting it), then changed the code back to use the original dataset. Now everything works everywhere!

So, I’m not entirely sure what the cause was, but I think removing the linked datatables from the dataset helped solve the problem. Of course, this doesn’t explain why the old version worked differently between my dev machine and the dev server.

Anyway, there you have it. If you run into this problem, try deleting links from your datatables and/or recreate a new typed dataset, one piece at a time, compiling, and deploying one step at a time.

Find a GUID (or anything) in ANY table in your database!

[Updated 2015-03-12]

Do you ever run across an ID, such as a GUID or an integer (or anything else, for that matter) while stepping through code and aren’t quite sure which table it’s supposed to be for or need to know where it’s referenced anywhere in your database? I use GUIDs like they’re going out of style for a plethora of reasons, especially in my tables. EVERYTHING in my tables has a GUID to identify it. I use them as primary keys and as foreign keys. They’re computer generated, can be generated either on the db server, the web server, or even on the client and can be guaranteed to be unique in that table, or in an entire database, or in the entire universe, for that matter (try doing that with auto-incrementing integers!!!).

[GARD]

Anyway… I found myself needing to find an arbitrary GUID anywhere in the database and was doing a lot of manual querying. Finally, I decided that this could be EASILY automated by querying the database meta data for tables with GUID columns, then automatically querying those tables and columns for my GUID and output the results of each table and column the GUID was found in.

Below, is my solution: A stored procedure called FindGuidInAnyTable that takes a single parameter (a GUID) and searches the entire database for all occurrences of it. You could adapt this for any column type… not just GUIDs, BTW.

[Update 2015-03-13: Using the newer, friendlier system table names, and including the schema name as well]

ALTER procedure [dbo].[FindGuidInAnyTable]
(
 @FindThisGUID uniqueidentifier
) as

begin

 declare @TableSchema varchar(100)
 declare @TableName varchar(100)
 declare @NextColumn varchar(200)
 declare @Select varchar(1000)

 create table #ResultsTable
 (
 SchemaName varchar(100),
 TableName varchar(100),
 ColumnName varchar(100)
 )

 declare TableNameCursor cursor for
 select
 table_schema,
 table_name
 from
 INFORMATION_SCHEMA.tables
 where
 table_type = 'BASE TABLE'

 OPEN TableNameCursor

 FETCH NEXT FROM TableNameCursor INTO @TableSchema, @TableName

 WHILE (@@FETCH_STATUS <> -1) BEGIN

 IF (@@FETCH_STATUS <> -2) BEGIN

 declare ColumnNameCursor cursor for
 select distinct
 COLUMN_NAME
 from
 INFORMATION_SCHEMA.COLUMNS
 where
 TABLE_SCHEMA = @TableSchema and
 TABLE_NAME = @TableName and
 DATA_TYPE = 'uniqueidentifier'

 OPEN ColumnNameCursor

 FETCH NEXT FROM ColumnNameCursor INTO @NextColumn

 WHILE (@@FETCH_STATUS <> -1) BEGIN
 
 IF (@@FETCH_STATUS <> -2) BEGIN

 set @select = 'insert into #ResultsTable select ''' + @TableSchema + ''' as TableSchema, ''' + @TableName + ''' as TableName, ''' + @NextColumn + ''' as ColumnName from [' + @TableSchema + '].[' + @TableName + '] where [' + @NextColumn + '] = ''' + cast(@FindThisGUID as varchar(50))+ ''''
 print @select
 exec(@select)

 end
 
 FETCH NEXT FROM ColumnNameCursor INTO @NextColumn
 
 END

 CLOSE ColumnNameCursor
 DEALLOCATE ColumnNameCursor

 end

 FETCH NEXT FROM TableNameCursor INTO @TableSchema, @TableName

 END

 CLOSE TableNameCursor
 DEALLOCATE TableNameCursor

 select
 count(*) as Instances,
 SchemaName,
 TableName,
 ColumnName,
 @FindThisGUID as GuidFound
 from
 #ResultsTable
 group by
 SchemaName,
 TableName,
 ColumnName
 order by
 SchemaName,
 TableName,
 ColumnName

end

For MS SQL Server versions prior to SQL Server 2005, do this:

[GARD]

CREATE procedure [dbo].[FindGuidInAnyTable]
(
   @FindThisGUID uniqueidentifier
) as

begin

declare @TableName varchar(100)
declare @NextColumn varchar(200)
declare @Select     varchar(1000)

create table #ResultsTable
(
 TableName varchar(100),
 ColumnName varchar(100)
)

declare TableNameCursor cursor for
  select distinct
     o.name
  from
 syscolumns c,
 sysobjects o
  where
     c.id    = o.id and
     c.xtype = 36   and
     o.xtype = 'U'

OPEN TableNameCursor

FETCH NEXT FROM TableNameCursor INTO @TableName

WHILE (@@FETCH_STATUS &lt;> -1) BEGIN

  IF (@@FETCH_STATUS &lt;> -2) BEGIN

     declare ColumnNameCursor cursor for
        select distinct
           c.name
        from
 syscolumns c,
 sysobjects o
        where
           c.id    = o.id       and
           c.xtype = 36         and
           o.name  = @TableName and
           o.xtype = 'U'

     OPEN ColumnNameCursor

     FETCH NEXT FROM ColumnNameCursor INTO @NextColumn

     WHILE (@@FETCH_STATUS &lt;> -1) BEGIN
 
        IF (@@FETCH_STATUS &lt;> -2) BEGIN

           set @select = 'insert into #ResultsTable select ''' + @TableName + ''' as TableName, ''' + @NextColumn + ''' as ColumnName from [' + @TableName + '] where [' + @NextColumn + '] = ''' + cast(@FindThisGUID as varchar(50))+ ''''
           print @select
           exec(@select)

        end
 
        FETCH NEXT FROM ColumnNameCursor INTO @NextColumn
 
     END

     CLOSE      ColumnNameCursor
 DEALLOCATE ColumnNameCursor

  end

  FETCH NEXT FROM TableNameCursor INTO @TableName

END

CLOSE      TableNameCursor
DEALLOCATE TableNameCursor

select
  count(*) as Instances,
 TableName,
 ColumnName,
  @FindThisGUID as GuidFound
from
  #ResultsTable
group by
 TableName,
 ColumnName
order by
 TableName,
 ColumnName

end

Here’s how you use it:


exec FindGuidInAnyTable '34fdbfa2-cdbd-4f34-bd2e-1423063fb707'

Here are what the results look like in my database:

I put this stored procedure in all of my databases. It’s a real time saver!

Web Service makes duplicate, incompatible types of individual types

I had a tough time coming up with a title for this article. It’s hard to explain, exactly what problem I’m referring to is, and choosing key words to help people find this article who are looking for a solution to their problem will be even more difficult. Let me try to explain the problem:

I’ve got a web service. It has many classes and enumerations in it. Many classes contain members of some of the other classes. When I write an application that consumes the web service, some of those types end up as two seperate types. For example, suppose I have an enumeration like this:


public enum MyEnum
{
one,
two,
three
}

Suppose I have two classes like this:


public class MyFirstClass
{
public MyEnum TypeOfThing;
public string something;
}

public class MySecondClass
{
public MyEnum TypeOfOther;
public bool IsThisPlainEnough;
}

Then, in my consuming application, my proxy web class (which is auto generated by Visual Studio when you add a web reference), I’ll get TWO separate MyEnums, one with the name MyEnum and another with MyEnum1. Then, my two classes might come across like this:


public class MyFirstClass
{
public MyEnum TypeOfThing;
public string something;
}

public class MySecondClass
{
public MyEnum1 TypeOfOther;
public bool IsThisPlainEnough;
}

As you can see, it makes MyFirstClass.TypeOfThing incompatible with MySecondClass.TypeOfOther.

I haven’t researched this enough to determine exactly what’s causing this, but I do know something much more important… a solution!

Here’s what you do:

Add an XmlType attribute to the type that gets duplicated, like this:


[System.Xml.Serialization.XmlType(Namespace="MyNameSpace.MyEnum", TypeName="MyEnum")]
public enum MyEnum
{
one,
two,
three
}

Now, when I add a web reference to my class library, it generates ONLY ONE MyEnum and it makes MyFirstClass.TypeOfThing compatible with MySecondClass.TypeOfOther.

That’s it.

Hibernation unavailable in Windows Vista


I recently installed some Windows udpates on my Windows Vista Ultimate 32bit OS. When I came back up after the required reboot, I got the dialog box to the left from my PowerChute software (software that controls my APC battery backup). The text of the dialog reads:

“PowerChute has detected that hibernation support is not enabled on your computer. Unsaved data will not be saved following an extended power problem.

APC recommend that you enable hibernatoin support so that all application data is preserverd.”

Aside from the annoying grammatical error (“APC recommends“), it did not give any information on how to re-enable it. I searched all over Windows Vista to find something to turn it back on. It was just NOT available!! I thought the latest Windows Update just ripped it out of the OS (as Microsoft has done with many features in Vista that used to be in XP). When I googled the text in the dialog box, I got a whopping ONE result and it was on how to resolve the problem in Windows XP. So, I held my nose and went to the Windows Vista “Help & Support” option on my own computer and looked up “hibernation”. The first hit was “what happened to sleep and hibernation?”. Clicking on that link led me to a Microsoft web page explaining how to turn it back on. This is where Apple Computer gets all their amunition against Microsoft. Here’s the answer:

  1. Go to a command prompt. (Start menu, Programs, Accessories, right-click “Command Prompt”, choose “Run as administrator”, and enter your administrator password when prompted.)
  2. type: powercfg -h on
  3. Reboot.
  4. When it comes back up, go to control panel, power options.
  5. Click on “Change plan settings” under whichever power plan you have selected.
  6. Click on “Change advanced power settings”.
  7. Expand “Power buttons and lid”.
  8. Expand each sub-item and set them as you wish. You’ll notice that “hibernate” is now an available option.

Setting TimeOut on Typed DataSet TableAdapter

If you have a SQL query you’ve added to a TableAdapter that takes longer than 30 seconds to run, you’ll get a timeout error. You’ll also find that there’s no timeout property to set, so what do you do?

Fortunately, in .NET 2.0, you have partial classes. I won’t give a tutorial of partial classes in this article, but in short, it’s a way for you to add to an existing class (even one that’s already compiled), without having to inherit a new class from it. So, using a partial class, we can expose the protected timeout properties that we normally wouldn’t have access to. The code image below shows how to do that. Just type this anywhere in your project, replacing my namespaces and class names with yours. If you’re using .NET 1.0 or 1.1, you’ll have to inherit a new class from the one you want to set timeouts on. In your new class, you’ll add similar code below, but you don’t have TableAdapter’s in .NET 1.0 or 1.1. This post is specifically about .NET 2.0, but with a little work, you should be able to adapt it to 1.0 or 1.1. The key is inheritance.


namespace MyNameSpace.MyDataSetTypeTableAdapters
{
public partial class MyTableAdapter
{
public int InsertCommandTimeout
{
get { return this.Adapter.InsertCommand.CommandTimeout; }
set { this.Adapter.InsertCommand.CommandTimeout = value; }
}
public int UpdateCommandTimeout
{
get { return this.Adapter.UpdateCommand.CommandTimeout; }
set { this.Adapter.UpdateCommand.CommandTimeout = value; }
}
public int DeleteCommandTimeout
{
get { return this.Adapter.DeleteCommand.CommandTimeout; }
set { this.Adapter.DeleteCommand.CommandTimeout = value; }
}
public int SelectCommandTimeout
{
get { return this.CommandCollection[0].CommandTimeout; }
set
{
for (int x = 0; x < this.CommandCollection.Length; x++)
if (this.CommandCollection[x] != null)
((System.Data.SqlClient.SqlCommand)this.CommandCollection[x]).CommandTimeout = value;
}
}
}
}

Microsoft’s WorldWide Telescope Software


Microsoft just released a really cool product called “WorldWide Telescope“. It’s fantastic! I’ve just started a Google discussion group here:

I’ve posted messages to the group giving a more detailed description of what this product does as well as a 13 point wish list. Feel free to contribute to the group.

Click-Once Deployed WinForms Receiving QueryString

Have you ever tried to pass parameters on the query string to one of your "click once" web deployed WinForms application? If you have, you’ll likely end up with an empty query string, even after following the directions on the following MSDN pages:

http://msdn2.microsoft.com/en-us/library/system.deployment.application.applicationdeployment.activationuri(VS.80).aspx
http://msdn2.microsoft.com/en-us/library/system.deployment.application.applicationdeployment.activationuri.aspx
http://msdn2.microsoft.com/en-us/library/ms172242(VS.80).aspx

I spent countless hours debugging and researching this issue, finding no answers anywhere and finding several people posting questions in forums about this issue… all with no resolution!

Here are the general directions from MSDN:

1. Mark your WinForms application as being able to receive query string parameters (right-click project/properties/publish/options, check "Allow URL parameters to be passed to application").
2. In your code, you access the query string as so:
(new Uri(AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[x])).Query

I tried a million times trying to get my parameters to pass through to my application. Here’s how I was testing it:

1. Deploy your WinForms application (right-click project/publish, fill in path info, click next, etc… until published).
2. Browser opens up to something like: http://localhost/myapp/publish.htm
3. Click on address and add "?test=whatever" so the full URL looks like: http://localhost/myapp/publish.htm?test=whatever and hit enter to reload publish.htm with those paramters.
4. Click the "run" button on the publish page.
5. App opens up, but the query string is blank: (new Uri(AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[x])).Query

As it turns out, my code was right all along. The trick is in the URL. Forget the publish.htm page. It can’t do it. What you need for the URL is this:

http://localhost/myapp/myapp.application?test=whatever.

That’s the trick to it. This bypasses the publish page altogether and launches the application immediately AND your query string WILL have the proper data in it!.

Windows Vista Backup – Can’t Backup!

Most of my tech blogs are written to provide a solution. This time, I’m just going to rant…

First, a nice feature of Vista is that it monitors the drive status of your hard drives and reports to you when impending doom approaches and gives you the opportunity to back up the failing drive immediately:

So, the obvious step to take is to take Vista up on its offer and back up your dying drive. So, I did. Rediculously, Vista absolutely insists that I also back up my C drive to the same backup location at the same time!!! Well, guess what Microsoft, I DON’T NEED TO BACKUP MY 500GB C DRIVE!! I only need to backup my dying 80GB drive. At the moment, I don’t have space to backup C. Check out this screen shot. It actually says:


“The disk that Windows is installed on will always be included in the backup.”


Notice that the C-Drive’s check box is grayed out? You CAN’T UN-select it!

I’m finding a lot of things that I don’t like about Vista. Most of the nasty things have to do with its paranoid tactics against piracy that has more of an effect on ligitimate users than on pirates as well as rediculous blockades against your OWN hardware and your OWN purchased “premium content” with “content protection”. It’ll actually intentionally degrade your audio if you’re playing music THAT YOU PAID FOR, but your hardware doesn’t have all of the expensive, top of the line, encryption built into the hardware. It will do the same for video. In some cases, it will just shut off your audio or video if you have any audio or video hardware in your computer that’s not 100% hardware secured… and EVERYONE does.

Ugh!

Please visit my online store: www.MichaelsAttic.com.