bonjour,

J'ai une TTable nommée TableTemporaire, je la remplis grâce à la méthode BatchMove() qui a comme paramètre le résultat d'une requête SQL et l'attribut batCopy.
Querytempo est un composant TQuery. Quoi qu'il arrive les données de cette base sont écrasées lors de chaque requête.

Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
TableTemporaire->Open();
TableTemporaire->BatchMove(Querytempo,batCopy);
TableTemporaire->Close();
Le code ci-dessus fonctionne très bien si le fichier DB est présent sur le disque dur. Par contre si mon fichier n'existe pas le programme plante car il ne trouve pas mon fichier DB.


J'ai cependant constaté que ce code (sans la méthode open())
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
TableTemporaire->BatchMove(Querytempo,batCopy);
TableTemporaire->Close();
fonctionne très bien que ma base de données existe ou non.... Si mon fichier DB n'existe pas il est créé sur le disque lors du BatchMove().

D'où ces questions :
  • est-ce que je peux me passer de la méthode open() ? Car visiblement Batchmove() créé mon fichier DB s'il n'existe pas ou l'ouvre s'il existe.
  • est-ce que ce code :
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (TableTemporaire->Exists)
    	        TableTemporaire->Open();
    TableTemporaire->BatchMove(Querytempo,batCopy);
    TableTemporaire->Close();
    est un bon compromis finalement ?
  • quel est le rôle de la méthode open() dans ce cas là ?