in dem moment, wo du
ADOQueryTmp.SQL.Clear;
machst, löscht du auch das resultset.
wenn du also im zweiten beispiel das resultset erst löscht und dann versuchst darauf zuzugreifen, führt es zu nem fehler.
Im ersten fall machst du es richtig. Da sicherst du erst das resultset und löscht es dann