Hola.
Como dice
tiammat, tál como está ese código no tendría que dar error.
Revisa que en el código original no te haya quedado:
Código:
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("DELETE FROM GASTO WHERE Fecha = :VALUE");
Query1->ParamByName("VALUE")->Value = DBGrid1->Fields[0]->Value;
Query1->Open(); // <= aquí
Por que si estuvieras usando el método
Open en ese caso, te daría exáctamente el error que mencionas.
Saludos.
