![]() |
![]() |
| 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
|
|||
|
|||
|
Lo que propone Lepe estaria bien, pero resulta que el name nunca llega hasta el codigo donde se crea el cursor.
He puesto un comprobante para que salte si al crear el cursor name<>'', y ninguno de los cursores recibe valor en name. Ni los puestos en tiempo de diseño, ni los creados en ejecucion (añadiendo query.name explicitamente), tanto querys como datasets. Creo que Al Gonzaléz me advirtió de que esto pasaria, aunque no se como lograr que funcione. Yo pude reproducir el error con cursores de un solo digito, y las sentencias más afectadas eran las de tablas de sistema, ya que no se en que transacción estan, ni cada cuanto tiempo se abren y cierran. Con las sentencias SQL que creo yo acostumbro a abrir la transaccion, ejecutar el SQL y cerrarla. Como los cursores creo que tienen ambito a nivel de transacion, no es facil que coincidan dos cursores abiertos con el mismo nombre. |
|
#2
|
||||
|
||||
|
Creo que no estoy entendiendo algo.... no puede ser tan fácil, a ver, yo he hecho lo siguiente:
- en mdosql.pas he añadido una nueva propiedad pública al TMDOSQL:
y ahora en el Prepare:
FCursor es una variable protegida, ni propiedad ni nada, es una simple y mortar variable, pues la reuso y me quedo tan pancho. - Guardo y cierro todo. - Abro el paquete de los mdo que está en la carpeta "source" con nombre mdo_dX, pulso F12 para que aparezca la ventanita de compilación y pulso el botón compilar. - Listo, Ahora ya tengo una propiedad en el TMDOSQL que se llama "UniqueCursorName:string" que desde mi programa principal puedo asignar su valor. En el caso de que se te olvide asignar esa propiedad, en ejecución obtendrás una excepción muy bonita. Además no creo que se te olvide nunca... ![]() ¿qué es lo que me estoy perdiendo? PD: Si ahora me alguien con aquello de que esto es una chapuza más grande, pues que lo pinte de amarillito y con flores ![]() Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 14-12-2008 a las 22:46:56. |
|
#3
|
|||
|
|||
|
Sin haberlo probado, y arriesgo de equivocarme, ¿cual seria el cursor de las sentencias que acceden a las tablas del sistema? Creo que estaria vacio.
Y en los Dataset que tienen las 4 sentencias de SELECT, INSERT, UPDATE y DELETE?? Y en los script, backup, restore?? El problema es que name llega en blanco al crear el cursor, si llegase el nombre del query (dataset, script, ...) ya lo podriamos usar como identificador, y si le añadimos la hora, o la randomstring o las dos cosas ya tendriamos un identificador unico para cualquier SQL que pase por cualquier MDO. Yo no se como resolver lo del name, no tengo ni idea de porque no llega hasta el codigo donde se asigna al cursor. De momento, he dejado la linea del cursor asi: La rutina que ejecuta el randseed seguira puesta en el timer, reiniciandolo cada 5 minutos. En cuanto lo pruebe os comento. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Mensaje de error extraño | Sick boy | Firebird e Interbase | 0 | 12-12-2008 11:22:26 |
| Error Extraño | SysAdminGCS | Varios | 1 | 18-08-2007 16:30:49 |
| Error Extraño | Esau | SQL | 4 | 17-06-2005 22:44:16 |
| error extraño | gilberto_1126 | Varios | 2 | 05-09-2004 01:01:01 |
| Error Extraño | Esau | OOP | 5 | 19-11-2003 18:01:32 |
|