You should use
for queries that do not return result, such as INSERT query, DELETE query, UPDATE, USE, ALTER....
When yo want to run a query which returns result, like you do with SELECT statement in your example then :
That's all
EDIT: forgot to say, always use aliasing of result-fields, always use
SELECT count(*) AS myfieldname FROM mytable
This way you can :
Label1.Caption:=myDB.FieldByName('myfieldname').Asstring;