PDA

Ver la Versión Completa : ¿es posible darle a un edit lo que dice en una fila de un dbgrid?


jirbert
21-04-2008, 00:57:05
buenas, estoy trabajando en un sistema de facturacion con delphi 6, tengo un edit que me va a traer la caracteristica descripción, en el onenter del edit coloque que un dbgrid sea visible permitiendome visualizar varias opciones ya proporcionadas, lo que quiero saber si es posible que al hacer click sobre alguna de las filas lo que diga en dicha fila se llevado al edit con solo un click..

gracias de antemano!!

eduarcol
21-04-2008, 02:19:02
pueds colocar un dbEdit asociado al dataset del dbGrid, alli tendras lo que quieres automaticamente. Si no puedes colocar esto en el evento onclick del dbgrid

Edit1.Text := MiTabla.FieldbyName('MiCampo').ASString;

jirbert
21-04-2008, 02:29:22
gracias eduarcol todo funciono a la perfeccion...

jirbert
21-04-2008, 02:51:29
disculpa eduarcol como hago para que en un label se sumen los datos de un dbgrid como por ejemplo los precios en un label llamado total.. disculpa la molestia

Caro
21-04-2008, 03:06:29
Hola jirbert, haces algo parecido a lo que te ha indicado Eduardo, solo que en vez de recuperar el valor como Cadena con AsString, puedes utilizar AsReal o AsCurrency y despues de hacer la suma lo conviertes a cadena.


Label1.Caption := CurrToStr(MiTabla.FieldbyName('MiCampo2').ASCurrency+MiTabla.FieldbyName('MiCampo1').ASCurrency);


Saluditos

jirbert
21-04-2008, 03:19:10
oye esta bueno al parecer funciona pero no me suma toda la columna me sume es la fila y solo cuando me para sobre ella!!! no se que he hecho mal!!!
gracias por el cod..

eduarcol
21-04-2008, 03:20:19
Hola Caro, un placer verte por aqui a estas horas...


A lo que vamos, asi como te dice Caro es para sumar una linea, ahora si lo que quieres es sumar una columna deberas recorrer el dataset o realizar un query con el sum

jirbert
21-04-2008, 03:23:21
disculpa eduarcol no tengo mucha esperiencia en el lenguaje delphi me podrias explicar un poco mas eso del query.
gracias

eduarcol
21-04-2008, 03:34:18
yo creo que el que deberia explicarte un poco mejor eres tu, dinos como te conectas, a que te conectas, trata de detallar tu entorno porq recuerda que no podemos adivinar lo que tienes

jirbert
21-04-2008, 03:41:46
bueno aqui tratandito de hacer un programa de facturacion tengo edit's para agregar en la base de datos con la que trabaja el dbgrid bueno quiero que en un label en la parte de afuera del form que me indique el total de los productos que se han agregado en esa base de datos. me esplico? tengo una base de datos en table dbaseIV

Caro
21-04-2008, 19:28:31
Hola Eduardo y jirbert, como te dice eduardo debes recorrer tu DataSet para hacer el calculo de la suma o hacer una consulta utilizando un Query.

Ej. para hacer una suma recorriendo un DataSet, aquí debes tomar en cuenta dos cosas, al recorrer tu DataSet veraz como todos los componentes que estan asociados a tu dataSet iran mostrando los registros a medida que los recorres, para evitar esto puedes utilizar DisableControls para desabilitar dichos componentes hasta que termines de recorrer tu DataSet. Y también talvez ponerte un marcador (BookMark) para que una vez terminado de recorrer regreses al registro donde estaba incialmente.


var
Precio : Currency;
Marca : TBookMarkStr;
begin
precio := 0;
Marca := MiTabla.Bookmark;
MiTabla.DisableControls;
try
MiTabla.First;
While Not MiTabla.Eof do
begin
Precio := Precio + MiTabla.FieldbyName('MiCampo').ASCurrency;

MiTabla.Next;
end;
Label1.Caption := CurrToStr(Precio);
finally
MiTabla.EnableControls;
MiTabla.Bookmark := Marca;
end;


y si lo quieres hacer con una consulta, es suficiente que pongas "Select Sum(MiCampo) From MiTabla".

Saluditos

jirbert
22-04-2008, 02:10:03
hola a todos, gracias caro el codigo me me funciono de maravilla hasta los momentos ningun problema!!! espero que se quede asi lo mejor fue que no me enrede mucho :D gracias!!! :)

jirbert
22-04-2008, 03:49:17
bueno, tengo otro problemita!! se recuerdan que estoy sumando la columna del dbgrid verdad ese resultado lo coloque en un edit!!! tengo otro edit para el 9% y otro para la suma de ambos!!

algo asi

- subtotal = resultado de la suma de la columna del dbgrid
- iva 9% =

var
iva,total:double;
begin
total:=strtofloat(edit7.text);
iva:=total*0.09;
edit8.Text:=format('%f',[iva]);
end;
- total =

var
n1,n2,nt:integer;
begin
n1:=strtoint(edit7.text);
n2:=strtoint(Edit8.text);
nt:=n1+n2;
edit9.Text:=format('%f',[nt]); //tengo esta opcion
edit9.text:=inttostr(nt); // y esta!!!


pero me da un error
project project1.exe raised exception class EConvertError with message "100,80' is not a valid integer value'. process stopped. use step or run to continue.

bueno se que es algo referente a que el iva es float y lo tengo como integer pero si el mismo es el que hace la transformacion como hago para yo modificar ese error!!

gracias espero y me puedan ayudar..

Caro
22-04-2008, 04:21:22
Hola, tienes que usar también en tu procedimiento de abajo el tipo double, ya que los resultados que tienes en tus edit son de ese tipo.


var
n1,n2,nt:double;
begin
n1:=strtofloat(edit7.text);
n2:=strtofloat(Edit8.text);
nt:=n1+n2;
edit9.text:=floattostr(nt);



Saluditos

jirbert
22-04-2008, 04:28:49
gracias caro nuevamente, listo mil gracias!! todo perfect...