سلام دوست عزيز
در ADOQuery شما ميتونيد دستورات SQL رو بنويسيد و اجرا كنيد اما اگه نتيجه دستوري كه اجرا ميكنيد يك جدول باشه مثل نتيجه دستور Select اونوقت بايد ADOQuery رو Open كنيد ولي وقتي دستوري كه در ADOQuery مينويسيد فقط تغييري روي DataBase اعمال ميكنه يا عمليات خاصي رو انجام ميده كه خروجي به شكل جدول نداره اونوقت بايد از دستور ExecSQL استفاده كنيد.
اما بين False و True كردن جدولها و چه از نوع Query و چه از نوع Table و ‍Closeو Open كردن اونها هيچ تفاوتي وجود نداره اشكالي هم كه در برنامه شما بوده بخاطر تفاوت بين Trueو False كردن با Open و Close كردن AdoQuery نبوده بلكه به خاطر اينه كه شما دستور Update رو داخل ADoQuery نوشتيد كه نتيجه اون يك جدول نيست بلكه تغييراتي رو در DataBase اعمال ميكنه و بعد خواستيد ADOQuery رو Open كنيد يا Active اون رو True كنيد.
به هر حال همونطور كه گفتم براي دستور هايي كه خروجي اونها جدول نيست مثل Update,Delete,Insert,... حتما بايد از ExecSQL استفاده كنيد. كه دوست عزيزمون هم اين مطلب رو به درستي بيان كرده اند.