Saludos Jaime:
Jaime Fco. Balli escribió:
> Gracias a ambos por el apoyo.
>
> El primer dataset controla la base de datos principal, en este caso para
> ALTAS, pero obviamente lo hará para modificaciones y en efecto tiene un
> campo "CONCEPTO", pero es la segunda base de datos (es decir el 2º dataset)
> el que controla la base secundaria que solo maneja un campo llamado Concepto
> el que requerire cierto mantenimiento. Mi idea es precisamente tomar el dato
> de concepto de la segunda base de datos para que el usuario no tenga que
> cargar el dato en la primera y solo lo escoja de un combobox. Esto es algo
> que hacia en clipper y ahora lo quiero desarrollar para Xailer nada mas que
> sigo estando muy "verde". Supuse que iba a ser más facil.
>
Y es muy fácil solo tienes que tener en cuenta que todos los campos del
formulario asociados al primer DataSet tienen que estar asociados él,
por lo tanto si empleas DBEdit o TDBComboBox todos tiene como DATASET el
primero, de lo que se trata es que en el momento de añadir o editar el
TDBComboBox tenga ya unos valores determinados y eso lo que consigues
haciendo que en su evento OnCreate se asocie al segundo DATASET así
cuando grabes el registro cogerá los datos que tenga en todos los
campos y por supuesto cogerá lo que tenga en el TDBComboBox pero no todo
lo que contenga sino solo lo que hayas seleccionado.
Es por eso que la asociación del valor del TDBComboBox se hace con un
método aparte, y te vuelvo a decir lo que ya te dije mientras no entre
en Alta o edición no mostrará todos los valores el TDBComboBox sino solo
el que tenga en ese momento el primer DATASET, ya que se comportará como
si estuvieras navegando por la base de datos del primer DATASET.
Ejemplo:
METHOD N_FedCreate( oSender ) CLASS TFormComunes1
IF ::oDataSetFed:lOpen
*
** Aquí asocio el TDBComboBox a el número de una asociación
deportiva y su nombre
** pero en las propiedades del campo del DATASET1 solo le digo que
tiene una longitud de 3 y así aun muestre
** una longitud mayor para seleccionar solo coge la longitud de
N_FED que es lo que me interesa.
** El segundo DATASET se llama oDataSetFed y oSender hacer
referencia al Objeto que contiene el campo del primer DATASET
oSender:aItems := ::oDataSetFed:SaveToArray( {|Self| ::N_FED +" - "+ ;
Trim( ::NOMB_FED ) } )
*
ENDIF
RETURN Nil
Con respecto a lo que dices que ya tendría que estar cargado los
valores, te respondo que no tiene lógica ya que los valores de un
TCOMBOBOX o de un TDBCOMBOBOX se cargan en su propiedad aItems y por lo
tanto mientras no cargues dicho array no tiene nada mas que el valor del
primer campo.
Te recomiendo que cargues y estudies el ejemplo
C:Xailer18SamplesDataControlsDBFData5 la ruta la cambias por la en
la que tú tengas instalado Xailer.
José Ramón Castro.
> Saludos
>
> Jaime
> "José Ramón Castro" <
jrcpoli@terra.es> escribió en el mensaje
> news:47a86204$[email=
1@ozsrv2.ozlan.local...]
1@ozsrv2.ozlan.local...[/email]
>
>> Jaime Balli escribió:
>>
>>> Tengo en un formulario de captura de datos 2 datasets con sus respectivos
>>> datasource, el primero es la base de datos principal, aqui no hay
>>> problema ya que todo funcionan muy bien. El problema lo tengo en el
>>> segundo dataset que contiene un TDBcombo box que contiene un solo campo
>>> "CONCEPTO" que se encuentra en una base de datos secundaria a la cual se
>>> le tiene que dar mantenimiento ya que los conceptos cambian. He logrado
>>> conectar el segundo dataset a esa base secundaria y el TDBcombo box al
>>> campo concepto pero cuando lo compilo solo me aparece el primer registro
>>> de la base "CONCEPTO" pero no los siguientes (y hay como 15). Mi idea es
>>> facilitar la carga de datos dandole al usuario la opción de solo tomarlos
>>> del TDB combo box.
>>>
>>> ¿Que estoy haciendo mal, o que me falta hacer?, cualquier ayuda seria
>>> agradecida.
>>>
>>> Saludos
>>>
>>> Jaime
>>>
>> Saludos:
>>
>> He estado volviendo a leer tu pregunta no tengo claro si la base sobre
>> la que quieres hacer las altas o editar es la del primer DataSet y
>> contiene un campo que tiene el mismo nombre que el segundo DataSet o es el
>> segundo DataSet sobre el que quieres hacer las altas o las modificaciones,
>> en cualquier caso para que los campos de la base sobre las que quieras
>> hacer las modificaciones sean accesibles el DataSet correspondiente tiene
>> que estar en estado de Alta (AddNew) o en Edicción (Edit) sino los campos
>> del DataSet no son nada más que visibles sobre el registro que tengas
>> seleccionado y por lo tanto el ComboBox no se despliega.
>>
>> Si las Altas o Edicción la haces sobre el primer DataSet y contiene un
>> campo que se llama concepto que está en el el segundo DataSet, con las
>> explicaciones de los correos anteriores no tienes que tener problemas
>> siempre que el primer DataSet esté en estado de Alta o Edicción.
>>
>> José Ramón Castro.
>>
>>
>
>