Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   restar existencias de mysql (https://www.clubdelphi.com/foros/showthread.php?t=80354)

edgar_prospero 21-09-2012 02:34:22

1 Archivos Adjunto(s)
el clientdataset2 es el que estoy tratando de usar para actualizar mi tabla productos segun yo pero es donde estoy confundido ya me perdi un poco con esto y espero y me tengan paciencia, pues aqui adjunto lo que llevo del proyecto para que puedan orientarme bien y decirme todos mis errores

Casimiro Noteví 21-09-2012 02:42:01

Entonces el código que ha puesto ecfisa te tiene que servir perfectamente.
Tienes que hacer click en el clientdataset1, luego en el inspector de objetos vas a la pestaña "eventos" y en el AfterPost le das doble click.
Se verá algo así:
Código Delphi [-]
procedure TForm1.clientdataset1AfterPost(DataSet: TDataSet); 
begin

end;

Y debes escribir lo tecleado por ecfisa;

Quedando así:

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

Casimiro Noteví 21-09-2012 02:45:44

Realmente confunde con esos nombres, procura siempre ponerle nombres claros, como ha hecho ecfisa, ya que clientdataset1, clientdataset2, etc. confunde y no sabes qué son cada uno, creo que yo me he confundido.
Debes renombrarlo como (ejemplo) cdsVentas, cdsProductos

Por cierto, en el afterpost, antes de actualizar el campo existencias, debes tener localizado el registro a actualizar.

ElMug 21-09-2012 02:51:40

Edgar, tienes DOS datasets.

Asegurate que el cambio a Existencias lo mandes al dataset debido y que vaya a dar a la tabla Productos.

edgar_prospero 21-09-2012 02:57:52

pues si hice eso amigo pero me marca el error de que clientdataset2:field 'existencia' not found tratare de ver porque me marca eso es que no se en donde esta mi error no se que me falte

edgar_prospero 21-09-2012 03:08:21

acabo de leer tu comentario casimiro tomare en cuenta tu consejo y cambiare el nombre ahora no se si me puedas decir como esta eso de tener localizado el registro a actualizar, antes de actualizar el campo existencias me podrias orientar en esto

edgar_prospero 01-10-2012 17:54:51

que hay amigos ya hace tiempo de este post pero ya logre hacer que me reste las existencias nomas que tengo un problema que al ir agregando los productos al dbgrid ya desde ahi me quita las existencias y queiro quelo haga hasta que guarde el producto porque encaso de un error de que me equivoque de producto lo voy a eliminar del dbgrid pero a se va a quedar modificado en existencias ojala me puedan ayudar

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;

Casimiro Noteví 01-10-2012 18:12:32

Cita:

Empezado por edgar_prospero (Mensaje 445953)
que hay amigos ya hace tiempo de este post pero ya logre hacer que me reste las existencias nomas que tengo un problema que al ir agregando los productos al dbgrid ya desde ahi me quita las existencias y queiro quelo haga hasta que guarde el producto porque encaso de un error de que me equivoque de producto lo voy a eliminar del dbgrid pero a se va a quedar modificado en existencias ojala me puedan ayudar

Amigo, imagina que eso lo ha escrito otra persona, intenta leerlo a ver si lo entiendes, sin ni un un signo de puntuación, no se sabe dónde acaba una frase y empieza otra, no se sabe si afirmas, preguntas, confirmas... en fin, que cuesta entenderlo.

edgar_prospero 01-10-2012 18:17:11

tienes toda la razon tratare de explicarme de mejor forma y sacar mis clases de español para la puntuacion.

gracias a su ayuda logre hacer que me restara las existencias con el codigo que puse anteriormente, pero tengo el problema que con ese evento de afterpost al ir mandando mis productos al dbgrid ya me lo va descontando de existencias, siendo que lo que necesito es que haga el descuento hasta que le de en el boton guardar. no se si ahora me explicaria un poco mejor jeje

Casimiro Noteví 02-10-2012 11:40:49

Ahora sí :)
Bueno, entonces si no quieres que descuente existencias por cada línea que se va guardando... te queda solamente una opción: cuando le des a terminar/finalizar/aceptar el documento, o sea, cuando se termina, antes de salir debes de recorrer el dataset con todas las líneas y hacer la resta por cada una de ellas. Resumiendo, hacer "lo mismo" pero manualmente. Algo así (tú debes sustituir los dataset, nombres de tablas, campos, etc.), es sólo para que te hagas una idea:

Código Delphi [-]
qlineas.first;
while not qlineas.eof do
begin  
  update tablaexistencias set existencias=existencias - qlineas.cantidad.asinteger;
  post;
  qlineas.next;
end;

Aunque, desde luego, la otra opción es más efectiva.

roman 02-10-2012 17:10:58

No entiendo cuál es el problema. Mientras no se haga el ApplyUpdtes de ambos ClientDataSets, no se guardarán los registros cambiados en la base de datos.

// Saludos


La franja horaria es GMT +2. Ahora son las 16:30:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi