Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Operaciones Matematicas dentro de un DBGRID

Hola Compañeros del foro, regreso con una duda, tengo un DBgrid que contiene los campos, ref, articulo, cantidad, costo, itbis, valor, al ingresar un articulo al dbgrid le doy un focuscontrol al campo cantidad para que el usuario ingrese la cantidad a ingresar pues bien aqui viene el asunto cuando el usuario luego de ingresar la cantidad tiene que ingresar el costo del articulo, quisiera que calculara los valores de itbis y valor automaticamente, se puede? estoy trabajando con access+zeos+clientdataset.

Saludos
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #2  
Antiguo 01-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Tienes que hacer una consulta sql a la tabla en cuestión, con eso te saldrá el dato que necesitas, nada tiene que ver en esto el dbgrid.
Saludos
Responder Con Cita
  #3  
Antiguo 01-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Hola Caral, gracias por tu sugerencia, lo entiendo perfectamente, pero lo que no sabria hacer es en que evento tendria que poner, por ejemplo si el usuario esta en el campo o columna costo e ingrese el valor y que al darle enter o tab me haga los calculos. espero no ser puntilloso.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #4  
Antiguo 01-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Es un poco difícil sin ver la pantalla indicarte en que evento colocar el calculo.
Yo así sin ver, lo colocaría en el evento OnExit de la celda del dbgrid, así, cuanto salga de este hará el calculo, si se equivoco por cualquier razón, siempre puede rectificar.
Otra forma seria por medio de un boton, bueno yo uso mucho este sistema, asi las personas que usan el programa primero ven lo que hicieron y si esta bien, hacen lo que sea necesario.
Espero te guie un poco.
Saludos
Responder Con Cita
  #5  
Antiguo 01-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Vale, Gracias Caral, ire probando a ver, cualquier cosa te comento.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #6  
Antiguo 01-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Con gusto, si se te hace dificil, me pasas el programa con la base de datos y lo vemos.
Lo que me parece curioso es que uses zeos con access, por que no ADO.
Saludos
Responder Con Cita
  #7  
Antiguo 01-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Lo que me parece curioso es que uses zeos con access, por que no ADO.
Saludos
Lo estoy conectando con ODBC y pense como los componentes BDE estan obsoletos quise usar Zeos que por lo que he visto son excelentes.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #8  
Antiguo 01-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Zeos= muy bueno, rapido y efectivo.
Conectar por odbc=
No te compliques con access, ADO, eso sin dudar, pruebalo, veras la diferencia.
Yo he hecho pruebas de rapidez y ado, es mas rapido, por ser directo, Pruebalo, es interesante, ademas se aprende.
Zeos para mysql, esta muy bien.
Bueno, es solo mi opinion.
Saludos
Responder Con Cita
  #9  
Antiguo 01-10-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Puedes usar el evento OnCalcFields del dataset origen, allí haces las multiplicaciones y estableces el valor de los campos involucrados.

Ten en cuenta que al principio las cajas pueden tener el valor cero (en caso de divisiones) para no obtener excepciones.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #10  
Antiguo 01-10-2007
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Hola!

Si me equivoco me lo dicen:

1. ADO es nativo para conectar con Access y MS SQLServer. Usa directamente el motor de datos JET de MS. Luego entonces No tiene caso usar ninguna otra cosa para este tipo de base de datos.

2. Zeos tengo entendido -porque no los uso- es una suite de componentes para acceso a datos y esta especialmente diseñado para MySQL. Luego entonces es el mismo caso de ADO.
Responder Con Cita
  #11  
Antiguo 01-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Cita:
Empezado por FGarcia Ver Mensaje
Hola!

Si me equivoco me lo dicen:

1. ADO es nativo para conectar con Access y MS SQLServer. Usa directamente el motor de datos JET de MS. Luego entonces No tiene caso usar ninguna otra cosa para este tipo de base de datos.
.

en eso tienes razon.

Cita:
Empezado por FGarcia Ver Mensaje
2. Zeos tengo entendido -porque no los uso- es una suite de componentes para acceso a datos y esta especialmente diseñado para MySQL. Luego entonces es el mismo caso de ADO.
Zeos no solo esta diseñado especialmente para Mysql tambien sirve para cualquier tipo de base de datos incluso firebird.

Saludos
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #12  
Antiguo 02-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Bueno estoy haciendo los calculos de esta manera pero no me muestra los resultados aqui el codigo:

Código Delphi [-]
procedure TFEntrada.Edit8KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then begin
if Edit6.Text = '' then begin
     ShowMessage('Item no existe');
     end else begin
