IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

CRecordset en Readonly, help...


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 16
    Par défaut CRecordset en Readonly, help...
    Je cree un Crecordset pour avoir acces a des donnees d'une table sur sqlserver par une connection odbc.

    Je fait un open avec la requete suivante (pas de jointure). Lors de la creation du CDatabase il n est pas en readonly, lors de la creation du CRecordset, il n est pas non plus en readonly. Mais je veux faire un delete avec mon CRecordset, j'ai un message, impossible, en readonly.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    sprintf(Requete,"select * from DapDeliverMessage where DapDeliverMessage.TerminalSubscriptionID='%s'", TabTerminaux[cpt]); 
    try 
    { 
    MySkyRecord.Open(CRecordset::snapshot, _T(Requete), CRecordset::none); 
    } 
     
    catch( CDBException* e ) 
    { 
    return REQERROR; 
    }

    Mais j ai toujours le meme resultat, le recordset est en readonly. ?????
    Pourtant il n'y a pas de jointure dans la requete, non...

    Quand je fais plustard un MySkyRecord.Delete(), il me met CRecordset en readonly.

  2. #2
    Membre expérimenté
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Par défaut
    Essaies d'utiliser le nom d'une table de ta base de données à la place de la requête.
    A++

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    je suis pas un specialiste de l'odbc mais ..,
    lors de ta creation de ta source de données tu n'aurais pas une option read only par defaut .
    ou alors verifies bien les droits d'acces du compte utilisé .


  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 16
    Par défaut
    Citation Envoyé par annedjomo
    Essaies d'utiliser le nom d'une table de ta base de données à la place de la requête.
    A++
    Pour l'operation desiree cette requete est indispensable, je ne peux la remplacer par une table...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 16
    Par défaut
    Citation Envoyé par farscape
    salut,
    je suis pas un specialiste de l'odbc mais ..,
    lors de ta creation de ta source de données tu n'aurais pas une option read only par defaut .
    ou alors verifies bien les droits d'acces du compte utilisé .

    Lors de la creation de la connection odbc, il n'y a pas d'option readonly, ou qui y ressemble. J'utilise le driver odbc sqlserver fournit avec sqlserver 2000.

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    et ton compte il a les droits suffisants ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 16
    Par défaut
    Citation Envoyé par farscape
    et ton compte il a les droits suffisants ?
    sur sqlserver j ai cree une connection avec Roles de base de données pour <<Ma base>>:

    public, db_owner, db_datareader, db_datawriter.

  8. #8
    Membre expérimenté
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Par défaut
    Citation Envoyé par fredforum
    Citation Envoyé par annedjomo
    Essaies d'utiliser le nom d'une table de ta base de données à la place de la requête.
    A++
    Pour l'operation desiree cette requete est indispensable, je ne peux la remplacer par une table...
    Essaies alors de faire de ta requête une vue de la base de données.
    Tiens nous au courant.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 16
    Par défaut
    Citation Envoyé par annedjomo
    Citation Envoyé par fredforum
    Citation Envoyé par annedjomo
    Essaies d'utiliser le nom d'une table de ta base de données à la place de la requête.
    A++
    Pour l'operation desiree cette requete est indispensable, je ne peux la remplacer par une table...
    Essaies alors de faire de ta requête une vue de la base de données.
    Tiens nous au courant.
    Je suis desole, mais je n y connais rien en bd. Je decouvre. Que signifie faire une vue et comment faire avec un CDatabase et un CRecordset?

  10. #10
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Par défaut
    Pour modifier les données via ton Recordset il ne faut pas ouvir un snapshot mais un dynaset.
    Les Recordset SnapShot sont en lecture seule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MySkyRecord.Open(CRecordset::dynaset, _T(Requete), CRecordset::none);
    http://msdn.microsoft.com/library/de....3a3a.Open.asp

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 16
    Par défaut
    Citation Envoyé par abelman
    Pour modifier les données via ton Recordset il ne faut pas ouvir un snapshot mais un dynaset.
    Les Recordset SnapShot sont en lecture seule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MySkyRecord.Open(CRecordset::dynaset, _T(Requete), CRecordset::none);
    http://msdn.microsoft.com/library/de....3a3a.Open.asp
    Pourquoi un dynaset, d apres la doc, la seule difference avec un snapshot est que l'on peut prendre en compte les changement apportes par d autres utilisateurs. De toutes facons, meme avec un dynaset, le recordset se positionne en readonly.

  12. #12
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Par défaut
    Effectivement tu as raison ....
    Je me suis trompé la dessus.

    Que te renvoie la fonction CanUpdate() du recordset ?

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 16
    Par défaut
    Citation Envoyé par abelman
    Effectivement tu as raison ....
    Je me suis trompé la dessus.

    Que te renvoie la fonction CanUpdate() du recordset ?
    0. Il semblerait que mon recordset passe en readonly car dans ma requete il n y a pas de cle primaire.

  14. #14
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Par défaut
    Bon ben tu as trouvé ... Il faut ajouter la clé à ton recordset

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 16
    Par défaut
    Citation Envoyé par abelman
    Bon ben tu as trouvé ... Il faut ajouter la clé à ton recordset
    Toujours le meme probleme, mon code est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    if(type == MESSAGE) 
    sprintf(Requete,"select * from DapDeliverMessage where DapDeliverMessage.ID='%d'", TabId[i]);
    else
    sprintf(Requete,"select * from DapDeliverNotification where DapDeliverNotification.ID='%d'", TabId[i]);
    try
    {
    TheTempRecord->Open(CRecordset::snapshot, _T(Requete),CRecordset::none);
    }
    catch( CDBException* e )
    {
    	//return REQERROR;
    }
    if (TheTempRecord->CanUpdate ())
    {
    	TheTempRecord->Delete();
    	TheTempRecord->Close();
    }
    Quand je fait le open j'ai un message me disant:
    impossible de ... requested concurrency. Recordset en readonly.

    ???

  16. #16
    Membre expérimenté
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Par défaut
    Est ce que tes tables DapDeliverMessage et DapDeliverNotification ont des clés primaires?

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 16
    Par défaut
    Citation Envoyé par annedjomo
    Est ce que tes tables DapDeliverMessage et DapDeliverNotification ont des clés primaires?
    Oui, les deux ont des cles primaires qui sont dans ma requete xxx.ID

Discussions similaires

  1. [Kylix] fichiers help kylix2 oe ??
    Par sdoura2 dans le forum EDI
    Réponses: 2
    Dernier message: 29/11/2002, 14h32
  2. combobox et readonly
    Par Mac leod dans le forum C++Builder
    Réponses: 6
    Dernier message: 28/11/2002, 10h27
  3. Problème Base de données et CRecordSet
    Par LE CHAKAL dans le forum MFC
    Réponses: 3
    Dernier message: 20/08/2002, 11h59
  4. Help :Problème de clignotement
    Par LE CHAKAL dans le forum Composants VCL
    Réponses: 6
    Dernier message: 14/08/2002, 10h53
  5. Help InnoSetup ou Installshield
    Par buzz dans le forum Outils
    Réponses: 4
    Dernier message: 30/07/2002, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo