my wallet will not send BTC I get this error when I try to send BTC

A FATAL ERROR OCCURRED. Bitcoin can no longer continue safely and will quit.

Exception: St13runtime_error

CDB(): can’t open database file wallet.dat, error -30974

C:\program files (x86)\Bitcoin\bitcoin-qt.exe in Runaway exception

Win 7
Bit core 0.9.0

Any help would be greatly appreciated

Thanks
This was a learning experience for me too! I wasn't sure how to extract keys on Windows, and had to work my way through it. This is what I did on Windows 7.

Before you do anything: backup your wallet!

Bitcoin-Qt does not have these as commands in it's GUI, so you need to use bitcoind.


Close Bitcoin-Qt
Open Command Prompt
Enter the command:

"C:\Program Files (x86)\Bitcoin\daemon\bitcoind" -server

or if that doesn't work, try 
"C:\Program Files\Bitcoin\daemon\bitcoind" -server

(The -server switch tells bitcoind to accept commands.)

That CMD session should freeze and become unresponsive--just minimise it; that's Window's way of telling you it's working.
Open another Command Prompt and type: 

"C:\Program Files (x86)\Bitcoin\daemon\bitcoind" dumpprivkey [ADDRESS]

Where address is the full public address.

So, I might enter "C:\Program Files (x86)\Bitcoin\daemon\bitcoind" dumpprivkey 18gcVuGVgJSPswQML7LbxQBFEmBgrEwtuW

Do this for every address you have bitcoin(s) in or want to keep.
Write down all of your private keys. 
Close both CMD's, delete your wallet (not the backup), and redo steps 2 and 3. (This will create a new wallet for you to use.)
Enter "C:\Program Files (x86)\Bitcoin\daemon\bitcoind" importprivkey [PRIVATE KEY] [LABEL] into the 2nd CMD instance.

So for example "C:\Program Files (x86)\Bitcoin\daemon\bitcoind" importprivkey 5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ OldWallet