Estoy ampliando una base de datos de acceso 2003 a SQL Server Express 2008. Parece que las tablas están bien creadas y los datos se ven bien.Advertencia de "datos de cadena, truncamiento derecho" en una instrucción de selección
Tengo una aplicación MFC que se conecta a esta base de datos. Funcionó bien al conectarse, pero cuando me conecto a SQL Server recibo el siguiente error en una declaración de selección.
DBMS: Microsoft SQL Server
Version: 10.50.1600
ODBC Driver Manager Version: 03.80.0000
Warning: ODBC Success With Info on field 0.
String data, right truncation
State:01004,Native:0,Origin:[Microsoft][ODBC SQL Server Driver]
Los datos que se devuelven deben tener 8 caracteres, pero solo 7 con el carácter más a la derecha truncado.
La interfaz de acceso puede leer los datos de SQL Server correctamente.
El campo de la tabla de SQL Server se define como nvarchar con una longitud de 8.
El código para leer el campo se ve algo como
CDatabase Database;
CString sSerialNumber = "00000000";
CString SqlString;
CString sDsn = "Driver={SQL Server};Server=server\\db;Database=Boards;Uid=uid;Pwd=pwd;Trusted_Connection=False";
Database.Open(NULL,false,false,sDsn);
CRecordset recset(&Database);
SqlString.Format("Select SerialNumber from boards where MACAddress = '%s'",mac);
recset.Open(CRecordset::forwardOnly,SqlString,CRecordset::readOnly);
recset.GetFieldValue("SerialNumber",sSerialNumber);
Después de esto, debe ser sSerialNumber 12345678 pero su 1234567
Gracias por la ayuda
¿Podemos suponer que en la base de datos, SerialNumber se está almacenando como 12345678 en la base de datos subyacente? – BIBD
¿Para qué sirve la recompensa? ¿Lo hace funcionar sin el nuevo controlador? ¿Por qué alguien querría hacer eso? –