In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Pregunta sobre DataSets

Foro de Xailer profesional en español
Responder
jfballi
Mensajes: 12
Registrado: Jue Ene 31, 2008 9:31 pm

Pregunta sobre DataSets

Mensaje por jfballi »

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
Angel
Mensajes: 135
Registrado: Mié Mar 21, 2007 1:11 pm

Pregunta sobre DataSets

Mensaje por Angel »

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.
En el evento OnCreate de dicho TDBComboBox podrí­as volcar el contenido
del campo concepto a un array mediante:
TDBFDataset:SaveToArray({"CONCEPTO"})
Después, bastarí­a con asignar a TDBCombobox:aItems el contenido de dicho
array (suponiendo que estes trabajando con bases de datos .DBF)
Corrijanme si me equivoco.
jrcpoli
Mensajes: 240
Registrado: Mié Oct 25, 2006 8:55 pm

Pregunta sobre DataSets

Mensaje por jrcpoli »

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:
1º Selecciona el ComboBox y en las propiedades del IDE pinchas en
Eventos seleccionado el evento OnCreate doble click y dentro del método
que se genera pones más o menos este código
METHOD ComboBoxCreate( oSender ) CLASS TFormEnceste
IF ::NombredelDataSet:lOpen .AND. ::NombredelDataSet:RecCount() > 0
*
** Rellena el array aItems con los datos del campo CONCEPTO
oSender:aItems := ::NombredelDataSet:SaveToArray( {|Self|
::CONCEPTO} )
*
** Selecciona el primer elemento del ComboBox
IF Len(oSender:aItems) > 0
oSender:nIndex := 1
ENDIF
ENDIF
RETURN Nil
José Ramón Castro.
jrcpoli
Mensajes: 240
Registrado: Mié Oct 25, 2006 8:55 pm

Pregunta sobre DataSets

Mensaje por jrcpoli »

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.
José Ramón Castro.
jfballi
Mensajes: 12
Registrado: Jue Ene 31, 2008 9:31 pm

Pregunta sobre DataSets

Mensaje por jfballi »

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.
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.
>
jfballi
Mensajes: 12
Registrado: Jue Ene 31, 2008 9:31 pm

Pregunta sobre DataSets

Mensaje por jfballi »

Angel el método que me mencionas, por lo que entiendo funciona bien para
llenar un array de una base de datos a un Combobox común y corriente. En
este caso estoy usando un TDBCombobox que en teoría ya esta conectado a la
base de datos y deberiera tomar los datos directamente de la misma. No es
asi?
Jaime
"Ángel Fernández" <angel@agelso.com> escribió en el mensaje
news:[email=47a81be1@ozsrv2.ozlan.local...]47a81be1@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.
>
> En el evento OnCreate de dicho TDBComboBox podrías volcar el contenido del
> campo concepto a un array mediante:
> TDBFDataset:SaveToArray({"CONCEPTO"})
> Después, bastaría con asignar a TDBCombobox:aItems el contenido de dicho
> array (suponiendo que estes trabajando con bases de datos .DBF)
>
> Corrijanme si me equivoco.
>
jrcpoli
Mensajes: 240
Registrado: Mié Oct 25, 2006 8:55 pm

Pregunta sobre DataSets

Mensaje por jrcpoli »

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.
>>
>>
>
>
José Ramón Castro.
Angel
Mensajes: 135
Registrado: Mié Mar 21, 2007 1:11 pm

Pregunta sobre DataSets

Mensaje por Angel »

Jaime Fco. Balli escribió:
> Angel el método que me mencionas, por lo que entiendo funciona bien para
> llenar un array de una base de datos a un Combobox común y corriente. En
> este caso estoy usando un TDBCombobox que en teorí­a ya esta conectado a la
> base de datos y deberiera tomar los datos directamente de la misma. No es
> asi?
>
> Jaime
Creo que ya se donde esta el problema. Supongo que entendiste que al
usar un TDBCombobox y asignarle un dataset, este tomarí­a automáticamente
los valores existentes en dicho dataset y te dejarí­a seleccionar uno,
pero no es éste el funcionamiento.
El número de elementos del combobox tienes que asignarselos manualmente,
o bien desde el IDE o bien modificando la propiedad aItems. El valor que
se guardará en la base de datos, será el elemento activo en el momento
en el que se guarden los datos (TDataset:Save)
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9442
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Pregunta sobre DataSets

Mensaje por ignacio »

Jaime,
En el caso del TDBListBox y TDBComboBox es importante tener en cuenta que
tan sólo se enlace con el dataset el valor seleccionado de la lista y en
ningún caso la lista como tal. Es responsabilidad del usuario alimentar la
lista en cualqueir caso con el método que más le convenga.
Un saludo,
Ignacio Ortiz de Zúñiga
[Soporte de Xailer]
"Jaime Balli" <jfballi@gmail.com> escribió en el mensaje
news:[email=47a7ce19@ozsrv2.ozlan.local...]47a7ce19@ozsrv2.ozlan.local...[/email]
> 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
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9442
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Pregunta sobre DataSets

Mensaje por ignacio »

Jaime,
En el caso del TDBListBox y TDBComboBox es importante tener en cuenta que
tan sólo se enlace con el dataset el valor seleccionado de la lista y en
ningún caso la lista como tal. Es responsabilidad del usuario alimentar la
lista en cualqueir caso con el método que más le convenga.
Un saludo,
Ignacio Ortiz de Zúñiga
[Soporte de Xailer]
"Jaime Balli" <jfballi@gmail.com> escribió en el mensaje
news:[email=47a7ce19@ozsrv2.ozlan.local...]47a7ce19@ozsrv2.ozlan.local...[/email]
> 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
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
jfballi
Mensajes: 12
Registrado: Jue Ene 31, 2008 9:31 pm

Pregunta sobre DataSets

Mensaje por jfballi »

Gracias a todos por sus respuesta. Trabajre en el problema.
Saludos
Jaime
"Jaime Balli" <jfballi@gmail.com> escribió en el mensaje
news:[email=47a7ce19@ozsrv2.ozlan.local...]47a7ce19@ozsrv2.ozlan.local...[/email]
> 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
Responder