A voir également:
- Quelqu'un s'y connait en db sous visual c++ ?
- Microsoft visual c++ runtime - Guide
- Visual petanque - Télécharger - Sport
- Visual paradigm - Télécharger - Gestion de données
- Visual basic - Télécharger - Langages
- Db designer - Télécharger - Bases de données
8 réponses
En fait, a partir de mon fichier view.cpp, avec le pointeur m_pSet je n'ai pas de problèmes, mais dans les boites de dialogues ca marche pas
Au secours
Cobra
Au secours
Cobra
tafiscobar
Messages postés
1277
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
177
18 avril 2002 à 10:39
18 avril 2002 à 10:39
bon cobra, ton pointeur, il se trouve ds quelle classe??? la classe C<nomdeprojet>View ??? si tu m'expliquais plus, peut etre q je pourrai t'aider car je ne sais pas comment tes données st récupéres depuis tes boites de dialogue.N'oublies pas q si tu v recuperer des données depuis une boite de dialogue, tu dois declarer une variable de type cette boite de dialogue et le lier a la boite pour pouvoir recuperer les données (car chaq controle ds une boite de dialogue est une donéne de ta classe)
tafiscobar
tafiscobar
Voici le code d'intialisation des champs d'une de mes boites a dialogiues. Ce code se trouve dans CSalleView
void CSalleView::OnButtonSallesPrinc()
{
CDialoguePrix Prix;
m_pSet->MoveFirst();
// Initialisation des differents champs
Prix.m_NumSalle = m_pSet->m_id_salles;
Prix.m_strNomSalle = m_pSet->m_nom_salle;
Prix.m_CapaciteMin = m_pSet->m_capacite;
Prix.m_CapaciteMax = m_pSet->m_capacite;
Prix.m_DemiJourMembre = m_pSet->m_prix_demi_journee_membre;
Prix.m_DemiJourNonMembre = m_pSet->m_prix_demi_journee_nonmembre;
Prix.m_JourMembre = m_pSet->m_prix_journee_membre;
Prix.m_JourNonMembre = m_pSet->m_prix_journee_non_membre;
// Affichage
Prix.DoModal();
}
Et quand je veux me deplacer dans la base a partir de la boite de dialogue affichée (au moyen de boutons que j'ai crées) j'ai des problemes d'assert
voici le code des 4 boutons de deplacement qui se trouvent dans le fichier cpp de la boite de dialogue
void CDialoguePrix::OnButtonEnd()
{
// TODO: Add your control notification handler code here
m_pSet.MoveLast();
UpdateData(true);
}
void CDialoguePrix::OnButtonFirst()
{
// TODO: Add your control notification handler code here
m_pSet.MoveFirst();
UpdateData(true);
}
void CDialoguePrix::OnButtonNext()
{
// TODO: Add your control notification handler code here
m_pSet.MoveNext();
UpdateData(true);
}
void CDialoguePrix::OnButtonPrevious()
{
// TODO: Add your control notification handler code here
m_pSet.MovePrev();
UpdateData(true);
}
J'ai peut etre fait des grosses conneries mais je suis un novice en programmation objet
Cobra
void CSalleView::OnButtonSallesPrinc()
{
CDialoguePrix Prix;
m_pSet->MoveFirst();
// Initialisation des differents champs
Prix.m_NumSalle = m_pSet->m_id_salles;
Prix.m_strNomSalle = m_pSet->m_nom_salle;
Prix.m_CapaciteMin = m_pSet->m_capacite;
Prix.m_CapaciteMax = m_pSet->m_capacite;
Prix.m_DemiJourMembre = m_pSet->m_prix_demi_journee_membre;
Prix.m_DemiJourNonMembre = m_pSet->m_prix_demi_journee_nonmembre;
Prix.m_JourMembre = m_pSet->m_prix_journee_membre;
Prix.m_JourNonMembre = m_pSet->m_prix_journee_non_membre;
// Affichage
Prix.DoModal();
}
Et quand je veux me deplacer dans la base a partir de la boite de dialogue affichée (au moyen de boutons que j'ai crées) j'ai des problemes d'assert
voici le code des 4 boutons de deplacement qui se trouvent dans le fichier cpp de la boite de dialogue
void CDialoguePrix::OnButtonEnd()
{
// TODO: Add your control notification handler code here
m_pSet.MoveLast();
UpdateData(true);
}
void CDialoguePrix::OnButtonFirst()
{
// TODO: Add your control notification handler code here
m_pSet.MoveFirst();
UpdateData(true);
}
void CDialoguePrix::OnButtonNext()
{
// TODO: Add your control notification handler code here
m_pSet.MoveNext();
UpdateData(true);
}
void CDialoguePrix::OnButtonPrevious()
{
// TODO: Add your control notification handler code here
m_pSet.MovePrev();
UpdateData(true);
}
J'ai peut etre fait des grosses conneries mais je suis un novice en programmation objet
Cobra
C'est idiot comme remarque je sais, mais ton probleme d'acces violation, ca veux generallment dire que tu travaille avec un pointeur (dans ton cas) qui ne pointe pas sur ce qu'il faut, ou que la classe qu'il pointe n'est pas construite ou a ete detruite par un destructeur que tu ne t'attendais pas a trouver sur ton chemin...
--> solution: ben chercher de ce cote... verifier que le pointeur est bien initialiser, et faire gaffe a tes appel... et aussi tenter de remplace les variables qui posent problemes par des varfiables pointee que tu cree par un "new"
--> il est aussi possible que ce soit la classe d'acces base de donne qui fasse des siennes parce que tu ne l'initialise pas comme il faut... genre un truc que appWizard aurait ajoute tout seul dans la CFormView...
--> solution: ben chercher de ce cote... verifier que le pointeur est bien initialiser, et faire gaffe a tes appel... et aussi tenter de remplace les variables qui posent problemes par des varfiables pointee que tu cree par un "new"
--> il est aussi possible que ce soit la classe d'acces base de donne qui fasse des siennes parce que tu ne l'initialise pas comme il faut... genre un truc que appWizard aurait ajoute tout seul dans la CFormView...
Bon le m_pSet utilise dans la methode on button salle est un pointeur vers CSalleSet (declare dans le header salleview) et initialisé (automatiquement) dans le view.cpp de la manere suivante
CSalleView::CSalleView()
: CRecordView(CSalleView::IDD)
{
...
//{{AFX_DATA_INIT(CSalleView)
m_pSet = NULL;
...
//}}AFX_DATA_INIT
}
void CSalleView::OnInitialUpdate()
{
m_pSet = &GetDocument()->m_salleSet;
CRecordView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
...
}
// CSalleView database support
CRecordset* CSalleView::OnGetRecordset()
{
return m_pSet;
}
// CSalleView message handlers
Et dans le header de ma boite de dialogues
public:
CDialoguePrix(CWnd* pParent = NULL); // standard constructor
CSalleSet m_pSet;
C'est peut etre une grosse connerie en effet
Tu peux m'aider ?
Cobra
CSalleView::CSalleView()
: CRecordView(CSalleView::IDD)
{
...
//{{AFX_DATA_INIT(CSalleView)
m_pSet = NULL;
...
//}}AFX_DATA_INIT
}
void CSalleView::OnInitialUpdate()
{
m_pSet = &GetDocument()->m_salleSet;
CRecordView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
...
}
// CSalleView database support
CRecordset* CSalleView::OnGetRecordset()
{
return m_pSet;
}
// CSalleView message handlers
Et dans le header de ma boite de dialogues
public:
CDialoguePrix(CWnd* pParent = NULL); // standard constructor
CSalleSet m_pSet;
C'est peut etre une grosse connerie en effet
Tu peux m'aider ?
Cobra
Bon le m_pSet utilise dans la methode on button salle est un pointeur vers CSalleSet (declare dans le header salleview) et initialisé (automatiquement) dans le view.cpp de la manere suivante
CSalleView::CSalleView()
: CRecordView(CSalleView::IDD)
{
...
//{{AFX_DATA_INIT(CSalleView)
m_pSet = NULL;
...
//}}AFX_DATA_INIT
}
void CSalleView::OnInitialUpdate()
{
m_pSet = &GetDocument()->m_salleSet;
CRecordView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
...
}
// CSalleView database support
CRecordset* CSalleView::OnGetRecordset()
{
return m_pSet;
}
// CSalleView message handlers
Et dans le header de ma boite de dialogues
public:
CDialoguePrix(CWnd* pParent = NULL); // standard constructor
CSalleSet m_pSet;
C'est peut etre une grosse connerie en effet
Tu peux m'aider ?
Cobra
CSalleView::CSalleView()
: CRecordView(CSalleView::IDD)
{
...
//{{AFX_DATA_INIT(CSalleView)
m_pSet = NULL;
...
//}}AFX_DATA_INIT
}
void CSalleView::OnInitialUpdate()
{
m_pSet = &GetDocument()->m_salleSet;
CRecordView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
...
}
// CSalleView database support
CRecordset* CSalleView::OnGetRecordset()
{
return m_pSet;
}
// CSalleView message handlers
Et dans le header de ma boite de dialogues
public:
CDialoguePrix(CWnd* pParent = NULL); // standard constructor
CSalleSet m_pSet;
C'est peut etre une grosse connerie en effet
Tu peux m'aider ?
Cobra
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tafiscobar
Messages postés
1277
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
177
18 avril 2002 à 17:13
18 avril 2002 à 17:13
voila, ton bleme vient du fait que tu utilises ton recordset sans l'ouvrir.Voila comment j'ai fait pour le resoudre :
ds la boite de dialogue, je declare une varaible de type CSalleSet*
puis voila le code :
CDialoguePrix : public CDocument
{
public:
CDialoguePrix(); //constructeur
CSalleSet *m_pPrix;
etc...
};
//ds le constructeur voila :
CDialoguePrix::CDialoguePrix()
{
///ce que soft a joute
//voila ce q tu dois ajouter apres ce q soft a ajoute ds le constructeur
m_pPrix = new CSalleSet;
m_pPrix->open();
}
voila, c'est tout, maintenant ds tes fct :
onend : teste d'abord s'il n'est pas a la fin puis si non alors tu p l'amener a la fin ( c'est plus propre)
onfirst : pareil sauf q tu testes s'il n'est pas deja ds le debut
c'est tout, moi ça marche, j'espere pour roi aussi.
tafiscobar
ds la boite de dialogue, je declare une varaible de type CSalleSet*
puis voila le code :
CDialoguePrix : public CDocument
{
public:
CDialoguePrix(); //constructeur
CSalleSet *m_pPrix;
etc...
};
//ds le constructeur voila :
CDialoguePrix::CDialoguePrix()
{
///ce que soft a joute
//voila ce q tu dois ajouter apres ce q soft a ajoute ds le constructeur
m_pPrix = new CSalleSet;
m_pPrix->open();
}
voila, c'est tout, maintenant ds tes fct :
onend : teste d'abord s'il n'est pas a la fin puis si non alors tu p l'amener a la fin ( c'est plus propre)
onfirst : pareil sauf q tu testes s'il n'est pas deja ds le debut
c'est tout, moi ça marche, j'espere pour roi aussi.
tafiscobar
C'est presque parfait, sauf que les nouvelles données ne s'affichent pas dans la boite
void CDialoguePrix::OnButtonEnd()
{
// TODO: Add your control notification handler code here
m_pPrix->MoveLast();
UpdateData(true);
}
void CDialoguePrix::OnButtonFirst()
{
// TODO: Add your control notification handler code here
m_pPrix->MoveFirst();
UpdateData(true);
}
void CDialoguePrix::OnButtonNext()
{
// TODO: Add your control notification handler code here
m_pPrix->MoveNext();
UpdateData(true);
}
void CDialoguePrix::OnButtonPrevious()
{
// TODO: Add your control notification handler code here
m_pPrix->MovePrev();
UpdateData(true);
}
void CDialoguePrix::OnButtonEnd()
{
// TODO: Add your control notification handler code here
m_pPrix->MoveLast();
UpdateData(true);
}
void CDialoguePrix::OnButtonFirst()
{
// TODO: Add your control notification handler code here
m_pPrix->MoveFirst();
UpdateData(true);
}
void CDialoguePrix::OnButtonNext()
{
// TODO: Add your control notification handler code here
m_pPrix->MoveNext();
UpdateData(true);
}
void CDialoguePrix::OnButtonPrevious()
{
// TODO: Add your control notification handler code here
m_pPrix->MovePrev();
UpdateData(true);
}
tafiscobar
Messages postés
1277
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
177
19 avril 2002 à 10:23
19 avril 2002 à 10:23
c'est updatedata(false) a la place de updatedata(true) car la ce st les variables qui rafraichissent le controle et non le ocntraire, cela devrait etre bon, je l'avais oublie.
tafiscobar
tafiscobar
Au secours !
Meme en mettant false a la place de true ca marche pas :( Pourtant l'instruction updatedata(false) est censeé rafraichir la fenetre non ?
Je fais quoi ? je commande la corde ou je vais voir un excorsiste pour voir si on m'a pas jeté un sort ?
Tous les champs sont initialisés dans le fichier view (a l'aide du pointeur m_pSet)
Puis dans le fichier de la boite de dialogue, j'utilise pour chacun des boutons les fonctions move (a l'aide du pointeur m_pPrix) et j'utilise la fontion updatedata. J'ai encore oublié qqc ?
Cobra
Meme en mettant false a la place de true ca marche pas :( Pourtant l'instruction updatedata(false) est censeé rafraichir la fenetre non ?
Je fais quoi ? je commande la corde ou je vais voir un excorsiste pour voir si on m'a pas jeté un sort ?
Tous les champs sont initialisés dans le fichier view (a l'aide du pointeur m_pSet)
Puis dans le fichier de la boite de dialogue, j'utilise pour chacun des boutons les fonctions move (a l'aide du pointeur m_pPrix) et j'utilise la fontion updatedata. J'ai encore oublié qqc ?
Cobra
tafiscobar
Messages postés
1277
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
177
19 avril 2002 à 15:21
19 avril 2002 à 15:21
c'est sur que tu utilises m_pprix ds tes avancee aulieu de m_pset???, sinon si tu v je t'envoies un bout de code et tu compares car la cela devient difficile de voir ce q tu as coe probleme, bon tiens moi au courant.
tafiscobar
tafiscobar
Dans mes fonctions pour la boite de dialogue j'utilises m_pPrix
J'ai rien contre un bout de code. Mais si tu as msn ca pourrait peut etre aider aussi. Comme ca on pourrait travailler en direct. Actuellement je suis connecte sous jdupont5@hotmail.com (le week end et en soiree je suis connecte en tant que F1_COBRA@hotmail.com)
Cobra
J'ai rien contre un bout de code. Mais si tu as msn ca pourrait peut etre aider aussi. Comme ca on pourrait travailler en direct. Actuellement je suis connecte sous jdupont5@hotmail.com (le week end et en soiree je suis connecte en tant que F1_COBRA@hotmail.com)
Cobra
Dans mes fonctions pour la boite de dialogue j'utilises m_pPrix
J'ai rien contre un bout de code. Mais si tu as msn ca pourrait peut etre aider aussi. Comme ca on pourrait travailler en direct. Actuellement je suis connecte sous jdupont5@hotmail.com (le week end et en soiree je suis connecte en tant que F1_COBRA@hotmail.com)
Cobra
J'ai rien contre un bout de code. Mais si tu as msn ca pourrait peut etre aider aussi. Comme ca on pourrait travailler en direct. Actuellement je suis connecte sous jdupont5@hotmail.com (le week end et en soiree je suis connecte en tant que F1_COBRA@hotmail.com)
Cobra
Bon, j'ai regardé tes sources et dans l'affichage de la boite, j'arrive a raffraichir les données, mais seulement pour les boutons "premier" et "dernier". Pour les boutons "suivant" et "precedent" ca marchetjs pas, je comprends pas
void CDialoguePrix::OnButtonEnd()
{
// TODO: Add your control notification handler code here
if (m_pPrix->IsEOF() == false)
{
m_pPrix->MoveLast();
m_NumSalle = m_pPrix->m_id_salles;
m_strNomSalle = m_pPrix->m_nom_salle;
m_CapaciteMin = m_pPrix->m_capacite;
m_CapaciteMax = m_pPrix->m_capacite;
m_DemiJourMembre = m_pPrix->m_prix_demi_journee_membre;
m_DemiJourNonMembre = m_pPrix->m_prix_demi_journee_nonmembre;
m_JourMembre = m_pPrix->m_prix_journee_membre;
m_JourNonMembre = m_pPrix->m_prix_journee_non_membre;
UpdateData(false);
}
}
void CDialoguePrix::OnButtonFirst()
{
// TODO: Add your control notification handler code here
if (m_pPrix->IsBOF() == false)
{
m_pPrix->MoveFirst();
m_NumSalle = m_pPrix->m_id_salles;
m_strNomSalle = m_pPrix->m_nom_salle;
m_CapaciteMin = m_pPrix->m_capacite;
m_CapaciteMax = m_pPrix->m_capacite;
m_DemiJourMembre = m_pPrix->m_prix_demi_journee_membre;
m_DemiJourNonMembre = m_pPrix->m_prix_demi_journee_nonmembre;
m_JourMembre = m_pPrix->m_prix_journee_membre;
m_JourNonMembre = m_pPrix->m_prix_journee_non_membre;
UpdateData(false);
}
}
void CDialoguePrix::OnButtonNext()
{
// TODO: Add your control notification handler code here
if (m_pPrix->IsEOF() == false)
{
m_pPrix->MoveNext();
m_NumSalle = m_pPrix->m_id_salles;
m_strNomSalle = m_pPrix->m_nom_salle;
m_CapaciteMin = m_pPrix->m_capacite;
m_CapaciteMax = m_pPrix->m_capacite;
m_DemiJourMembre = m_pPrix->m_prix_demi_journee_membre;
m_DemiJourNonMembre = m_pPrix->m_prix_demi_journee_nonmembre;
m_JourMembre = m_pPrix->m_prix_journee_membre;
m_JourNonMembre = m_pPrix->m_prix_journee_non_membre;
UpdateData(false);
}
}
void CDialoguePrix::OnButtonPrevious()
{
// TODO: Add your control notification handler code here
if (m_pPrix->IsEOF() == false)
{
m_pPrix->MovePrev();
m_NumSalle = m_pPrix->m_id_salles;
m_strNomSalle = m_pPrix->m_nom_salle;
m_CapaciteMin = m_pPrix->m_capacite;
m_CapaciteMax = m_pPrix->m_capacite;
m_DemiJourMembre = m_pPrix->m_prix_demi_journee_membre;
m_DemiJourNonMembre = m_pPrix->m_prix_demi_journee_nonmembre;
m_JourMembre = m_pPrix->m_prix_journee_membre;
m_JourNonMembre = m_pPrix->m_prix_journee_non_membre;
UpdateData(false);
}
}
Par contre pour ce qui est de l'ecriture ca ne marche toujours pas
Cobra
void CDialoguePrix::OnButtonEnd()
{
// TODO: Add your control notification handler code here
if (m_pPrix->IsEOF() == false)
{
m_pPrix->MoveLast();
m_NumSalle = m_pPrix->m_id_salles;
m_strNomSalle = m_pPrix->m_nom_salle;
m_CapaciteMin = m_pPrix->m_capacite;
m_CapaciteMax = m_pPrix->m_capacite;
m_DemiJourMembre = m_pPrix->m_prix_demi_journee_membre;
m_DemiJourNonMembre = m_pPrix->m_prix_demi_journee_nonmembre;
m_JourMembre = m_pPrix->m_prix_journee_membre;
m_JourNonMembre = m_pPrix->m_prix_journee_non_membre;
UpdateData(false);
}
}
void CDialoguePrix::OnButtonFirst()
{
// TODO: Add your control notification handler code here
if (m_pPrix->IsBOF() == false)
{
m_pPrix->MoveFirst();
m_NumSalle = m_pPrix->m_id_salles;
m_strNomSalle = m_pPrix->m_nom_salle;
m_CapaciteMin = m_pPrix->m_capacite;
m_CapaciteMax = m_pPrix->m_capacite;
m_DemiJourMembre = m_pPrix->m_prix_demi_journee_membre;
m_DemiJourNonMembre = m_pPrix->m_prix_demi_journee_nonmembre;
m_JourMembre = m_pPrix->m_prix_journee_membre;
m_JourNonMembre = m_pPrix->m_prix_journee_non_membre;
UpdateData(false);
}
}
void CDialoguePrix::OnButtonNext()
{
// TODO: Add your control notification handler code here
if (m_pPrix->IsEOF() == false)
{
m_pPrix->MoveNext();
m_NumSalle = m_pPrix->m_id_salles;
m_strNomSalle = m_pPrix->m_nom_salle;
m_CapaciteMin = m_pPrix->m_capacite;
m_CapaciteMax = m_pPrix->m_capacite;
m_DemiJourMembre = m_pPrix->m_prix_demi_journee_membre;
m_DemiJourNonMembre = m_pPrix->m_prix_demi_journee_nonmembre;
m_JourMembre = m_pPrix->m_prix_journee_membre;
m_JourNonMembre = m_pPrix->m_prix_journee_non_membre;
UpdateData(false);
}
}
void CDialoguePrix::OnButtonPrevious()
{
// TODO: Add your control notification handler code here
if (m_pPrix->IsEOF() == false)
{
m_pPrix->MovePrev();
m_NumSalle = m_pPrix->m_id_salles;
m_strNomSalle = m_pPrix->m_nom_salle;
m_CapaciteMin = m_pPrix->m_capacite;
m_CapaciteMax = m_pPrix->m_capacite;
m_DemiJourMembre = m_pPrix->m_prix_demi_journee_membre;
m_DemiJourNonMembre = m_pPrix->m_prix_demi_journee_nonmembre;
m_JourMembre = m_pPrix->m_prix_journee_membre;
m_JourNonMembre = m_pPrix->m_prix_journee_non_membre;
UpdateData(false);
}
}
Par contre pour ce qui est de l'ecriture ca ne marche toujours pas
Cobra