Requetes sous visual c++

cobra -  
 cobra -
Comment faire pour utiliser une requete qui a ete definie dans access sous visual c++ ?

Et comment gérer le mode du jeu d'enregistrement ? J'ai ete par le panneau de config-> drivers odbc -> la case "lecture seule" n'est pas cochée. Pourtant quand je fais une tentative d'enregistrement j'ai le message "le jeu d'enregistrement est en lecture seule"

Merci

4 réponses

  1. tafiscobar Messages postés 1281 Statut Contributeur 177
     
    est ce q tu l'ouvres en mode dynaset?, c'est ce mode qui te permet de le modifier, si t'as mis dynamic, certains drivers odbc ne supportent pas, je ne sais pas pourqoi, c'est ce qui est dit ds le msdn
    tafiscobar
    0
    1. cobra
       
      J'ai été voir dans les header et le cpp de salleset et effectivement c'etait dynamic, je l'ai changé et j'ai obtenu 8 erreurs de compilation

      header

      class CSalleSet : public CRecordset
      {
      public:
      CSalleSet(CDatabase* pDatabase = NULL);
      DECLARE_DYNASET(CSalleSet)
      ...
      };

      cpp

      IMPLEMENT_DYNASET(CSalleSet, CRecordset)

      CSalleSet::CSalleSet(CDatabase* pdb)
      : CRecordset(pdb)
      {
      ...
      m_nDefaultType = snapshot;
      }
      0
    2. cobra
       
      J'ai modifie le set.h et set.cpp

      il etait marque dynamic j'ai donc rempalce le mic par set et j'ai eu des erreurs de compilation. Apparement il fallait ajouter un ; quand j'ai remplace mic par set. Mais ca ne change rien il veut tjs pas enregistrer.

      dans le view
      void CSalleView::OnButtonNouveau()
      {
      // TODO: Add your control notification handler code here
      CDialogueReservation Reservation;
      // Détermination de l'action effectuée
      Reservation.m_strAction = "Ajouter";
      m_pSet->MoveLast();
      Reservation.DoModal();
      // Enregistrer les données dans la base
      m_pSet->m_nom_salle = Reservation.m_strDesignation;
      m_pSet->m_date = Reservation.m_strDateDebut;
      Reservation.m_strHeureDebut = Reservation.m_strHeureDebut + Reservation.m_strMinDebut;
      m_pSet->m_heure_debut = Reservation.m_strHeureDebut;
      Reservation.m_strHeureDebut = Reservation.m_strHeureFin + Reservation.m_strMinFin;
      m_pSet->m_heure_fin = Reservation.m_strHeureFin;
      m_pSet->m_chaises = Reservation.m_bChaises;
      ....
      m_pSet->AddNew();
      m_pSet->Update();
      m_pSet->Requery();
      }

      Je pose peut etre parfois des questions idiotes, mais je decouvre vc++

      cobra
      0
  2. tafiscobar Messages postés 1281 Statut Contributeur 177
     
    d'abord declare_dynamic , n'a rien a voir avec le mode d'acces a la base, ce declare_dynamic c'est juste pour savoir en quelque sorte ce que ta classe herite de CObject. Donc, ne l'enleve pas, remet
    declare_dynamic et implement_dynamic et enleve les ;.
    Maintenant, pour ce qui est d'ajouter des enregsitrements, c'est ds cet ordre :
    m_pset->addnew();
    //les affectations
    m_pset->update();
    voila, tu ajoutes d'abord une ligne pui stu la remplis(ce n'est pas l'inverse on ne remplit pas un vide puis ajouter une ligne).
    tafiscobar
    0
  3. cobra
     
    J'ai mis le m_pSet->addnew ou tu l'as dit, mais ca va tjs pas. Ou puis-je voir quel est le mode d'ouverture de ma base ?

    Et aussi, j'ai créé une requete (test) sous access, comment acceder aux resultats sous vc ++ ?

    cobra
    0
  4. tafiscobar Messages postés 1281 Statut Contributeur 177
     
    regarde ds le constructeur de CSalleSet, tu as normalement une variable qui s'appelle m_nDefaultType, c'est ton mode de connexion, voila. En tout cas, pour ce quie st de l'ajout c'est comme cela :
    addnew()//ajout
    update() //enregistrement
    movelast() //pour aller vers celui q'on a enregistrer
    requery() //pour mette a jour le recordset.
    sinon, essaies de m'envoyer les fichiers par mail, je t'ai envoeye un mail moi.
    tafiscobar
    0
    1. cobra
       
      Et pour accéder aux valeurs de la requete quej'ai créé sous access ? je fais comment ?

      Cobra
      0