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 20-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
restar existencias de mysql

que hay amigos traigo un buen problema que no encuentro ni por donde empezar, resulta que estoy usando clientdataset para guardar informacion en mi tabla, tratare de explicar lo que hace o intenta hacer el programita; hay una tabla que se llama productos los cuales traigo y los voy metiendo a un dbgrid y cuando son los registros qe necesito medianteun boton los guardo en una tabla llamada venta hasta ahi todo bien mi problema esta en que en productos tengo un campo llamada existencias que por decir tengo 90 de un producto entonces lo que quiero hacer es que al guardar 1 producto en mi tabla ventas se descuente de productos de mi tabla productos no se si me explico o puse mucho rollo y no me di a entender jeje ojala me puedan orientar
__________________
saludos!!!
Responder Con Cita
  #2  
Antiguo 20-09-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Edgar.

Si no entendí mal la situación, podrías actualizar la existencia en la tabla productos luego de guardar el registro en la tabla ventas, por ejemplo:

Código Delphi [-]
procedure TForm1.DataSetVentasAfterPost(DataSet: TDataSet);
begin
  with DataSetProductos do
  begin
    Edit;
    FieldByName('EXISTENCIAS').Value := FieldByName('EXISTENCIAS').Value-
      DataSetVentas.FieldByName('CANTIDAD').Value;
    Post;
  end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 20-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
lo intente de esa manera pero me marca el siguiente error clientdatasetproductos : field 'existencia' not found a que se debera??
__________________
saludos!!!
Responder Con Cita
  #4  
Antiguo 20-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sustituye "existencias" por el nombre que tenga el campo de tu tabla, ¿stock?, ¿cantidad?, etc.
Responder Con Cita
  #5  
Antiguo 20-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
es que asi se llama el campo en mi tabla de productos 'existencia' no se que estoy haciendo mal, tengo un clientdataset para productos y un clientdataset para venta no se si ahi este correcto
__________________
saludos!!!
Responder Con Cita
  #6  
Antiguo 21-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por edgar_prospero Ver Mensaje
es que asi se llama el campo en mi tabla de productos 'existencia'
Pues en el ejemplo no pone "existencia', pone 'existencias'.
Responder Con Cita
  #7  
Antiguo 21-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
fue un error de dedo pero si es 'existencia' mira este es mi codigo un poco mas completo con el que voy a agregando los registros que necesito al dbgrid:

Código Delphi [-]
procedure TForm4.codigoKeyPress(Sender: TObject; var Key: Char);
var Total: double;
begin
 if Key = #13 then
  begin

    query2.Close;
    query2.SQL.Text := 'select * from productos where codigo=:codigo';
    query2.Params[0].Value := codigo.Text;

    query2.Open;


    descripcion.Text := query2.FieldByName('descripcion').asString;
    precio.Text := query2.FieldByName('precio').asString;
   existencia.Text := query2.FieldByName('existencia').asString;

    form4.clientdataset1.Append;

  form4.clientdataset1['codigo'] := codigo.Text;
  form4.clientdataset1['descripcion'] := descripcion.Text;
  form4.clientdataset1['precio'] := precio.Text;
  form4.clientdataset1['cantidad'] := cantidad.Text;
  form4.clientdataset1['folio'] := folio.Text;
  form4.clientdataset1['fecha'] := fecha.Date;
  form4.clientdataset1['subtotal'] :=  floatToStr( StrTofloat(cantidad.Text) * StrTofloat(precio.Text) );

        form4.clientdataset1.Post;



  query2.Close;
     query2.SQL.Text:='SELECT folio FROM venta ORDER BY folio ASC LIMIT 1';
     query2.Open;
    folio.text := floatToStr( StrTofloat(folio.Text) + StrTofloat(numero.Text)) ;



          ClientDataSet1.First;
   while not ClientDataSet1.eof do begin
      total := total + clientdataset1.FieldByName('subtotal').AsFloat;

      ClientDataSet1.Next;
   end;

      total2.Caption := FormatFloat('#,##0.00', total);




    begin
      if Key = #13 then
      begin
        Key := #0;
        Perform(WM_NEXTDLGCTL, 0, 0);
        codigo.SetFocus;
      end
    end;
  end;


