Requetes sous visual c++

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. Contributeur
    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. Et pour accéder aux valeurs de la requete quej'ai créé sous access ? je fais comment ?

      Cobra
      0
  2. 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
    1. Contributeur
      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
      1. Contributeur
        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. 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. 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