Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-10-2006
Marcela Marcela is offline
Miembro
 
Registrado: may 2003
Posts: 30
Poder: 0
Marcela Va por buen camino
Red face Convertir State a tipo String

Hola a todos, requiero que el estado de una tabla (Tabla.State) quede guardado en un campo de tipo string para posteriormente insertarlo en una tabla que realice en Sql donde el campo "Estado" es de tipo varchar(20).

La idea es que en el campo me quede guardado dsBrowse o dsInsert o dsEdit o ds....)

Como hago para poder realizar esto????,

La otra opción podria estar en definir el campo donde va quedar este valor de otra forma (otro tipo que no sea varchar), para que pueda guardarlo directamente, pero no se cual.

Gracias por su colaboracion.
Responder Con Cita
  #2  
Antiguo 05-10-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Una opción:

En el archivo DB.PAS está definido este tipo de datos para los estados del DataSet

Código Delphi [-]
  TDataSetState = (dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey,
    dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue, dsBlockRead,
    dsInternalCalc, dsOpening);

Puedes crear un arreglo que contenga los estados en cadenas de caracteres, pero respetando el mismo orden en el que están definidos



Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
  const MyArray:array[0..12] of String = ('dsInactive', 'dsBrowse', 'dsEdit',
   'dsInsert', 'dsSetKey', 'dsCalcFields', 'dsFilter', 'dsNewValue', 'dsOldValue',
   'dsCurValue', 'dsBlockRead', 'dsInternalCalc', 'dsOpening');

begin
  //Ejemplo de como usarlo
  ShowMessage(MyArray[Ord(IBQuery1.State)]);
end;

Saludos
Responder Con Cita
  #3  
Antiguo 05-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Para seguir con la idea de Hector (sin meterse a los abismos de RTTI) podes declarar directamente un vector sobre el tipo enumerado:

Código Delphi [-]
function StateToStr(AState: TDataSetState): string;

  const StateDesc:array[dsInactive..dsOpening] of String = 
  ('dsInactive', 'dsBrowse', 'dsEdit',
   'dsInsert', 'dsSetKey', 'dsCalcFields', 'dsFilter', 'dsNewValue', 'dsOldValue',
   'dsCurValue', 'dsBlockRead', 'dsInternalCalc', 'dsOpening');

begin
  Result := StateDesc[AState];
end;

Puede que no compile, pues no lo he probado, pero dejo la idea.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 05-10-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Por otra parte, la instrucción Ord(Query1.State) te devuelve el índice o la posición de cada elemento dentro del arreglo, otra opción es guardar ese índice, es decir, un entero tomando en cuenta lo siguiente

[0] dsInactive
[1] dsBrowse
[2] dsEdit
[3] dsInsert
...


Saludos
Responder Con Cita
  #5  
Antiguo 05-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por jachguate
sin meterse a los abismos de RTTI
Bueno, no es que esté muy profundo

Código Delphi [-]
uses TypInfo;

function RTTI_StateToStr(State: TDataSetState): String;
begin
  Result := TypInfo.GetEnumName(TypeInfo(TDataSetState), Integer(State));
end;

Por otra parte, un tipo enumerado como lo es TDataSetState no es más que un escalar que puede guardarse como entero:

Integer(Table.State)

y recuperarse con el moldeo inverso:

TDataSetState(3)

En otras palabras, ¿para qué guardar el string, que ocupará más espacio? Mejor cambia el tipo de datos a INTEGER.

Eso sí, me pica la curiosidad de por qué alguien querría guardar este dato en una tabla?

Agrego

Por cierto, en la versió jachguatiana, el arreglo

Código Delphi [-]
const StateDesc:array[dsInactive..dsOpening] of String = ...

también puede ponerse así:

Código Delphi [-]
const StateDesc:array[TDataSetState] of String = ...


// Saludos

Última edición por roman fecha: 05-10-2006 a las 03:27:22.
Responder Con Cita
  #6  
Antiguo 05-10-2006
Marcela Marcela is offline
Miembro
 
Registrado: may 2003
Posts: 30
Poder: 0
Marcela Va por buen camino
Listolis

Listo muchas gracias a todos por su colaboracion
Responder Con Cita
  #7  
Antiguo 05-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por roman
Por cierto, en la versió jachguatiana, el arreglo
:eek

nunca había oido cosa semejante...
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #8  
Antiguo 05-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Oh! ¿Quizá debí decir jachapina?



// Saludos
Responder Con Cita
  #9  
Antiguo 05-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
muy buena!!!
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
convertir string jsanchez Varios 3 31-07-2006 22:23:19
Convertir de String a un Array albertoP Internet 3 27-04-2006 22:20:50
Convertir un String en Pchart eyscom Varios 1 28-03-2004 15:51:30
Convertir campo tipo number de oracle a integer o string Sóstrato OOP 1 13-06-2003 09:18:55
Convertir un string a puntero jnrico Varios 1 27-05-2003 16:29:47


La franja horaria es GMT +2. Ahora son las 07:44:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi