PDA

Ver la Versión Completa : sumar campo y guardar en un edit


gonza_619
14-09-2010, 04:58:45
hola, miren necesito sumar un cmapo de una tabla a traves de sum
y luego ese resultado guardar o asignar a un edit.
el campo es de tipo money

Select sum(MONTO) as Monto from TABLAPAGO where CODCLIENTE = 1 '+

ahora nose como asignarlo al Monto a un edit o dbedit.
de que manera seria?
se que luego se puede sacar el signo $ del edit si es que se puede asignar.
edit1.text:= Query1.Fields[0].Value;

Estaria Bien asi?? gracias a todos

Neftali [Germán.Estévez]
14-09-2010, 11:09:45
edit1.text:= Query1.Fields[0].Value;
Estaria Bien asi??

Debería funcionar.
También puedes acceder por el nombre de campo.


edit1.text:= Query1.FieldByName('Monto').AsString;

gonza_619
14-09-2010, 18:57:48
hola
edit1.text:= Query1.FieldByName('Monto').AsString;

la suma monto es tipo money, sera que al final va .asstring?
gracias

ecfisa
14-09-2010, 19:35:42
Hola.

Si decidís hacerlo con Value, tenés que hacer la conversíon correspondiente:
Edit1.Text:= FloatToStr(TableMonto.Value);

En el caso que uses el nombre de campo como te explicó Neftali, el tipo de conversión esta garantizada con AsString.

Pero siempre se debe convertir un valor numérico del tipo que corresponda, al asignarlo a una variable/propiedad de tipo string.


Saludos.:)

gonza_619
14-09-2010, 19:51:09
hola tambien vi que se puede usar un dbedt y asociarlo a un datasource q ala vez se asocia al tquery, pero no se en que propiedad se coloca SUM OF y me sume una columna y me aparezca en el dbedit, gracais , saben como seria?

ecfisa
14-09-2010, 19:57:38
Hola.

Debés referenciar al sinónimo de sum(MONTO) que en tu caso es: Monto.

Edit1.Text:= Query1.FieldByName('Monto').AsString;

Saludos. :)

ecfisa
14-09-2010, 23:02:25
Hola.

Disculpá Gonza, ahora veo que lo que querés es asignar Monto a un TDBEdit, no a un TEdit.

En ese caso, tenés que asignar lo siguiente. Puede ser en el evento OnCreate del form, como ejemplo:

procedure TForm1.FormCreate(Sender: TObject);
begin
DBEdit1.DataSource:= DataSource1; // (el que tiene la propiedad DataSet -> al Query)
DBEdit1.DataField:= 'Monto';
end;

Saludos. :)

Caral
15-09-2010, 05:40:46
Hola
Amigo recapacita, estas seguro que en el evento OnCreate ???.:confused:
Saludos

ecfisa
16-09-2010, 04:18:12
Hola
Amigo recapacita, estas seguro que en el evento OnCreate ???.:confused:
Saludos

Si totalmente, ¿Algo personal contra ese evento ? :D

Saludos. :)

ecfisa
16-09-2010, 09:33:10
Amigo Caral, se a que te estás referiendo con tu observación :), ya que si llama Query con otra sentencia que no declare el campo 'Monto' va a generar error. Pero limitándome al ejemplo funciona.

De todas formas y sin lugar a dudas creo que estás acertado, no es seguro hubicar el código ahí. ;)

Saludos. :)

Neftali [Germán.Estévez]
16-09-2010, 10:21:52
no es seguro hubicar el código ahí.

Yo también estoy de acuerdo en ubicarlo en otro sitio. ;)

ecfisa
16-09-2010, 10:33:40
Yo también estoy de acuerdo en ubicarlo en otro sitio. ;)

Parece que en este hilo no pego una... :D :D :D

Saludos. :)

chingolo
16-09-2010, 16:29:41
otra opcion es:
Quer1.SQL.Text:='Select sum(MONTO) as Monto from TABLAPAGO where CODCLIENTE = :numeroclie ';
Query1.Params[0].asinteger=1;
Query1.open;
edit1.text:= Floattostr(Query1.fields[0].AsFloat);//no hace falta el alias

tambien podes usar un currencyedit y asignar el campo como float a la propiedad value del currency
respecto de donde quieres q vaya tu codigo es depende de como lo necesites, en mi caso por ejemplo abro todas mis consultas en el OnCreate y si es algo especifico lo ubico en el Onshow cuando ya esta creado y lo llama otra form.

Si no queres sorpresas pone todo en un bloque try except.

Nota: No me gusta usar los DBEdits, prefiero tener el control de lo q se escribe, (desde mi punto de vista no recargo el servidor manteniendo conexiones activas) y usando consultas (puro SQL) y luego asignado a los ditintos componentes, ademas de ahorrar en componentes, no hace mal escribir un poco je