Bonjour.
Voila, j'utilise pas mal de RecordSet mais là je me heurete à un problème de données tronquées (erreur 1004).
- J'enregistre dans ma base une "annotation" :
Code :
- BEGIN_TRANSACTION(PDBNAT);
- CRcdSet note(PDBNAT);
- CString sqlRequest;
- sqlRequest.Format("UPDATE rcd SET annotation = \"%s\" WHERE idrcd = '%s' ", m_idappli);
- PDBNAT->ExecuteSQL(sqlRequest);
- COMMIT_TRANSACTION(PDBNAT);
|
Là, pas de soucis, le champ "annotation" de ma table "rcd" contient bien toute l'annotation.
Or celle ci est tres importante (je n'ai pas compté, mais quand j'enregistre celle ci dans un fichier texte ce dernier fait 26Ko)
- Maintenant, je souhaite lire celle ci, et là c'est le drame.
En effet, jusqu'à maintenant je lisais ss problème une annotation avec un recordset classique, mais là vu la taille du merdier j'ai une erreur 1004 (truncation).
Auriez vous une idée sur la façon de déclarer mon DoFieldExchange ?
Voila ce que j'ai en ce moment :
Code :
- IMPLEMENT_DYNAMIC(CRcdAnnotations, CRecordset)
- CRcdAnnotations::CRcdAnnotations(CDatabase* pdb)
- : CSwRecordSet(pdb)
- {
- //{{AFX_FIELD_INIT(CRcdAnnotations)
- m_idrcd = _T("" );
- m_annotation = _T("" );
- m_nFields = 2;
- //}}AFX_FIELD_INIT
- m_nDefaultType = snapshot;
- }
- CString CRcdAnnotations::GetDefaultConnect()
- {
- return _T("ODBC;DSN=DBInfNat" );
- }
- CString CRcdAnnotations::GetDefaultSQL()
- {
- return _T("[rcd]" );
- }
- void CRcdAnnotations::DoFieldExchange(CFieldExchange* pFX)
- {
- //{{AFX_FIELD_MAP(CRcdAnnotations)
- pFX->SetFieldType(CFieldExchange::outputColumn);
- SWRFX_Text(pFX, _T("[idrcd]" ), m_idrcd);
- SwRFX_FreeText(pFX, _T("[annotation]" ), m_annotation);
- //}}AFX_FIELD_MAP
- }
- /////////////////////////////////////////////////////////////////////////////
- // CRcdAnnotations diagnostics
- #ifdef _DEBUG
- void CRcdAnnotations::AssertValid() const
- {
- CSwRecordSet::AssertValid();
- }
- /////////////////////////////////////////////////////////////////////////////
- void CRcdAnnotations::Dump(CDumpContext& dc) const
- {
- CSwRecordSet::Dump(dc);
- }
|
En gros, remplacer le "SwRFX_FreeText" par une autre solution pour récupérer toutes les infos ?
Merci d'avance, là je suis bien perdu.
Message édité par Sagoth le 20-04-2005 à 12:01:32