Hi, Dave -
PowerBuilder applications are single-threaded by default, so when your app is waiting for a database request to complete, the main (and only) execution thread waits. It is possible to create a special type of non-visual object that can be executed in its own thread, and there can be many of these objects executing simultaneously... but it's a somewhat advanced topic with a non-intuitive implementation and there's very little documentation/tutorial information available, that I know of.
Typically, this feature is used to spin off the execution of long-running tasks, such as a database query or execution of a stored procedure, or to offload the writing and/or reading of files, tasks that commonly tie up the main execution thread that is mainly devoted to managing the app's GUI.
If you're interested in learning more, I suggest you begin by examining the four PB Help topics that begin with "SharedObjectxxxxxx". SharedObjectGet provides some explanation of the capabilities.
Best regards,
John