Bonjour à tous !
Je suis en train de coder une application qui récupère des lignes d'un fichier Excel et qui après traitement les enregistre dans une BDD access.
Grosso modo, ce fichier excel représente une facture et chacune des lignes contient des informations sur l'entitée facturée (identifiant, montants...etc...).
Mon processus se déroule de cette manière :
- Copie des données du fichier excel dans une table temporaire de ma BDD
- Requête type "Select * from TableTemporaire"
- pour chaque ligne : création d'un objet facture + remplissage des membres en lisant le résultat de la requête précédente
- Chaque objet facture génère une string type "Insert into Facture etc..."
- Quand toutes les lignes sont traitées on exécute toutes les requêtes Insert Into
En plus de ça, l'appli effectue des vérifications sur chacune des lignes et en cas d'erreur ajoute un enregistrement dans une table FACTURE_ERREUR dont la structure ressemble à : IDFacture, IDErreur.
Le fichier excel contient environ 500 lignes, ce qui fait qu'au total à la fin du processus j'effectue un grand nombre de requêtes (enfin pour moi c'est un grand nombre). En gros ça fait : 500 + (500 * nombre d'erreurs) si les 500 lignes contiennent au moins une erreur.
Ca commence à faire pas mal de requêtes !
Mais le problème n'est pas là. En fait, après chaque insertion dans la table Facture j'aimerais récupérer l'ID de cette facture qui est en NuméroAuto dans Access, et j'aimerais le faire sans effectuer de requête du genre 'Select MAX(ID) from Facture' à chaque ligne de facture enregistrée parce que ça allongerait considérablement la durée du processus d'enregistrement.
J'ai besoin de cet ID pour les insertions dans la table FACTURE_ERREUR.
Existe-t-il une méthode ou une astuce avec un composant ADO (j'utilise des TADOQuery pour mes requêtes) pour récupérer cet ID qui s'incrémente automatiquement ?
Merci d'avances pour vos réponses !
Partager