![]() |
![]() |
| 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
|
||||
|
||||
|
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 |
|
#2
|
||||
|
||||
|
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 |
|
#3
|
||||
|
||||
|
Hola, claro! lo ejecuto como me indicas. Y cuando hablaba de por lotes, me referia a que utilizaba un grupo de registros mas peque#os pero sobre la misma tabla....
|
|
#4
|
||||
|
||||
|
Es igual si tienes un registro o si tienes mil millones de registros, pero si haces esto:
update facturacion set base_imponible = cloaca where tipo_tarifa= :x_tipo_tarifa and tipo_factura= :x_tipo_factura and extract(month from fecha)= :x_mes and extract(year from fecha)=:x_year; estás asignando el valor que tenga el campo 'cloaca' al campo 'base_imponible', es IMPOSIBLE que no te actualice a tí, salvo que pongas unos parámetros que no existan registros con ese filtro. Te has fijado en la imagen que puse antes, justo debajo del "execute procedure" verás que hay un select, si lo ejecutas verás los registros que te devuelve, todos esos registros son los que se actualizarán ejecutando el procedimiento almacenado. Pruébalo y mira cuántos registros devuelve.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal Última edición por Casimiro Noteví fecha: 27-04-2010 a las 19:44:09. Razón: error ortográfico |
|
#5
|
||||
|
||||
|
Hola.
En un caso tan sencillo, yo no utilizaría ningún procedimiento almacenado, ejecutaría directamente la sentencia update : Código:
update facturacion set base_imponible = cloaca where tipo_tarifa=:x_tipo_tarifa and tipo_factura=:x_tipo_factura and extract(month from fecha)=:x_mes and extract(year from fecha)=:x_year; Código:
update facturacion set base_imponible = cloaca Siguiente prueba : Código:
update facturacion set base_imponible = cloaca where tipo_tarifa=:x_tipo_tarifa Código:
update facturacion set base_imponible = cloaca where tipo_tarifa=:x_tipo_tarifa and tipo_factura=:x_tipo_factura NOTA: entre prueba y prueba, hazte una copia del archivo de datos, para no machacar facturas que no debiera. Una vez sepamos cual es la cláusula que no hace lo que se espera de ella, debería ser muy fácil solucionarlo. Y es que como dice Casimiro, el problema tiene que estar en la cláusula WHERE y los parámetros que se le pasan. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). Última edición por guillotmarc fecha: 27-04-2010 a las 19:24:20. |
|
#6
|
||||
|
||||
|
Cita:
Cita:
Bueno de hecho lo que me queda realizar es un select con lsa condiciones y de seguro que salen los registros deseados y hacer la actualizacion a pie como se le dice en mi pais. No veo otra salida. Hemos utilizado una simple instruccion a nivel del ibexpert sin necesidad de SP y tampoo los realiza pero con un select si aparecen pero sin los cambios. |
|
#7
|
||||
|
||||
|
Perdona que sea un poco bruto, pero: NO ME LO PUEDO CREER
![]() Ten en cuenta que estamos hablando de algo muy básico.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#8
|
||||
|
||||
|
Es tan sencillo esta instruccion que no se cree, pero tengo varios meses y cuando digo varios meses, es en serio, (son varios meses
) he realizado bastantes pruebas buscando una justificacion para esto y no la encuentro, pero debe ser algun contenido que no entra en el filtro, tal y cual como lo dice el amigo Casimiro. Solo me falta eliminar dicho registro y volverlo a crear (no se si teine sentido o no ). Tambien aclaro que la inclusion de los nuevos meses ya viene con los datos de base imponible y excento con su justo valor. ![]() |
|
#9
|
||||
|
||||
|
Veamos, amigo, esto es fácil, ejecuta este select:
Código:
select count(*) from facturacion where tipo_tarifa= "Residencial" and tipo_factura= "Consumo" and extract(month from fecha)= 1 and extract(year from fecha)= 2010 Pues toda esa cantidad de registros son los que se modificarán si ejecutas el procedimiento almacenado con los mismos valores: Código:
execute procedure COMOSELLAME("Residencial","Consumo",1,2010)
Código:
select count(*) from facturacion where tipo_tarifa= "Residencial" and tipo_factura= "Consumo" and extract(month from fecha)= 1 Código:
select count(*) from facturacion where tipo_tarifa= "Residencial" and tipo_factura= "Consumo" Código:
select count(*) from facturacion where tipo_tarifa= "Residencial" Código:
select count(*) from facturacion ![]() ![]() ![]() Haz estas pruebas y nos cuentas, pero tal y como te lo he puesto, ok?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#10
|
||||
|
||||
|
Cita:
Aunque Casimiro tiene toda la razón en que va a ser mucho más rápido detectar el conflicto dentro de la cláusula WHERE utilizando sentencias SELECT y no UPDATES. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#11
|
||||
|
||||
|
Buen dia a todos, efectivamente a medida que vamos cerrando las condiciones del WHERE vamos determinando cual de los filtros tiene el problema (estoy utilizando select en vez de update). En las diferentes pruebas me he dado cuenta que los registros con tarifas "Especial" salen en el select pero no se actualizan en el update, la prueba estuvo centrada en el year 2009 mes diciembre y tarifa "Especial". Tambien les informo, que por casualidad el registro que siempre verificaba es el de tarifa "Especial" y es el que no entra en el filtro. Ahora bien, el contenido del registro cumple con lsa condiciones del filtro, pero no hace caso al mismo. Inclusive lo he eliminado y vuelto a crear pero persiste.
![]() |
|
#12
|
||||
|
||||
|
Vas a tener que pasarnos la base de datos
![]()
__________________
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 |
|