Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Tipos de datos entre Excel y Builder

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Tipos de datos entre Excel y Builder Responder citando

Quiero llevar datos desde Excel a una BD (leo la hoja de calculo a través de Ole), se puede saber el tipo de dato que guarda una columna o celda sin tener que estar mapeando las mascaras (en Excel muestra los formatos como #,##0.00, "hh:mm:ss", etc...)????.
Es decir, quiero saber si una columna/celda contiene un numero/texto/fecha, pero no me importa el formato.
Esto es porque tengo que reconocer el formato de una fila para transformarla en una tabla de BD, y para eso tengo que conocer el tipo de datos que debo guardar en cada campo de la tabla que voy a crear dinamicamente.
Si no es posible conocer el tipo de dato generico que guarda la celda, hay alguna funcion o libreria de Builder con la que pueda mapear las mascaras a un tipo de datos generico (que determine que "hh:mm:ss" es un Date/Time)??
Desde ya muchas gracias.
Nico.
Volver arriba
Mensaje    Asunto: Tipos de datos entre Excel y Builder Responder citando

Directamente que yo sepa no se puede o al menos mirando la referencia no he encontrado nada que lo permita, aunque la referencia es tan grande que no puedo asegurar al 100% que no sea posible.

Aunque tienes otra solución, que aunque no es tan completa porque con varios tipos te dirá que es un string, pero quizás te sirva.

Teniendo en cuenta el ejemplo anterior:
http://213.96.83.30/areabuilder/ubb/Forum1/HTML/003364.html

podemos modificar esta parte que se ve en el:

  ...
  Variant vCelda = oHoja.OlePropertyGet( "Cells", fila, columna );
  StringGrid1->Cells[columna][fila] = vCelda.OlePropertyGet( "Value" );
...

del siguiente modo:

int nTipo = vCelda.OlePropertyGet("Value").Type();

devuelve un número de tipo que se corresponde con esta lista (copiado de la ayuda, método Type de Variant)

code:
Variant type  value	  Contents of variant
------------ ------ -------------------
varEmpty 0x0000 The variant is Unassigned.
varNull 0x0001 The variant is Null.
varSmallint 0x0002 16-bit signed integer (type short int)
varInteger 0x0003 32-bit signed integer (type int).
varSingle 0x0004 Single-precision floating-point value (type float)
varDouble 0x0005 Double-precision floating-point value (type double).
varCurrency 0x0006 Currency floating-point value (type Currency).
varDate 0x0007 Date and time value (type TDateTime).
varOleStr 0x0008 Reference to a dynamically allocated Unicode string.
varDispatch 0x0009 Reference to an OLE automation object
(an IDispatch interface pointer).
varError 0x000A Operating system error code.
varBoolean 0x000B 16-bit boolean (type WordBool).
varVariant 0x000C Indicates another Variant.
varUnknown 0x000D Reference to an unknown OLE object
(an IUnknown interface pointer).
varByte 0x0011 Indicates an unsigned char.
varString 0x0100 Reference to a dynamically allocated string
(type AnsiString).
varTypeMask 0x0FFF Indicates the type of each array element.
varArray 0x2000 Indicates a Variant array.
varByRef 0x4000 Indicates that the variant contains a reference
as opposed to a value.


Volver arriba
Mensaje    Asunto: Tipos de datos entre Excel y Builder Responder citando

_Leo, gracias!
Algo de eso estaba pensando pero pensé que quizá había alguna forma de obtener el tipo de datos desde la planilla (el tipo generico).
Muchas gracias de nuevo!
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.