y este es mi codigo para guardar esos datos mediante un boton:

Código Delphi [-]
procedure TForm4.BitBtn2Click(Sender: TObject);
begin
clientdataset1.ApplyUpdates(0);

showmessage('grabado con exito ');

ClientDataSet1.EmptyDataSet;
end;
__________________
saludos!!!
Responder Con Cita
  #8  
Antiguo 21-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No sé cómo tienes organizado el proyecto, pero el evento keypress está para controlar teclas pulsadas, yo no lo usaría para hacer búsquedas, guardar registros, actualizar, etc.

Y de todas formas no has hecho lo que te ha aconsejado ecfisa.
Responder Con Cita
  #9  
Antiguo 21-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
el evento evento keypress lo tengo para meter el numero de codigo y al darle enter me traigo la oinformacion de la base de datos de mis productos y si hice lo que me dijo eficsa pero me marca el error que mencionaba anteriormente clientdatasetproductos : field 'existencia' not found y si existe ese campo
__________________
saludos!!!
Responder Con Cita
  #10  
Antiguo 21-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por edgar_prospero Ver Mensaje
el evento evento keypress lo tengo para meter el numero de codigo y al darle enter me traigo la oinformacion de la base de datos de mis productos y si hice lo que me dijo eficsa pero me marca el error que mencionaba anteriormente clientdatasetproductos : field 'existencia' not found y si existe ese campo
Me vas a perdonar, pero si un compilador dice: clientdatasetproductos : field 'existencia' not found, entonces es que no existe, él no se equivoca

De todas formas, dices que has puesto el código de ecfisa, pero como tampoco lo has mostrado aquí... pues es difícil ayudar, tenemos que estar "adivinando" qué has puesto exactamente.
Responder Con Cita
  #11  
Antiguo 21-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
pues mira tal vez el compilador no se equivoque pero yo estoy seguro que en mi base de datos en la tabla productos esta un campo llamado 'existencia ' asi que por mas que no se equivoque el compilador yo estoy seguro a lo mejor el problema va por otro lado. y del codigo que mencionas de efica no lo puseporque al mencionarmelo tu daba por hecho que lo habias visto pero de todas formas aqui esta no hay problema en agregarlo de nuevo y de una vez lo agrego como lo puse yo:


Código Delphi [-]
procedure TForm1.clientdataset1AfterPost(DataSet: TDataSet);
begin
  with clientdataset2 do
  begin
    Edit;
    FieldByName('existencia').Value := FieldByName('existencia').Value - clientdataset1.FieldByName('cantidad').Value;
    Post;
  end;
end;
__________________
saludos!!!
Responder Con Cita
  #12  
Antiguo 21-09-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Y, ¿se puede saber a qué dataset están conectados los clientdatasets?

// Saludos
Responder Con Cita
  #13  
Antiguo 21-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
esta un tmyconection, cliendataset a este agregado un datasetprovider y aqui agregado un tmyquery y un datasource al cual esta conectado al clientdataset1
__________________
saludos!!!
Responder Con Cita
  #14  
Antiguo 21-09-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Eso no nos sirve de nada. Sólamente estás describiendo en términos generales como se conectan los distintos componentes. Lo que estoy preguntando es a qué dataset en específico está conectado. Si es a un query, ¿cuál es la consulta SQL de ese query?

// Saludos
Responder Con Cita
  #15  
Antiguo 21-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
pues creo que estoy muy verde porque no entiendo bien tu pregunta pero tratare de responderte amigo y es que como te dije anteriormente el clientdataset esta conectado a un datasetprovider y este esta conectado a un query y de la consulta no se a cual te refieres pero tengo una que dice select * from productos where codigo=codigo, no se si puedes orientarme un poco mas en lo que me preguntas
__________________
saludos!!!
Responder Con Cita
  #16  
