Ir al contenido



Foto

[RESUELTO] Uso combobox


  • Por favor identifícate para responder
17 respuestas en este tema

#1 RPeguero

RPeguero

    Member

  • Miembros
  • PipPip
  • 26 mensajes

Escrito 10 noviembre 2010 - 09:37

Hola buenas a todos,  recien empiezo a trabajar con delphi 7 y access. En un form quiero insertar los datos de una tabla y para introducir los datos en el campo Origen, introduzco un combobox, el cual tiene en su propiedad Items: Deudor, Acreedor. el caso es que no me guarda en la tabla los datos del combobox. Que estoy haciendo mal o que no estoy haciendo??
  • 0

#2 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 10 noviembre 2010 - 09:39

Hola amigo RPeguero !!!

Bienvenido a la comunidad DelphiAccess (y)

Amigo una pregunta, tu componente es un ComboBox o un DBComboBox ???  ^o|

Saludox ! :)
  • 0

#3 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 10 noviembre 2010 - 09:40

Preguntas adicionales  *-) :

Con qué BD estás trabajando y con qué componentes te conectas a ella ? :)

Saludox de nuevo ! :)
  • 0

#4 RPeguero

RPeguero

    Member

  • Miembros
  • PipPip
  • 26 mensajes

Escrito 10 noviembre 2010 - 09:47

Gracias por responder Fenareth, uso un combobox. Estoy trabajando con Access y me conecto mediante ADO.
  • 0

#5 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 10 noviembre 2010 - 09:55

Ok amigo ! (perdón ya habías dicho lo de Access y estás en el foro de Access, supongo que debí suponer que trabajas con Access :D  *-))

Mira, puedes grabar el valor seleccionado de tu ComboBox de esta manera: suponiendo que tienes algún botón de Guardar:



delphi
  1.   Tabla.FieldByName('CAMPO').AsString := Combobox1.Text;



Claro, ésto después de que has puesto tu Tabla en modo de edición o inserción y antes de hacer el Post de la misma...

Otra recomendación es que uses un DBComboBox de tal manera que puedas asociarlo automáticamente a tu BD y a tu campo y que al momento de hacer el Post de la tabla, automáticamente guarde el valor que tiene....

Para eso tendrías que utilizar un componente DataSource en cuya propiedad DataSet colocarías el nombre del componente ADOTable con el que controlas la tabla. Después ligarías el DataSource con el DBComboBox mediante su propiedad DataSource y en la propiedad DataField el nombre del campo que quieras almacenar....

Espero haber sido clara... si no, no dudes en seguir preguntando ;) (y)

Saludox ! :)


  • 0

#6 RPeguero

RPeguero

    Member

  • Miembros
  • PipPip
  • 26 mensajes

Escrito 10 noviembre 2010 - 10:10

Gracias de nuevo. Voy a probar y en breve te hago saber.
  • 0

#7 RPeguero

RPeguero

    Member

  • Miembros
  • PipPip
  • 26 mensajes

Escrito 10 noviembre 2010 - 10:35

Fenareth, utilizo el componente dbnavigator, donde coloco el codigo que me dices?
  • 0

#8 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 10 noviembre 2010 - 10:45

Fenareth, utilizo el componente dbnavigator, donde coloco el codigo que me dices?


Utilizas un AdoTable amigo ?... si es así, contiene un avento BeforePost... ahí sería una buena idea (y)

Saludox ! :)
  • 0

#9 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 10 noviembre 2010 - 10:46

Mmmmm, pensando lo del DbNavigator, si deseas volver a visualizar el registro, éste no te traerá el valor correspondiente guardado en la Tabla en el ComboBox.... tendrías que generar código adicional para ello....

Insisto en el uso del DBComboBox ^o|

Saludox ! :)
  • 0

#10 RPeguero

RPeguero

    Member

  • Miembros
  • PipPip
  • 26 mensajes

