There is your problem. You create and free the dataset in the same procedure. But you need to keep the dataset open for it to be able to show it in the tdbgrid. Make the tsqlquery a class variable and create it in formcreate and free it in formdestroy. Then activate it in your procedure and keep it active.