ZInsertar.Close;
ZInsertar.SQL.Clear;
ZInsertar.SQL.Add('Select * from articulos');
ZInsertar.SQL.Add(' where ref = :cod');
ZInsertar.ParamByName('cod').Value:=Edit6.Text;
ZInsertar.Open;
 if not ZInsertar.IsEmpty then begin
  ZTemp.FieldByName('ref').Value:=ZInsertar.Fields[0].Value;
  ZTemp.FieldByName('articulo').Value:=ZInsertar.Fields[2].Value;
  ZTemp.FieldByName('cantidad').Value:=strtoint(Edit7.Text);
  ZTemp.FieldByName('costo').Value:=StrToFloat(Edit8.Text);
   ZTemp.FieldByName('valor').Value:=(strtoint(Edit7.Text))*(strtofloat(Edit8.Text));
  end else
      ShowMessage('Item no existe');
   end;
  end;
end;

que estoy haciendo mal?

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #13  
Antiguo 02-10-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
que resultados debe mostrarte??

en que momento editas o insertas en zTemp

donde debe mostrarte estos resultados??
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #14  
Antiguo 02-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No se muy bien lo que estas haciendo pero hay varias cosas.
No se por que usar int, cuando lo optimo es usas float.
Para mi el error podria estar aqui:
Código Delphi [-]
 ZTemp.FieldByName('valor').Value:= FloatToStr(StrToFloat(Edit7.Text) * StrToFloat(Edit8.Text));
Pruebalo nada se pierde.
Yo lo hago asi en algun programa y me funciona, en tal caso cambia el float, pero sigue el proceso.
Saludos
Responder Con Cita
  #15  
Antiguo 06-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Disculpa Caral por la Tardanza estaba en otros asuntos, volviendo al tema, mira hice tu sugerencia y aun asi no me muestra el resultado en el campo Valor en el DBgrid, ejemplo puse cantidad(integer) = 5 multiplicado por costo(double) = 185.00 se supone que valor(double) debe ser 925.00 y deberia de mostrarmelo en el dbgriid y eso es lo que no hace.??

Código Delphi [-]
procedure TFEntrada.Edit9KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then begin
if Edit6.Text = '' then begin
     ShowMessage('Item no existe');
     end else begin
ZInsertar.Close;
ZInsertar.SQL.Clear;
ZInsertar.SQL.Add('Select * from articulos');
ZInsertar.SQL.Add(' where ref = :cod');
ZInsertar.ParamByName('cod').Value:=Edit6.Text;
ZInsertar.Open;
 if not ZInsertar.IsEmpty then begin
  ZTemp.FieldByName('ref').Value:=ZInsertar.Fields[0].Value;
  ZTemp.FieldByName('articulo').Value:=ZInsertar.Fields[2].Value;
  ZTemp.FieldByName('cantidad').Value:=strtoint(Edit7.Text);
  ZTemp.FieldByName('valor').Value:= FloatToStr(StrToFloat(Edit7.Text) * StrToFloat(Edit9.Text));
  end else
      ShowMessage('Item no existe');
   end;
  end;
end;

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #16  
Antiguo 06-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Aqui muestras un ZInsertar, que ve en la tabla y un ZTemp que hace la comparacion.
Donde esta el ZQuery que muestra el DBGrid.?, cual es ?
A ver si lo entiendo mejor.
Saludos
Responder Con Cita
  #17  
Antiguo 06-10-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
ZTemp ¿es una consulta o una tabla?. ¿El grid está enlazado a ZTemp o a otro dataset?.
__________________
Saludos.
Responder Con Cita
  #18  
Antiguo 06-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Hola Caral, ZInsertar(Query) es la tabla de articulos donde voy a sacar los datos el mismo y ZTemp es una tabla temporal donde pongo los detalles de los articulos que luego se van a grabar en otra tabla y se eliminan al momento de grabar. Ztemp esta enlazado al DBGrid.



Saludos
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.

Última edición por enecumene fecha: 06-10-2007 a las 17:52:58.
Responder Con Cita
  #19  
Antiguo 06-10-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
La verdad a simple vista no le veo la falla, prueba colocar un breakpoint en la asignacion y verifica el valor de los edit...

cuentanos que resulto
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #20  
Antiguo 06-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Cita:
La verdad a simple vista no le veo la falla, prueba colocar un breakpoint en la asignacion y verifica el valor de los edit...

cuentanos que resulto
Eduarcol, No sabia a que te referias pero aqui va:

http://img124.imageshack.us/img124/2...akpointly2.jpg
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cambiar fuente dentro de DBgrid zugazua2001 Gráficos 2 14-06-2005 22:13:33
Button dentro de un dbgrid fabian20s Conexión con bases de datos 0 29-03-2005 00:17:30
checkbox dentro de DBGrid empty Varios 1 30-03-2004 17:58:10
TabStop dentro de DBGrid Delfino Conexión con bases de datos 1 27-09-2003 16:22:52
Localizar dentro de 1 dbgrid cisterpe OOP 6 12-09-2003 11:05:57


La franja horaria es GMT +2. Ahora son las 15:36:48.


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
Copyright 1996-2007 Club Delphi