![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Creo que me he perdido
![]() El código que has puesto no tiene nada que ver con un procedimiento almacenado, ahí lo que haces es recorrer un dataset y modificar registros según unos condicionantes. Eso es una forma de hacer lo que quieres, que no tiene nada que ver con un procedimiento almacenado. No sé si estará bien ese código, no lo he seguido con detalle, pero no tiene nada que ver, son dos cosas distintas. Para ejecutar el procedimiento puedes insertar en tu formulario un componente específico para procedimientos o puedes ejecutarlo directamente desde un componente sql, en tu caso sería algo así como:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#2
|
||||
|
||||
|
Eso es correcto, el procedimiento almacenado que inicialmente presente lo estaba ejecutando directamente desde ibexpert y no desde delphi y cuando presente el codigo delphi, de hecho es una manera de realizar la tarea que estoy porponiendo hice la aclaratoria al que era una de las formas de resolver el planteamiento. Pero en otras palabras el procedimiento sugerido por cloayza no me ha funcionado, por lo tanto disene el codigo delphi y si muestra los resultados, pero al cerrar el formulario desaparecen las modificaciones. Pido disculpas por la confusion...
|
|
#3
|
||||
|
||||
|
Prueba a ejecutar directamente el update en el IB-Expert, cuando consigas que funcione como esperas, entonces lo puedes empaquetar dentro del procedimiento almacenado.
De nuevo insisto en que revises las transacciones que utilizas (que se confirmen tras modificar, que abras una transacción nueva al consultar si ha hecho la modificación, etc. ...). Y para ir descartando posibles causas de que la consulta no se comporte como tu esperas, sería útil que respondieras a si pasas valores nulos como parámetro.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#4
|
||||
|
||||
|
Ok:
1.- Ya probe el update directamente sobre ib-expert y no hace los cambios 2.- Estoy utilizando una sola transaccion que se confirma antes del salir del formulario, por lo tanto esta chacado. 3.- No estoy pasando valores nulos Disculpa pero ya he realizado las pruebas que mencionads ![]() |
|
#5
|
||||
|
||||
|
Cita:
![]() Lo de "Ya probe el update directamente sobre ib-expert y no hace los cambios", no nos sirve de mucho, más que nada porque TIENE que hacer los cambios, salvo que hagas algo mal, para eso te pedimos el código completo de ese procedimiento almacenado y de tu código haciendo la llamada desde el ibexpert, por ejemplo, o desde donde lo pruebes y no te funcione.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#6
|
||||
|
||||
|
ok Cuando digo que no hace nada, es porque lo ejecuto y no hace los cambios necesarios. Esta es la linea que ejecuto directamente sobre ibexpert:
Y el codigo delphi es que la esta expuesto en el post anterior. Es logico que dudes de las pruebas que me indicas, pero sencillamente nos las hace. Ok mi pregunta es: a partir de esta linea directa debo de hacer el procedimiento almacenado y ejecutarlo directamente desde ibexpert, pero si es solamente una linea y no me funciona?, que se puede esperar de un procedimiento lamacenado, es decir, quiero decir, que la instruccion directa es sumamente sencilla y por ende el procedimiento deberia ser de la misma manera y logica, pero claro, con su sintaxis respectiva. Entonces estoy atascado en la instruccion directa y el codigo delphi, que tambien esta super sencillo y cuando se ejecuta no logra hacer los cambios. ![]() Realmente no veo el problema para que no me de los resultados deseados, simplemente no veo el error. ![]() Gracias por su atencion... Ah y claro que necesito resolver esta situacion... ![]() |
|
#7
|
||||
|
||||
|
Esta es la instruccion que ejecuto directamente desde delphi:
|
|
#8
|
||||
|
||||
|
jajaja... ahora un método nuevo, con este ya van 3 formas distintas.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#9
|
||||
|
||||
|
Es que en cada uno de las 3 formas... no nos has dado toda la información.
De todas formas lo de emplear "Consumo", "Residencial", etc. es una muy mala idea porque influyen varios factores que pueden hacer que no funcione, si pones "consumo", por ejemplo, ya no funcionará, tampoco funcionará dependiendo del tipo de dato usado en crear el campo, que tampoco nos has puesto la estructura de la tabla. Por ejemplo, si usas un campo de cadena fija, digamos que un char(20) y almacenas el valor "Consumo" que tiene 7 caracteres, realmente no se está almacenando "Consumo" sino "Consumo ", así que cuando vas a hacer el filtro por ese campo, nunca te funcionará. Si usas varchar(20) no habrá problema porque él sólo quita los espacios... o no, depende de la versión de firebird/interbase que uses, porque en las versiones antiguas, la firebird 1.0 todavía no tenía solucionado el fallo de que los varchar se guardaban también con los espacios. Estos son simples ejemplos de por lo qu einsistimos mucho que necesitamos mucha más información, lo más completa posible, para poder ayudar.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#10
|
||||
|
||||
|
Perfecto.
Cita:
Cita:
Olvídate de Delphi por ahora, y céntrate en el caso más simple posible, en hacerlo funcionar como consulta en IB-Expert. Una vez te funcione la consulta, ya lo puedes empaquetar en el procedimiento almacenado y probarlo, para finalmente ejecutarlo en Delphi. Así pues volvamos a las transacciones en IB-Expert. La única forma en que eso te va a funcionar es que cuando lances el Update, confirmes la transacción. Una vez confirmada la transacción del Update, ya puedes abrir una consulta nueva, con una transacción nueva, para comprobar si se han modificado los registros. Si no sigues estos pasos (si no confirmas la transacción de modificación o si no abres la transacción de consulta después de haber confirmado la de modificación), no podrás ver los datos modificados. Asegúrate de descartar que no tengas el problema simplemente por un mal uso de las transacciones, y una vez descartemos esa posibilidad podremos investigar otras causas. NOTA: Si el problema no es la transacción, yo te recomiendo simplificar la consulta al máximo, hasta tener una consulta mínima que funcione (aunque evidentemente no hará todo lo que necesitas). Y una vez tengas como partida una consulta funcionando, que modifica correctamente datos, entonces le vas agregando poco a poco cláusulas SQL en el WHERE, probando su comportamiento a cada modificación, para identificar cual es la que hace que no funcione como tu esperas. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#11
|
||||
|
||||
|
Buenos dias,
Estoy totalmente de acuerdo con guillotmarc, olvidemonos de delphi por el momento, cada vez que ejecuto un SP confirmo la transaccion y luego consulto, y no actualiza, ahora bien, he tratado de armar la consulta lo mas especificamente posible (corrigeme si es mala practica), para tratar de ir al registro especificamente y hacer el cambio respectivo y si lo ejecuta, pero, cuando intente en una de las pruebas hacerlo por lote de registro es ahi el problema que no lo hace. Inclusive he creado una tabla con menos de la cantidad de registro de la actual (380000), por decir, de los ultimos dos years y no ha funcionado. He cambiado el nombre SP y coloque act_impuesto: ======================
========================= Como veran tambien he quitado el suspend; de la ultima linea de SP. Y no hace los cambios todavia. Segun recomienda Casimiro Lo unico que no he hecho es hacer las pruebas en flamerobin. Y un detalle que no se si valga la pena, es que cuando ejecuto el SP lo hago desde el icono que me indica ibexpert que ejecuta el procedimiento o en su defecto F9 |
|
#12
|
||||
|
||||
|
Pero lo ejecutas así:
Código:
execute procedure COMOSELLAME("Residencial","Consumo",1,2010)
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Correccion de Sintaxis | sierraja | Firebird e Interbase | 9 | 28-10-2008 23:34:14 |
| Correccion ortografica | Iskariote0087 | Varios | 4 | 23-02-2008 10:42:09 |
| Una pequeña corrección | Faust | Varios | 1 | 07-07-2006 07:10:39 |
|