.read is essentially a .movenext + a check for EOF combined into one.
IF obj DataReader.read()
positions you on record #1 if there is 1.
While objDataReader.Read()
resForTitle = objDataReader("mHeader")
End While
the
read at TOP OF LOOP positions you on record #2.
Thus it needs to rewritten as:
DO
resForTitle = objDataReader("mHeader")
LOOP while objdataReader.read()