Página 1 de 1

Duda sobre TDataField:nSQLType, ¿Bug del manual?

Publicado: Vie Feb 10, 2012 10:05 am
por Bingen Ugaldebere
Buenas Xailer Team
Extraí­do del manual de Xailer
-----------------------------------------
TDataField:nSQLType
Tipo del campo en la tabla origen cuanto se trata de motores SQL. Ver
archivo sql.ch de [x]Harbour para más información.
ímbito
Sólo lectura
Tipo
Numérico
Valor inicial
0
-----------------------------------------
Pero resulta que me devuelve literales de tipo de campo y no números u
además el archivo sql.ch de [x]Harbour no existe.
Raro no?
Salu2.

Duda sobre TDataField:nSQLType, ¿Bug del manual?

Publicado: Vie Feb 10, 2012 11:08 am
por ignacio
Bingen,
Realmente se guarda el tipo nativo proporcionado por el propio motor y es posible que en algunos casos sea un literal y no un número. Para que motor SQL en concreto lo estás usando?
Corregiremos la ayuda. Gracias.

Duda sobre TDataField:nSQLType, ¿Bug del manual?

Publicado: Sab Feb 11, 2012 8:00 am
por Bingen Ugaldebere
> Realmente se guarda el tipo nativo proporcionado por el
> propio motor y es posible que en algunos casos sea un
> literal y no un número. Para que motor SQL en concreto lo
> estás usando?
Mysql 5.1
Gracias.

Duda sobre TDataField:nSQLType, ¿Bug del manual?

Publicado: Lun Feb 13, 2012 11:30 am
por ignacio
Bingen Ugaldebere escribió el sáb, 11 febrero 2012 08:00> Realmente se guarda el tipo nativo proporcionado por el
> propio motor y es posible que en algunos casos sea un
> literal y no un número. Para que motor SQL en concreto lo
> estás usando?
Mysql 5.1
Gracias.
Bingen,
Tienes razón. Efectivamente compruebo que se está retornando un valor de tipo cadena. A continuación te paso todos los valores posibles.
Un saludo
case MYSQL_TYPE_TINY:
cSqlType = "BOOLEAN";
case MYSQL_TYPE_SHORT:
cSqlType = "SMALLINT";
case MYSQL_TYPE_LONG:
cSqlType = "INTEGER";
cXBaseType = "N";
case MYSQL_TYPE_INT24:
cSqlType = "MEDIUMINT";
cXBaseType = "N";
case MYSQL_TYPE_LONGLONG:
cSqlType = "BIGINT";
cXBaseType = "N";
case MYSQL_TYPE_DECIMAL:
case MYSQL_TYPE_NEWDECIMAL:
cSqlType = "DECIMAL";
cXBaseType = "N";
case MYSQL_TYPE_FLOAT:
cSqlType = "FLOAT";
cXBaseType = "N";
case MYSQL_TYPE_DOUBLE:
cSqlType = "DOUBLE";
cXBaseType = "N";
case MYSQL_TYPE_TIMESTAMP:
cSqlType = "TIMESTAMP";
cXBaseType = "C";
case MYSQL_TYPE_TIME:
cSqlType = "TIME";
cXBaseType = "C";
case MYSQL_TYPE_YEAR:
cSqlType = "YEAR";
cXBaseType = "N";
case MYSQL_TYPE_DATE:
cSqlType = "DATE";
cXBaseType = "D";
case MYSQL_TYPE_DATETIME:
cSqlType = "DATETIME";
cXBaseType = "D";
case MYSQL_TYPE_STRING:
cSqlType = "CHAR";
cXBaseType = "C";
case MYSQL_TYPE_VAR_STRING:
cSqlType = "VARCHAR";
cXBaseType = "C";
case MYSQL_TYPE_BLOB:
cSqlType = "BLOB";
cXBaseType = ( aFields[ n - 1 ].flags & BINARY_FLAG ) ? "B" : "M";
case MYSQL_TYPE_SET:
cSqlType = "SET";
cXBaseType = "N";
case MYSQL_TYPE_ENUM:
cSqlType = "ENUM";
cXBaseType = "N";
case MYSQL_TYPE_NULL:
cSqlType = "NULL";
cXBaseType = "C";
La variable cSqlType es la que se asigna a TDataField:nSqlType

Duda sobre TDataField:nSQLType, ¿Bug del manual?

Publicado: Mar Feb 14, 2012 12:03 pm
por Bingen Ugaldebere
Muchas gracias Ignacio.