PDA

Ver la Versión Completa : ingresar datos de campos a dbcombobox


pabloloustau
09-09-2010, 20:58:13
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
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
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
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
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
...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
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
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.