J'utilise le code suivant pour essayer d'accèder à une base de donnèes.
L'éxécution donne le résultat 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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 #include "afxdb.h" class CRec : public CRecordset { public : CRec (CDatabase*); CString m_prod; virtual void DoFieldExchange (CFieldExchange *pFX); }; void main () { int rc; CDatabase db; rc=db.OpenEx ("DRIVER=SQL Server;SERVER=NOM_ORDINATEUR;UID=sa;PWD=interstiss",0); printf ("OpenEx=%x\n",rc); CRec rec (&db); printf ("rec=%x\n",rec); rc=rec.Open (CRecordset::dynaset,"select * from [T Assemlages]",CRecordset::none); printf ("Open=%x\n",rc); rec.MoveFirst (); rc=rec.CanUpdate (); printf ("prod=%s\n",rec.m_prod); printf ("CanUpdate=%x\n",rc); rec.Edit (); rec.Close (); db.Close (); } CRec::CRec (CDatabase *db) :CRecordset (db) { } void CRec::DoFieldExchange (CFieldExchange *pFX) { CRecordset::DoFieldExchange (pFX); pFX->SetFieldType (CFieldExchange::outputColumn); RFX_Text (pFX,"Num produit",m_prod); }
OpenEx=1
rec=5530d0
Open=1
prod=
CanUpdate=1
puis le programme se plante lors de l'execution de la méthode Edit
dans dbcore.cpp ligne 1622 sur une instruction ASSERT (m_nFields!=0)
en effet la valeur est n_mFields est 0.
Partager