Escrito 10 noviembre 2010 - 11:03

Gracias Fenareth, funciono!!!!!!!!!!!!!!!!. Solo que al recorrer los registros con el DBNavigator, el campo del combobox queda fijo, con la ultima opcion guardada.
  • 0

#11 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 10 noviembre 2010 - 11:07

Gracias Fenareth, funciono!!!!!!!!!!!!!!!!. Solo que al recorrer los registros con el DBNavigator, el campo del combobox queda fijo, con la ultima opcion guardada.


Eso se arregla como te lo ha dicho varias veces cambiandolo por un DbComboBox
  • 0

#12 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 10 noviembre 2010 - 11:21

Jejejejeje, te lo dije amigo....

Aquí lo que necesitas es un poco más de código (ya que veo que te rehusas a utilizar el DBComboBox :p :D :D)...

En el evento AfterScroll de tu Tabla manda llamar el valor almacenado para que lo muestre correctamente... Haremos exactamente lo contrario que la vez pasada, leeremos de la Tabla hacia el Combobox



delphi
  1.     ComboBox1.Text := Tabla.FieldByName('CAMPO').AsString;



Saludox ! :)

P.D. Este es un ejemplo excelente de cuando no se usan los componentes adecuados y sin razón amigo, jejeje, por último, te recomiendo que le des un vistazo al DBComboBox y verás todos los problemas que te evitas (y)

  • 0

#13 RPeguero

RPeguero

    Member

  • Miembros
  • PipPip
  • 26 mensajes

Escrito 10 noviembre 2010 - 11:31

Otra vez gracias Fenareth sigue funcionando!!!!!, gracias tambien Eduarcol.
Aparte de este empleo mayor de codigo, que otra desventaja tendria el uso en condiciones similares del combobox ante el dbcombobox?
  • 0

#14 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 10 noviembre 2010 - 11:41

Sobre todo es el uso innecesario de código.... aquí tal vez no lo notas mucho porque hicimos dos líneas de código extras y realmente no es tanto problema....

Pero qué sucedería si necesitas otras condiciones, mmm, por ejemplo que debas mostrar los datos de tu Tabla pero sin permitir que sean editables ???... en ese caso tienes que manejar tu Tabla para hacerla de sólo lectura y aparte el manejo del ComboBox independientemente....

Ahora, tú sólo usas un ComboBox, pero todo el trabajo se multiplica por cada uno que manejes...

Y pues, todo eso se evita utilizando el componente de control de datos correspondiente....

Imagina que en vez de DBEdits, que supongo estás usando, utilizaras Edits  :|  8o|, sería un trabajo innecesario estar controlando los datos de cada uno de ellos "manualmente"...

Otro punto... tal vez tu código no tenga muchas líneas por ahora, pero mientras se vaya incrementando, el evitarte la escritura de código innecesario, no suena tan mal :)

Saludox amigo ! :)

  • 0

#15 RPeguero

RPeguero

    Member

  • Miembros
  • PipPip
  • 26 mensajes

Escrito 10 noviembre 2010 - 11:46

Mil gracias, procedere entonces a cambiar el componente.
  • 0

#16 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 10 noviembre 2010 - 11:48

Excelente amigo !!! (y)

Qué opinas de que establezcamos este hilo como [RESUELTO] ???... para ello puedes ir a tu primer mensaje y editándolo, colocarle el prefijo de [RESUELTO]...

Sólo si tu lo consideras oportuno (y) ;)

Saludox ! :)
  • 0

#17 RPeguero

RPeguero

    Member

  • Miembros
  • PipPip
  • 26 mensajes

Escrito 10 noviembre 2010 - 11:57

Excelente, luego vuelvo con otras inquietudes.
  • 0

#18 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 10 noviembre 2010 - 12:08

Excelente, luego vuelvo con otras inquietudes.


Excelente !!! (y)... por aquí te esperamos

Saludox ! :)
  • 0