CRecordSet::GetFieldValue kürzt string bei varchar ?
-
Moinsen,
ich hab in einer Tabelle eine Spalte als nvarchar(10) not null deklariert. Wenn ich mir den Inhalt der Tabelle so anschaue, steht auch alles korrekt drin (also 10 Zeichen). Wenn ich nun aber aus meinem C++ Programm mit im Titel besagter Funktion zugreife, bekommt der übergebene CString nur 9 Zeichen, das letzte wird abgeschnitten.
Hier mal ein kleiner Code-Ausschnitt// Get column information CODBCFieldInfo fi; int fc = m_rs->GetODBCFieldCount(); for (int i = 0; i < fc; i++ ) { m_rs->GetODBCFieldInfo(i,fi); KFieldInfo inf(fi); m_colInfos.push_back(inf); // Add column to list control list.InsertColumn(i, inf.m_strName, 0, 120); } // Now parse recordset and fill data into the list CString fieldVal; int index = 0; while (!m_rs->IsEOF()) { m_rs->GetFieldValue(short(0), fieldVal); list.InsertItem(index,fieldVal); for (int k = 1; k < fc; k++) { m_rs->GetFieldValue(k, fieldVal); if (m_colInfos.at(k).m_nSQLType == 11) // date fieldVal.Delete(10,100); list.SetItemText(index,k,fieldVal); } index ++; m_rs->MoveNext(); }
Kann mir jemand erklären warum dem so ist ?
LG
-
Ist das letzte Zeichen ein Leerzeihen? Varchars speichern nur Text ohne Leerzeichen links/rechts.
-
Nein, ist ein Datum als String 'YYYY-MM-DD'... ist nen SQL Server 2005 und sind teilweise Daten von vor 1753, deswegen als String