FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Actualizando Campo MySQL sin pasar su limite establecido
Hola, tengo un duda al momento de realizar esta query:
Estoy haciendo un test con una base de datos MySQL, esta base es de pasteles, lo que hace es que voy incrementando un campo llamado TOTAL. Este campo como dije se incrementa cada vez que voy ingresando mas pasteles a mi Tabla "PASTELES". Los componentes que utilizo: 1 query (llamado Queryrefresh) 1 edit (llamado txtcodigo) 1 Edit (llamado txtagregar) //Aqui ingreso los pasteles para incrementar Stock 1 DBedit3 //Me muestra lo que tengo actual en mi stock 1 DBedit (limite) //La cantidad de pasteles que puedo ingresar,no debe sobrepasar este campo Mi codigo en mi query es: UPDATE pasteles SET stock = :stock [/color] WHERE codigo = :codigo //Pasado como parametro del txtcodigo Y el codigo de mi boton para Actualizar: MyTable1.Edit; Queryrefresh.Close; Queryrefresh.SQL.Clear; Queryrefresh.SQL.Text:='UPDATE pasteles SET stock= '+QuotedStr(inttostr(strtoint(DBedit3.Text)+strtoint(txtagregar.Text)))+' WHERE codigo='+txtcodigo.Text; Hasta aqui mi codigo funciona al 100% sin problemas, actualiza mi campo. Solo una pregunta: Es posible que dentro de mi codigo del boton pueda implementar una sentencia que me permita en caso de que cuando yo agregue mas pasteles a mi Tabla pero mi limite sea menor a esta cantidad agregada, solo me ponga la diferencia de estos 2, ejemplificando: Codigo: a001 actual: 10 agregar: 3 limite: 12 Entonces aqui, solo que me agregue 2 productos a mi tabla pasteles, y el 1 restante que lo deje en su tabla sin mover (o sea sin restarlo de la tabla principal,que es llamada CENTRAL). Nota: utilizo Delphi 7 y MySQL 5.0 Me podrian dar una sugerencia de si es posible desde mi codigo query o desde mi boton hacer esta operacion. Gracias, Karla Última edición por karlaoax fecha: 08-06-2007 a las 17:01:52. |
#2
|
||||
|
||||
Si lo que he entendido es lo correcto bastaria con comprobar el stock antes de realizar la inserción, si la suma del stock y la cantidad a insertar son menores que el limite entonces la insertas toda, en caso contrario inserta sola la diferencia entre el limite y el stock. Es importante que la consulta y la modificación se realicen dentro de una misma transacción para evitar que actualices un valor que pudo haber sido modificado.
Un saúdo
__________________
Si no lees esto no vivirás tranquilo Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao) |
#3
|
||||
|
||||
Prueba esto:
La misma sentencia comprueba si el stock actual más lo que agregas (:delta) se pasa del límite (:maximo), y de ser así, asigna el máximo en lugar del incremento. Un comentario aparte: ¿para qué usas parámetros en tu consulta si al momento de ejecutarla te cepillas toda la consulta
y terminas asignando los valores dirctamente sin parámetros? // Saludos |
#4
|
||||
|
||||
Cita:
|
#5
|
||||
|
||||
Ok, el codigo ya lo cheque en MySQL. Ahora lo implementare en mi Boton. Espero no cometer errores
|
#6
|
||||
|
||||
je je je , tengo un error en mi codigo de mi boton dice lo siguiente:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''9>17' (de cuando agrego ma pasteles a mi tabla)Where codigo=1' at line 1. Codigo de Roman: UPDATE pasteles SET stock = if(stock + :agregar > :maximo, :maximo, stock + :agregar) WHERE codigo = :codigo El codigo que he implementado en mi boton es: QueryRefresh.SQL.Text:='UPDATE pasteles SET stock=IF '+QuotedStr(inttostr(strtoint(DBedit3.Text)+strtoint(txtagregar.Text)))+'>'+QuotedStr(inttostr(strtoint(DBEDIT.TEXT)+strtoint(DBedit3.Text)+strtoint(txtagregar.Text)))+' WHERE codigo='+txtcodigo.Text; el DBEDIT es el limite permitido a agregar de este pastel Pienso que esta mal implementado el codigo en mi boton, ya que lo ejecute directamente en SQL y funciona sin problemas, me podrian orientar por favor. Ya cheque con mi F5 y active el DeBUG de my query a true, y sigo haciendo pruebas. Karla Última edición por karlaoax fecha: 08-06-2007 a las 21:06:50. |
#7
|
||||
|
||||
Pero, ¿seguimos cepillando las consultas?
Pon el código SQL, en la propiedad SQL del Query, y en tu botón te dejas de cosas raras y pones:
// Saludos |
#8
|
||||
|
||||
Ok el codigo se encuentra funcionando al 100%, gracias Roman. Saludos
Karla |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Actualizando un Campo pasando Parametros con MyDac | karlaoax | SQL | 14 | 27-04-2007 21:13:33 |
Pasar un campo calculado a un campo del mismo DbGrid | maravert | Conexión con bases de datos | 3 | 12-05-2006 00:31:30 |
Limite de registro por tabla en MySQL.? | JCarlosas | MySQL | 4 | 26-04-2006 15:13:40 |
Pasar a Mysql | taita | Conexión con bases de datos | 7 | 19-10-2004 00:26:55 |
Actualizando un campo... | StartKill | Firebird e Interbase | 5 | 05-03-2004 20:50:54 |
|