Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-11-2017
Avatar de The Cid James
The Cid James The Cid James is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 129
Poder: 11
The Cid James Va por buen camino
Enviar resultado de operaciones a base de datos

Buenas gente, estoy tratando de calcular unos valor de unas operaciones a la base de datos pero el post "se hace en blanco"
Este es el código del botón que debería hacer el post a la base de datos pero al precionarlo no pasa nada ni siquiera sale un error.

Código Delphi [-]
procedure Tfcantidad.BCokClick(Sender: TObject);
var
a: integer; // Cantidad de Articulos
d: integer; // N° de venta anterior
e: integer; // N° de venta actual
f: integer; // Precio Unitario
g: integer; // Precio total por prdoducto

begin
  fmodulo.tVentadetalle.Active := true;
  fmodulo.tProductos.Active := true;
  fmodulo.tVentadetalle.Insert;
  if (strtoint(Ecantidad.Text)<=0)
    then
      begin
        Application.MessageBox('El valor ingresado debe ser mayor a O', 'Drugstore',mb_yesno+mb_iconquestion);
      end
  else
    if Ecantidad.Text = not null
      then
        begin
        a := fmodulo.tVentadetalle.Fields.FieldByName('cantidad').AsInteger;
        d := fmodulo.qnumventa.Fields.FieldByName('id_venta').AsInteger;
        e := (d + 1);
        fmodulo.tVentadetalle ['id_ventas'] := IntToStr(e);
        fmodulo.tVentadetalle ['id_producto'] := fmodulo.tProductos ['id_producto'];
        f := fmodulo.tProductos.Fields.FieldByName('precio_vent').AsInteger;
        g := (a * f);
        fmodulo.tVentadetalle ['Precio_v'] := IntToStr(g);
        fmodulo.tVentadetalle ['cantidad'] := IntToStr(a);
        fmodulo.tVentadetalle.Post;
        fmodulo.tVentadetalle.Refresh;
        end;
  self.Close;
end;

Como siempre muchas gracias
__________________
We are told to remember the idea, not the man, because a man can fail. He can be caught, he can be killed and forgotten, but 400 years later, an idea can still change the world.
Responder Con Cita
  #2  
Antiguo 15-11-2017
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Haz un pequeño cambio para evaluar si el edit tiene algo digitado.

Código Delphi [-]
  //if Ecantidad.Text = not null
  if Length(Trim(Ecantidad.Text)) > 0

Si es XE3 o superior puede ser:
Código Delphi [-]
  //if Ecantidad.Text = not null
  if String(Ecantidad.Text).Trim.Length > 0
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #3  
Antiguo 15-11-2017
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Hola

Cita:
Empezado por The Cid James Ver Mensaje
Código Delphi [-]
    if Ecantidad.Text = not null
Y esa linea te compila???
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #4  
Antiguo 15-11-2017
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Cita:
Empezado por Caminante Ver Mensaje
Y esa linea te compila???
Yo también quedé y repliqué eso en mi delphi. y Si! si compila y si haces debug cuando pones la expresión en el evaluador dice que la expresión es inválida.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #5  
Antiguo 15-11-2017
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
Otra cosa, yo te recomendaria poner el insert junto al codigo donde asignas los valores a la tabla, porque primero haces el insert y luego tomas valores (pero los valores te los va a tomar en blanco porque esta el insert) y luego haces operaciones para guardar en la tabla... Saludos!
Responder Con Cita
  #6  
Antiguo 15-11-2017
alexcarballo alexcarballo is offline
Registrado
NULL
 
Registrado: jun 2012
Posts: 2
Poder: 0
alexcarballo Va por buen camino
Cita:
Empezado por luisgutierrezb Ver Mensaje
Otra cosa, yo te recomendaria poner el insert junto al codigo donde asignas los valores a la tabla, porque primero haces el insert y luego tomas valores (pero los valores te los va a tomar en blanco porque esta el insert) y luego haces operaciones para guardar en la tabla... Saludos!
Ademas si la tabla ya viene con datos lo que debes hacer es un Edit no Insert
Responder Con Cita
  #7  
Antiguo 16-11-2017
Avatar de The Cid James
The Cid James The Cid James is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 129
Poder: 11
The Cid James Va por buen camino
Cita:
Empezado por movorack Ver Mensaje
Haz un pequeño cambio para evaluar si el edit tiene algo digitado.

Código Delphi [-]
  //if Ecantidad.Text = not null
  if Length(Trim(Ecantidad.Text)) > 0

Si es XE3 o superior puede ser:
Código Delphi [-]
  //if Ecantidad.Text = not null
  if String(Ecantidad.Text).Trim.Length > 0
La pripiedad text del edit tiene valor por defecto 0 por lo cual no podria estar vacio de todas formas

Cita:
Empezado por movorack Ver Mensaje
Yo también quedé y repliqué eso en mi delphi. y Si! si compila y si haces debug cuando pones la expresión en el evaluador dice que la expresión es inválida.
No se donde lo habia leido mientras buscaba informacion y me funciono asi que lo deje

Cita:
Empezado por alexcarballo Ver Mensaje
Eimina la línea:
fmodulo.tVentadetalle.Refresh;

