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
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
  #2  
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
  #3  
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
  #4  
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
  #5  
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
  #6  
Antiguo 17-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
En este post ya AgustinOrtu te habia hecho comentarios sobre tu código.



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.
Si lo lei y si lo cambie, en ese momento no estaba usando los valores de la variables y si controle lo de asignarle de no asignarlo mal si te fijas en el código del post lo cambie ... bastante de echo igual me voy a poner a leer lo que encuentre a ver como lo soluciono

Saludos
__________________
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
  #7  
Antiguo 17-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
No se... Seguiste con las mismas asignaciones. lee los comentarios y entenderás un poco lo que trato de decirte

Código Delphi [-]
procedure TfCantidad.BCokClick(Sender: TObject);
var
  //Mejor coloca nombres de variables que signifiquen algo
  //a : Integer; // Cantidad de Articulos
  CantArts: integer; // Cantidad de Articulos
begin
  fmodulo.tVentadetalle.Active := true;
  fmodulo.tProductos.Active := true;

  //Esta validación la coloco acá porque la vienes haciendo en tu código,
  //pero es innecesaria o no estás haciendo bien las cosas ya que en ningún lugar de tus cálculos usas el valor del
  //TEdit Ecantidad. Si bien lo asignas a una variable mas adelante, enseguida a esa misma variable le asignas un 
  //valor traído del dataset
  if (string(Ecantidad.Text).Trim.Length = 0)
    or (not TryStrToInt(Ecantidad.Text, CantArts))  // <= Si la conversión es correcta, aquí ya se asigna el valor del edit a la variable
  then
  begin
    Application.MessageBox('El valor ingresado debe ser mayor a O', 'Drugstore',mb_yesno+mb_iconquestion);
    Exit;
  end;
  
  if fmodulo.tVentadetalle.State in [dsEdit, dsInsert] then
    fmodulo.tVentadetalle.Cancel;

  fmodulo.tVentadetalle.Insert;

  {
  a := (StrToInt(Ecantidad.text)); // Esta asignación la pierdes con la siguiente línea

  //Y no es necesario asignar a variable todo lo del dataset. Puedes usar los valores directamente
  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);
  }

  //El consecutivo trata de no calcularlo en el programa y dejarlo a que lo calcule la DB. Cuando tengas varios clientes al mismo tiempo vendiendo esto será un dolor de cabeza
  fmodulo.tVentadetalle.Fields.FieldByName('id_ventas').AsString := IntToStr(fmodulo.qnumventa.Fields.FieldByName('id_venta').AsInteger + 1); 
  fmodulo.tVentadetalle.Fields.FieldByName('id_producto').Value := fmodulo.tProductos.Fields.FieldByName('id_producto').Value;
  fmodulo.tVentadetalle.Fields.FieldByName('Precio_v').AsString := IntToStr(fmodulo.tVentadetalle.Fields.FieldByName('cantidad').AsInteger * fmodulo.tProductos.Fields.FieldByName('precio_vent').AsInteger);
  fmodulo.tVentadetalle.Fields.FieldByName('cantidad').AsString := fmodulo.tVentadetalle.Fields.FieldByName('cantidad').AsString;
  fmodulo.tVentadetalle.Post;
  fmodulo.tVentadetalle.Refresh;

  self.Close;
end;

He tratado de utilizar los mismos tipos de datos que al parecer tienes en tu dataset. pero cosas como el precio y cantidad es mejor que los coloques como float. EN un futuro pueden decirte que quieren vender medio paquete de cigarrillos o que el valor de un producto con oferta es de 9.99
__________________
Buena caza y buen remar... http://mivaler.blogspot.com

Última edición por movorack fecha: 17-11-2017 a las 15:39:08.
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 07:00:12.


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