Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   ingresar datos de campos a dbcombobox (https://www.clubdelphi.com/foros/showthread.php?t=69799)

pabloloustau 09-09-2010 20:58:13

ingresar datos de campos a dbcombobox
 
hola a todos! tengo una base de datos access coneccion odbc, mi tabla es sobre medicamentos. una columna es nombre_medicamento Y tengo 5 columnas para las dosis. dosis1, dosis2, etc. que serian valores que utilizo como rango de dosis. como puedo ingresar esos valores a un dbcombobox?

microbiano 09-09-2010 21:21:39

hola
 
no entiendo bien tu pregunta que es lo que quieres hacer juntas todos esos registros en un combo?,

yo utilizo este codigo para gardar registros de una base de datos en un Tcombobox, concatenando varios campos, espero te pueda ayudar
Código Delphi [-]
procedure carga_claves();
var wlicitacion: string;
begin
wlicitacion:=trim(fcaptura.txtlicitacion.Text);
if wlicitacion<>'' then
 begin
  with fmodulo.Qry_gral do
   begin
    sql.Clear;
    sql.add('select licitacion,gpo,gen,esp,dif,var from requerimiento');
    sql.add('where licitacion=:licitacion');
    sql.add('group by licitacion,gpo,gen,esp,dif,var');
    parameters.ParamByName('licitacion').Value:=trim(wlicitacion);
    try
      Open;
      fcaptura.cb_clave.Clear;
       if not Fmodulo.Qry_gral.IsEmpty then
        begin
         while not  fmodulo.Qry_Gral.Eof do
          begin
           fcaptura.cb_clave.Items.Add((fieldByname('gpo').AsString)+(fieldByname('gen').AsString) + (fieldByname('esp').AsString) + (fieldByname('dif').AsString) + (fieldByname('var').AsString));
           next;
          end;
        end;
     except
      on E:EOleException do
       begin
        // error
        MessageDlg(Format('Error: %s    Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
       end;
     end;
   end;
 end;
end;

Neftali [Germán.Estévez] 10-09-2010 11:18:48

Cita:

Empezado por pabloloustau (Mensaje 375896)
Y tengo 5 columnas para las dosis. dosis1, dosis2, etc. que serian valores que utilizo como rango de dosis. como puedo ingresar esos valores a un dbcombobox?

DBcomboBox está pensado para mostrar los valores de una columna (5), pero no los valores de 5 columnas.

Un par de recomendaciones si te es posible modificar cosas (si estás a tiempo).
(1) Para acceder a MSAccess es más eficiente y rápido acceder utilizando ADO.
(2) El lugar de 5 columnas para las dosis, utiliza una tabla relacionada de dosis. De esta forma "normalizas" el diseño de la Base de Datos.

Si te es posible hacer el segundo cambio, podrás utlizar el dbCombo, si no, lo más sencillo creo que es, utilizar un combobox normal (sin BD) y rellenar los valores a mano y luego grabar el valor en el campo a mano también.

pabloloustau 11-09-2010 04:49:16

Cita:

Empezado por Neftali (Mensaje 375968)
DBcomboBox está pensado para mostrar los valores de una columna (5), pero no los valores de 5 columnas.

Un par de recomendaciones si te es posible modificar cosas (si estás a tiempo).
(1) Para acceder a MSAccess es más eficiente y rápido acceder utilizando ADO.
(2) El lugar de 5 columnas para las dosis, utiliza una tabla relacionada de dosis. De esta forma "normalizas" el diseño de la Base de Datos.

Si te es posible hacer el segundo cambio, podrás utlizar el dbCombo, si no, lo más sencillo creo que es, utilizar un combobox normal (sin BD) y rellenar los valores a mano y luego grabar el valor en el campo a mano también.

si puedo modificar a gusto porque recien la estoy creando, pense en la posibilidad que me decis de las tablas relacionadas, el problema es que esa opcion me serviria en el de que el rango de dosis sea el mismo para todos los medicamentos, pero no es asi. cada medicamento tiene un rango de dosis en particular. asi que lo unico que se me ocurrio fue crear varias columnas de dosis para cada registro. me doy cuenta que no es muy funcional porque para mostrar los datos los hago por medio de dbtext no visibles para cada dosis y luego los paso a un combobox comun.

Neftali [Germán.Estévez] 13-09-2010 10:53:54

Cita:

Empezado por pabloloustau (Mensaje 376060)
...pense en la posibilidad que me decis de las tablas relacionadas, el problema es que esa opcion me serviria en el de que el rango de dosis sea el mismo para todos los medicamentos, pero no es asi.

Al contrario.
Con más razón debes usar tablas relacionadas si el número de dosis no es fijo, como tú dices. Imagina que dentro de unos meses aparece un medicamente con 6 dosis. ¿Qué pasaría con tu tabla que tiene 5 campos para las dosis?

Al tenerlo relacionado y las dosis en otra tabla, cada registro de medicamente tendrá tantos registros relacionados como dosis, sin limitación.

pabloloustau 14-09-2010 07:58:04

Cita:

Empezado por Neftali (Mensaje 376173)
Al contrario.
Con más razón debes usar tablas relacionadas si el número de dosis no es fijo, como tú dices. Imagina que dentro de unos meses aparece un medicamente con 6 dosis. ¿Qué pasaría con tu tabla que tiene 5 campos para las dosis?

Al tenerlo relacionado y las dosis en otra tabla, cada registro de medicamente tendrá tantos registros relacionados como dosis, sin limitación.

gracias neftali, voy a trabajar en lo que me decis a ver que sale, no sera mucho hacer una tabla relacionada de dosis para cada registro de medicamento??

Neftali [Germán.Estévez] 14-09-2010 09:45:39

Cita:

Empezado por pabloloustau (Mensaje 376332)
no sera mucho hacer una tabla relacionada de dosis para cada registro de medicamento??

Creo que es lo más correcto y lo que te va a dar menos problemas a la larga; Tener 2 tablas, una de medicamenteos y otra de dosis.

MEDICAMENTOS
----------------
IDMed
Nombre
Descripcion
...


DOSIS
----------------
IDDosis
IDMed
cantidad
...


Ahora mismo no se si las dosis son algo estandard y está claramente definido o más bien algo bastante libre; Según como sea la tabla de dosis y los campos (e información) que contenga también podría ser un diseño M-N en lñugar de un 1-N.


La franja horaria es GMT +2. Ahora son las 01:42:19.

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