Antiguo 21-09-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues no . Sinceramente si tú no sabes a qué está conectado tu ClientDataSet, entonces, no sólo es imposible que los demás lo sepamos, sino que poco futuro tienes en esta aplicación. ¡A espabilarse!

// Saludos
Responder Con Cita
  #17  
Antiguo 21-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
gracias por los buenos deseos
__________________
saludos!!!
Responder Con Cita
  #18  
Antiguo 21-09-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
EL SIN FUTURO COMENTA:
y es que mi clientdataset lo uso para agregar registros temporalmente de la tabla productos y ya despues esos productos los guardo en otra tabla llamada ventas mediante un boton pero ya que tengo los registros en mi dbgrid que voy a necesitar guardar.
esta es la forma como los agrego al dbgrid y obvio temporalmente al cliendataset

Código Delphi [-]
 form4.clientdataset1.Append;

  form4.clientdataset1['codigo'] := codigo.Text;
  form4.clientdataset1['descripcion'] := descripcion.Text;
  form4.clientdataset1['precio'] := precio.Text;
  form4.clientdataset1['cantidad'] := cantidad.Text;
  form4.clientdataset1['folio'] := folio.Text;
  form4.clientdataset1['fecha'] := fecha.Date;
  form4.clientdataset1['subtotal'] :=  floatToStr( StrTofloat(cantidad.Text) * StrTofloat(precio.Text) );

        form4.clientdataset1.Post;


y para guardar esa informacion que tengo en el dbgrid utilizo:

Código Delphi [-]
clientdataset1.ApplyUpdates(0);

showmessage('grabado con exito ');

ClientDataSet1.EmptyDataSet;

pero pues creo que no me di a entender muy bien y pues desgraciadamente tampoco te pude entender lo que me preguntabas espero llegar a ser grande como tu amigo
__________________
saludos!!!
Responder Con Cita
  #19  
Antiguo 21-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No sirve que digas que has puesto un clientdatset, un datasetprovider, un label, ... y así puedes decirnos cien mil millones de componentes que se te ocurra poner en el formulario, que si no sabemos los parámetros, las sentencias, las propiedades, las "uniones" entre ellos, etc.

Si quieres ayudas... tienes que ayudarnos.
Debes detallarnos las tablas y campos involucrados, los componentes de acceso a datos con sus correspondientes sentencias, la relación entre ellos, todo el código fuente que puedas proporcionarnos (a ser posible el proyecto completo), explicaciones claras y concisas, etc.

Es que no podemos adivinar, ya te lo ha dicho Román y ya lo comenté varios mensajes más arriba, no somos adivinos.

Compréndelo, aunque queramos ayudar... ¡no podemos!
Responder Con Cita
  #20  
Antiguo 21-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por edgar_prospero Ver Mensaje
Código Delphi [-]
form4.clientdataset1.Append;      
form4.clientdataset1['codigo'] := codigo.Text;     
form4.clientdataset1['descripcion'] := descripcion.Text;     
form4.clientdataset1['precio'] := precio.Text;   
form4.clientdataset1['cantidad'] := cantidad.Text;   
form4.clientdataset1['folio'] := folio.Text;   
form4.clientdataset1['fecha'] := fecha.Date;   
form4.clientdataset1['subtotal'] :=  floatToStr( StrTofloat(cantidad.Text) * StrTofloat(precio.Text) );            
form4.clientdataset1.Post;
Y el clientdatset2, ¿qué tiene?
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
restar entre 2 tablas de mysql y mostrar en reporte edgar_prospero Varios 68 07-09-2012 21:58:11
restar minutos a un DATETIME en mysql advancexz SQL 0 03-07-2008 05:27:21
Determinar Existencias elprimo Tablas planas 2 07-01-2007 04:42:45
Filtrado existencias en cero lgarcia SQL 2 13-02-2005 13:14:23
Concurrencia, mantener existencias en Red hibero Firebird e Interbase 4 08-10-2004 18:07:16


La franja horaria es GMT +2. Ahora son las 14:44:18.


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