PDA

Ver la Versión Completa : DBComboBox - JvDBComboBox XE8


BlueSteel
20-02-2018, 19:03:24
Hola amigos,

tengo un problema con un viejo codigo.

Resulta que ya sea a un ComboBox o JVDBComboBox le paso el contenido de una tabla desde SQL en la cual hay 2 campos:
- Id_TipoSocio
- TSoc_Detalle

En el Sistema me muestra lo que contiene el campo TSoc_Detalle.

Necesito capturar el dato que tiene el campo Id_TipoSocio

en D7 lo realizaba de la siguiente forma


ShowMessage(DM_Datos.DS_Tipo['Id_TipSocio']);


En XE8 me genera un error,

[dcc32 Error] frmCreaActSocios.pas(142): E2010 Incompatible types: 'Integer' and 'string'

prove con ShowMessage(sTip.ListSettings.KeyField);, pero me nuestra el nombre del Campo y no el contenido

ecfisa
20-02-2018, 19:12:39
Hola.
Hola amigos,

tengo un problema con un viejo codigo.

Resulta que ya sea a un ComboBox o JVDBComboBox le paso el contenido de una tabla desde SQL en la cual hay 2 campos:
- Id_TipoSocio
- TSoc_Detalle

En el Sistema me muestra lo que contiene el campo TSoc_Detalle.

Necesito capturar el dato que tiene el campo Id_TipoSocio

en D7 lo realizaba de la siguiente forma


ShowMessage(DM_Datos.DS_Tipo['Id_TipSocio']);




Intenta con:

DM_Datos.DS_Tipo.FieldByName('Id_TipSocio').AsInteger ... // o AsString, Value, etc.


Saludos :)

BlueSteel
21-02-2018, 12:49:01
Hola.
Intenta con:

DM_Datos.DS_Tipo.FieldByName('Id_TipSocio').AsInteger ... // o AsString, Value, etc.


Saludos :)


Hola, probé lo que indicaste, pero tampoco funciona... es mas, ni siquira permite agregar el tipo de dato despues del parentesis... :confused:

ecfisa
21-02-2018, 14:46:31
Hola.

¿ Que componente es "DS_Tipo" ?

Saludos :)

BlueSteel
21-02-2018, 21:41:18
Hola.

¿ Que componente es "DS_Tipo" ?

Saludos :)

es de tipo DataSource -

MD_Datos : Formulario de tipo DataModule
DS_Tipo : Componente DataSource
AQ_Tipo: Componente AdoQuerry (enlazado a DS_Tipo)

Lo raro, es que así lo realizaba con D7

Salu2

ecfisa
21-02-2018, 22:02:02
Hola.

Ah...es que para acceder al campo 'Id_TipSocio' necesitas usar el descendiente de TDataSet (AQ_Tipo), y no el TDataSource, v. gr.:

DM_Datos.AQ_Tipo.FieldByName('Id_TipSocio').Value;
// o también
DM_Datos.AQ_Tipo[0].AsString; // si la posición del campo en la tabla es '0'
// o también
DM_Datos.AQ_Tipo.FindField('Id_TipSocio').AsString;
// o por el nombre del campo persistente (si lo creaste)
DM_Datos.AQ_TipoId_TipSocio.Value; //


Saludos :)

BlueSteel
22-02-2018, 13:20:19
Hola...

gracias por tu ayuda...

solo estos 2 codigos fueron validos y funcionan, pero aqui tengo otro problema

En el DBComboBox existen 4 registros... independiente de cualquier registro que selecciones, ambas sentencias me devuelven 1

ShowMessage(DM_Datos.AQ_Tipo.FieldByName('Id_TipSocio').Value);
ShowMessage(DM_Datos.AQ_Tipo.FindField('Id_TipSocio').AsString);

BlueSteel
22-02-2018, 13:29:32
Hola...

gracias por tu ayuda...

solo estos 2 codigos fueron validos y funcionan, pero aqui tengo otro problema

En el DBComboBox existen 4 registros... independiente de cualquier registro que selecciones, ambas sentencias me devuelven 1

ShowMessage(DM_Datos.AQ_Tipo.FieldByName('Id_TipSocio').Value);
ShowMessage(DM_Datos.AQ_Tipo.FindField('Id_TipSocio').AsString);


Cambie el componente a un DBLookupCombo y ahora si funciona...

ecfisa
22-02-2018, 14:59:10
Hola.
Cambie el componente a un DBLookupCombo y ahora si funciona...
^\||/^\||/^\||/