![]() |
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
|
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:
Saludos. :) |
lo intente de esa manera pero me marca el siguiente error clientdatasetproductos : field 'existencia' not found a que se debera??
|
Sustituye "existencias" por el nombre que tenga el campo de tu tabla, ¿stock?, ¿cantidad?, etc.
|
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
|
Cita:
|
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:
y este es mi codigo para guardar esos datos mediante un boton:
|
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. |
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
|
Cita:
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. |
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:
|
Y, ¿se puede saber a qué dataset están conectados los clientdatasets?
// Saludos |
esta un tmyconection, cliendataset a este agregado un datasetprovider y aqui agregado un tmyquery y un datasource al cual esta conectado al clientdataset1
|
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 |
:D 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
|
Pues no :confused:. 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 |
gracias por los buenos deseos
|
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
y para guardar esa informacion que tengo en el dbgrid utilizo:
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 |
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! |
Cita:
|
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
|
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í:
Y debes escribir lo tecleado por ecfisa; Quedando así:
|
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. |
Edgar, tienes DOS datasets.
Asegurate que el cambio a Existencias lo mandes al dataset debido y que vaya a dar a la tabla Productos. |
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
|
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
|
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
|
Cita:
|
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 |
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:
Aunque, desde luego, la otra opción es más efectiva. |
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 13:52:11. |
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