1) Ton Dim n'est pas à sa place. Je ne sais pas d'où ça vient, mais c'est pas normal qu'il soit en plein milieu, ça ne peux pas marcher.
2) C'est ça de copier une base Access alors qu'elle est en cours d'utilisation. Un programme a fait un lock dedans, et tune peux plus écrire dedans. Ouvre-la dans Access, et fait "réparer". Change aussi certainement la déclaration de l'appel à la base Access, car je suis pas certain que les drivers de la 97 puissent accéder à la version XP. Mais entout cas, c'est pas du tout ton erreur, les erreurs MSADO sont bien plus explicites.
3) Une fuite mémoire, c'est quand un programme occupe de l'espace mémoire qu'il ne libère pas quand il a fini de s'en servir. Il en résulte qu'au bout d'un certain temps, la mémoire disponible réduit de façon critique, jusqu'au plantage. Un effet de bors aussi, classique en C++ quand on utilise des pointeurs n'importe comment, c'est que le programme, en perdition totale, va se mettre à lire et écrire dans des espaces mémoires qui ne lui sont pas attribués, ou qui ne contiennent pas les objets attendus. A ce moment, on peut aussi appeler ça une fuite mémoire, même si ce n'est pas vraiment ça.