Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-08-2004
Avatar de JFdez
JFdez JFdez is offline
Registrado
 
Registrado: jul 2004
Ubicación: Ciudad habana, Cuba
Posts: 5
Poder: 0
JFdez Va por buen camino
Angry Trabajando con DBComboBox

Holaaaa...
Tengo una duda quizás usted pueda ayudarme. Les explico ...
Trabajo con delphi6 y tengo una base de datos en Acces 2000 conectándome con ADO. Tengo asociado a un campo (tipo String y 1 carácter de tamaño) de la tabla un DBComboBox, supongamos que con los los items (1 - Técnico)
(2 - Estudiante)
(3 - Obrero)
pero lo que me propongo es lo siguiente ...
Quisiera que al desplazarme por los registro de esa tabla a través de un DBNavigator lo que me apareciera en el DBComboBox no fuese solo el
primer carácter (es decir el carácter guardado en la tabla) sino que el texto del items ...

por ejemplo :
si lo que tengo guardado es un 1, quisiera que me apareciera en el DBComboBox ( 1 - Técnico ) Es que me exigen obligatoriamente que ese campo contenga un solo caracter de tamaño.

En espera de su ayuda un amigo ...
Gracias..
Responder Con Cita
  #2  
Antiguo 03-08-2004
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
Una opción podría ser usar el evento OnGetText del campo que te permite alterar el valor que se muestra sin alterar el campo original.

// Saludos
Responder Con Cita
  #3  
Antiguo 03-08-2004
Avatar de Tino
Tino Tino is offline
Miembro
 
Registrado: may 2004
Posts: 40
Poder: 0
Tino Va por buen camino
Mejor un TDBLookupComboBox

Pues hacerlo, sin escribir código, de esta manera:
  1. Crea una tabla maestra con mínimo dos campos: código y descripción. En el 1er. campo iría 1, 2, 3, ... en el 2o. campo Técnico, Estudiante, Obrero,...
  2. Usa el compo TDBLookupComboBox en vez del TDBComboBox. Modifica sus propiedades: DataSource y DataField igual que con el TDBComboBox. ListSource a una nueva fuente de datos de la tabla maestra. KeyField el campo de referencia. ListField el campo "descripción" de la tabla maestra.
Es mejor que uses una tabla maestra que codificarlos en el programa porque si tuvieras que añadir una nueva categoria solo tendrías que añadir un nuevo registro, sin tener que volver a compilar.

Saludos.
__________________
El hombre que no lee no tiene ninguna ventaja sobre el que no sabe leer.

Para hacer una buena exposición hay que escribir más de lo que se va a decir, y luego decir más de lo que se escribió.
Responder Con Cita
  #4  
Antiguo 03-08-2004
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
Desde luego la opción de Tino es la ideal pero bueno, pensé que si no te dejaban modificar un campo chiquitito mucho menos te permitirían agregar toda una tabla.



// Saludos
Responder Con Cita
  #5  
Antiguo 05-08-2004
Avatar de JFdez
JFdez JFdez is offline
Registrado
 
Registrado: jul 2004
Ubicación: Ciudad habana, Cuba
Posts: 5
Poder: 0
JFdez Va por buen camino
Angry Acerca del OnGetText

SI me pudieras explicar mejor como hacerlo ... (OnGetText)
Ese procedimiento consta de dos variables una es DisplayText: Boolean, y la otra Text: String, pero no se como jugar con ellas ...

Muchas grasias Tino por tu respuesta pero Roman tiene razón

En espera de sus respuesta un servidor ..
grasias

Última edición por JFdez fecha: 05-08-2004 a las 16:02:11.
Responder Con Cita
  #6  
Antiguo 05-08-2004
Avatar de StartKill
StartKill StartKill is offline
Miembro
 
Registrado: ene 2004
Posts: 299
Poder: 21
StartKill Va por buen camino
Thumbs up

Holas,

Este es un pequeño ejemplo, en lo personal trabajo con query's pero debe ser lo mismo.

Código Delphi [-]
procedure TForm1.IBQuery1FCOD_PROFGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
  //  text:=ibquery1FCOD_PROF.AsString+'-'+ibquery1FDES_PROF.AsString;
  text:=sender.asString+'-'+ibquery1FDES_PROF.AsString;
end;

Espero te sirva,

your Friend

StartKill
Lima-Perú
Responder Con Cita
  #7  
Antiguo 05-08-2004
Avatar de JFdez
JFdez JFdez is offline
Registrado
 
Registrado: jul 2004
Ubicación: Ciudad habana, Cuba
Posts: 5
Poder: 0
JFdez Va por buen camino
Ahora si que se puso feo esto

Lo siento amigo pero a desir verdad ahora entiendo menos por favor AYUDENMEEEEEEEEE ...

Espero por su respuesta ....


grasias
Responder Con Cita
  #8  
Antiguo 05-08-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Hola.

No hace falta gritar tan alto.

Basta presionar F1 dentro del IDE.

Cita:
Empezado por delphi help
Occurs whenever the DisplayText or Text properties of the field are referenced.

type TFieldGetTextEvent = procedure(Sender: TField; var Text: string; DisplayText: Boolean) of object;
property OnGetText: TFieldGetTextEvent;

Description

Write an OnGetText handler to perform custom processing for the DisplayText and Text properties. Use OnGetText to format the Value of the field differently when it must be edited from the format used when simply displaying the value, or use OnGetText to display something other than the field’s value when it is displayed.

The Sender parameter is the field component. The Text parameter receives the formatted text that is used by the DisplayText or Text property. The DisplayText parameter indicates whether the text will be used for display purposes only, or whether the string will be used for editing purposes.

If there is no OnGetText handler, the value of the DisplayText and Text properties is simply the value of the AsString property.
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
  #9  
Antiguo 11-08-2004
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
JFdez:

Respecto de tu mensaje privado acerca del uso del evento OnGetText te comento que prefiero tratar los temas relacionados con los foros en los mismos foros a fin de que todos se beneficien de las preguntas y respuestas.

He releido el presente hilo y creo que la forma más elegante de resolver el problema es como atinadamente indicaba Tino .

Sin embargo, al parecer no puedes agregar tablas. Pero puedes entonces usar una tabla en memoria con un ClientDataSet.

El uso es muy sencillo. Durante el diseño abres el editor de definiciones de campos (propiedad FieldDefs del ClientDataSet) y añades dos, una para el campo código y otra para el campo descripción). Una vez hecho esto abres el menú contextual de la componente ClientDataSet y escoges la opción "Create DataSet".

Ahora simplemente tienes que llenar los registros, por ejemplo en el evento OnCreate del formulario o DataModule donde coloques la componente. Agregas registros igual que con otros DataSets, por ejemplo:

Código Delphi [-]
ClientDataSet.Append;
ClientDataSet['codigo'] := 1;
ClientDataSet['descripcion'] := 'Técnico';

ClientDataSet.Append;
ClientDataSet['codigo'] := 2;
ClientDataSet['descripcion'] := 'Estudiante';

ClientDataSet.Append;
ClientDataSet['codigo'] := 2;
ClientDataSet['descripcion'] := 'Obrero';

Ya con esto, utilizas la técnica que te indicó Tino.

Creo que esta es una mejor opción que la de manipular el evento OnGetText ya que tu sistema estará diseñado como si las tablas estuvieran bien diseñadas (no lo están porque justamente falta la tabla con las descripciones) y estará preparado para el momento en que se te permita agregar físicamente la tabla requerida.

// Saludos
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


La franja horaria es GMT +2. Ahora son las 04:51:15.


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