PDA

Ver la Versión Completa : Multiplicando el resultado de un ComboBox


Camilo
06-12-2007, 16:23:18
Hola Amigos:

Necesito su ayuda en el siguiente tema:
Tengo una Tabla (Table1) con un campo (Campo1) de tipo Currency.
Tengo en un Form un ComboBox1 y sus items son los 30 dias del mes (1,2,3,4,5...).
Necesito que al dal Click a cualquiera de los numeros del ComboBox; este numero (el Seleccionado) se multiplique por el valor del Campo1 de la Tabla1 que es currency. Y que a su vez me refleje el resultado en un DbEdit1.

Trabajo D-7 Paradox.

Muchas gracias por su calificado aporte.

enecumene
06-12-2007, 16:56:34
A ver:

DBEdit1.Text := Tabla1.fields[0].asCurrency * float(ComboBox1.Text);


lo puedes poner en los eventos OnClick o OnChange del ComboBox.

PD. Lo hice sin delphi en mano puede no estar correcto.

Saludos.

jhonny
06-12-2007, 17:00:15
Supongo que el DBEdit1 esta conectado a un Campo2, entonces la cosa quedaria asi en el OnClik del ComboBox:


Table1.Edit;
Table1.FieldByName('Campo2').AsFloat := StrToInt(ComboBox.Items[ComboBox.ItemIndex]) * Table1.FieldByName('Campo1').AsFloat;
Table1.Post;


Espero te sirva ;).

jhonny
06-12-2007, 17:03:03
Que raro que luego de 36 minutos del primer mensaje, coloquemos este mensaje tan seguido :D.

Camilo
06-12-2007, 17:07:27
Muchachos mil gracias por sus siempre buenas intenciones y aportes; en ambos casos me sale el siguiente error:

[Error] Unit29.pas(452): Incompatible types: 'String' and 'Extended'
Gracias

jhonny
06-12-2007, 17:13:05
Muchachos mil gracias por sus siempre buenas intenciones y aportes; en ambos casos me sale el siguiente error:

[Error] Unit29.pas(452): Incompatible types: 'String' and 'Extended'
Gracias

Con lo que te hemo mostrado no debería mostrar ese error...

¿Sería posible que veamos las lineas 451, 452 y 453 de tu unidad?

Camilo
06-12-2007, 17:22:59
Tienes Razon Jhonny realmente el mensaje es el siguiente:
"[Error] Unit29.pas(452): Incompatible types: 'String' and 'Extended'"

y las lineas son las siguientes: procedure TFormAlmuerzos.ComboBox2Click(Sender: TObject);
begin
DbEdit7.Text := StrToInt(ComboBox2.Items[ComboBox2.ItemIndex]) * TableCostos.FieldByName('Almuerzo').AsFloat;
end;

Recuerda que el resultado de la operacion lo necesito en el DbEdit7

Gracias.

jhonny
06-12-2007, 17:34:05
Tienes Razon Jhonny realmente el mensaje es el siguiente:
"[Error] Unit29.pas(452): Incompatible types: 'String' and 'Extended'"

y las lineas son las siguientes: procedure TFormAlmuerzos.ComboBox2Click(Sender: TObject);
begin
DbEdit7.Text := StrToInt(ComboBox2.Items[ComboBox2.ItemIndex]) * TableCostos.FieldByName('Almuerzo').AsFloat;
end;

Recuerda que el resultado de la operacion lo necesito en el DbEdit7

Gracias.

Ok, aqui podemos tener un problema distinto...

Te explicare el asunto,

1) Si el DbEdit7 es de tipo TDBEdit, entonces debera tener asociado un DataSource (En su propiedad DataSource) y un campo (En su propiedad DataField), por lo que si el valor de dicho campo es modificado, automaticamente se vera reflejado en el DBEdit.

2) Si DbEdit7 es de tipo TEdit, allí si tendras que hacer algo parecido a lo que estas haciendo.

Ahora los ejemplos para ambos casos:

Caso 1 (Si DBEdit7 es un TDBEdit):
==================================

Donde Valor2 es el campo asociado a la propiedad DataField del DBEdit7...


Table1.Edit;
Table1.FieldByName('Valor').AsFloat := StrToInt(ComboBox2.Items[ComboBox2.ItemIndex]) * TableCostos.FieldByName('Almuerzo').AsFloat;
Table1.Post;



Caso 2 (Si DBEdit7 es un TEdit):
================================


DbEdit7.Text := FormatFloat('###,###,##0.00', StrToInt(ComboBox2.Items[ComboBox2.ItemIndex]) * TableCostos.FieldByName('Almuerzo').AsFloat;
StrToInt(ComboBox2.Items[ComboBox2.ItemIndex]) * TableCostos.FieldByName('Almuerzo').AsFloat);



Espero te sirva de algo ;).

enecumene
06-12-2007, 17:45:24
Mejor Respuesta que la del amigo jhonny no puedo dar :D.

Saludos

Camilo
06-12-2007, 17:53:59
Muchachos una vez mas dieron en el punto. Quiero agradecerles de corazon la ayuda que nos brindan.
La solucion dada a mi problema fue la alternativa 1 es decir:
Table1.Edit;
Table1.FieldByName('Valor').AsFloat := StrToInt(ComboBox2.Items[ComboBox2.ItemIndex]) * TableCostos.FieldByName('Almuerzo').AsFloat;
Table1.Post;.

Como siempre muchachos abrazo de Admiracion y gratitud.

jhonny
06-12-2007, 17:57:14
Yeahhh¡¡¡ :D