J'utilise le code suivant pour essayer d'accèder à une base de donnèes.

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);
}
L'éxécution donne le résultat suivant
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.