El Refresh me ha dado ese error.
No se que error te da pero a mi no me marca nada de echo creo que el error esta en las asignaciones de las variables porque sino hago los calculos si hace el post (obviamente con resultados no calculados que no me sirve)

Cita:
Empezado por luisgutierrezb Ver Mensaje
Otra cosa, yo te recomendaria poner el insert junto al codigo donde asignas los valores a la tabla, porque primero haces el insert y luego tomas valores (pero los valores te los va a tomar en blanco porque esta el insert) y luego haces operaciones para guardar en la tabla... Saludos!
Tengo entendido que al poner la tabla en modo insert mientras dure el proceso no deberia causar problemas de echo tengo varias tablas que tengo en modo insert desde el momento que abro el form y postea bien

Cita:
Empezado por alexcarballo Ver Mensaje
Ademas si la tabla ya viene con datos lo que debes hacer es un Edit no Insert
Cada dato se calcula y postea en ese momento, sino hubiera usado el edit si fuera el caso.

Gracias a todos por la ayuda gente el error como dije anteriormente esta en los cálculos porque si inserto otros datos en la tabla sin hacer los cálculos si lo toma normalmente. También he notado que en ningun momento le asigno el valor del Edit a la variable A para hacer los cálculos y la verdad que no se como hacerlo busque en la web pero siempre me sale algún error
__________________
We are told to remember the idea, not the man, because a man can fail. He can be caught, he can be killed and forgotten, but 400 years later, an idea can still change the world.
Responder Con Cita
  #8  
Antiguo 16-11-2017
Avatar de The Cid James
The Cid James The Cid James is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 129
Poder: 11
The Cid James Va por buen camino
Probe lo que dijo movorack y efectivamente era eso, con eso postea los datos pero sigue sin hacer los calculos

Código Delphi [-]
begin
  fmodulo.tVentadetalle.Active := true;
  fmodulo.tProductos.Active := true;
  fmodulo.tVentadetalle.Insert;
  if (strtoint(Ecantidad.Text)<=0)
    then
      begin
        Application.MessageBox('El valor ingresado debe ser mayor a O', 'Drugstore',mb_yesno+mb_iconquestion);
      end
  else
    if String(Ecantidad.Text).Trim.Length > 0
      then
        begin
        a := (StrToInt(Ecantidad.text));
        a := fmodulo.tVentadetalle.Fields.FieldByName('cantidad').AsInteger;
        d := fmodulo.qnumventa.Fields.FieldByName('id_venta').AsInteger;
        e := (d + 1);
        fmodulo.tVentadetalle ['id_ventas'] := IntToStr(e);
        fmodulo.tVentadetalle ['id_producto'] := fmodulo.tProductos ['id_producto'];
        f := fmodulo.tProductos.Fields.FieldByName('precio_vent').AsInteger;
        g := (a * f);
        fmodulo.tVentadetalle ['Precio_v'] := IntToStr(g);
        fmodulo.tVentadetalle ['cantidad'] := IntToStr(a);
        fmodulo.tVentadetalle.Post;
        fmodulo.tVentadetalle.Refresh;
        end;
  self.Close;
end;

end.
__________________
We are told to remember the idea, not the man, because a man can fail. He can be caught, he can be killed and forgotten, but 400 years later, an idea can still change the world.
Responder Con Cita
  #9  
Antiguo 16-11-2017
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
En este post ya AgustinOrtu te habia hecho comentarios sobre tu código.

Cita:
Empezado por AgustinOrtu Ver Mensaje
De todos modos, el codigo que publicaste esta raro y por eso te da problemas.
Primero convertis de string a Integer el contenido del edit, y lo guardas en una variable.
Luego, en lugar de usar esa variable, volves a convertir para la validacion.
Y despues de validar, asignas en la misma variable el valor de un campo de la tabla, osea el valor que asignaste al principio nunca lo usaste. Creo que eso responde al "no se supone que le estoy dando valor?"
Imagino que no lo leíste pq no hiciste ningún cambio. Y de verdad el fue amable con decir "raro" ya que eso tiene apelativos de mucho mas calibre.

No se a que calculos te frefieres porque este hilo trata de que no podias guardar en la DB pero de verdad, Revisa bien tu código.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #10  
Antiguo 15-11-2017
alexcarballo alexcarballo is offline
Registrado
NULL
 
Registrado: jun 2012
Posts: 2
Poder: 0
alexcarballo Va por buen camino
Eimina la línea:
fmodulo.tVentadetalle.Refresh;

El Refresh me ha dado ese error.
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
Guardar resultado de dos campos de una base de datos en un tercer campo ezerusso SQL 8 15-10-2015 08:48:21
Enviar por correo respaldo de una base de datos n03l Varios 9 07-02-2013 22:17:44
Como enviar el resultado de una consulta con un Query al Word? Ricsato Servers 8 28-07-2007 22:52:36
Enviar valores a tabla de una Base de Datos Caray PHP 0 28-03-2007 06:26:50
Operaciones sobre base de datos davidgaldo Conexión con bases de datos 4 31-03-2004 10:50:07


La franja horaria es GMT +2. Ahora son las 23:55:39.


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