Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Mensaje Operation no applicable (https://www.clubdelphi.com/foros/showthread.php?t=30300)

zugazua2001 03-04-2006 13:14:53

Mensaje Operation no applicable
 
Hola amigos del foro, me ha ocurrido algo muy extraño.Yo uso delphi 5 con paradox. Bien arme una aplicacion que utiliza tres modulos que acceden todos con distintos alias a las tablas de mi base de datos(lo defini asi para aumentar la legibilidad de mi aplicacion)
Cuando yo llamo a unos Querys que hago al realizar el Open del query me aparece "OPERACION NOT APLICABLE", como puedo tener mas control sobre mi base de datos, yo utilizo bde.
Detalle de lo realizado:
Cree un modulo lo enlace con mi alias
Dentro meti las tablas y los querys que yo necesitaba
Dentro de cada tabla y query meti un TDataSource.

A la propiedad active de la base de datos le puse active
a la propiedad active de cada una de las tablas y querys le puse false.
Cuando abro desde una ficha la tabla o query realizo el Open y al cerrar la ficha el Close.

Que puede ser que me este ocurriendo?
Esta bien tener las tablas con la propiedad active= False.

Yo hice esto porque de mas de una tabla accedo a la misma tabla fisica y porque tengo definida alguna que otra relacion master-slaves

Saludos y muchisimas gracias

Lepe 03-04-2006 16:32:17

Aunque una tabla esté cerrada, debería funcionar la consulta (probado con SELECT), de todas formas, sería bueno ver el SQL de las consultas, igual hace falta abrir las tablas.

Te recomiendo que en diseño lo tengas todo cerrado, tablas, consultas y TDatabases, despues en ejecución, abres lo que necesites, lo normal es abrir por el orden: Tdatabase, Tablas, Consultas.

Saludos

zugazua2001 03-04-2006 23:42:47

Por cada ficha que abro es necesario todo.
 
Hola, muchisimas gracias por la aclaracion.
Por cada ficha que uno abre, es necesario abrir la base, y la tabla o query y al cerrarla tambien cerrar todo?
Yo tambien utilizo alguna que otra relacion Master-Slaves. Como es su correcto empleo?

Muchas gracias por todo.
Cita:

Empezado por Lepe
Aunque una tabla esté cerrada, debería funcionar la consulta (probado con SELECT), de todas formas, sería bueno ver el SQL de las consultas, igual hace falta abrir las tablas.

Te recomiendo que en diseño lo tengas todo cerrado, tablas, consultas y TDatabases, despues en ejecución, abres lo que necesites, lo normal es abrir por el orden: Tdatabase, Tablas, Consultas.

Saludos


Lepe 04-04-2006 10:57:08

Sobre ese tema hay discusiones de todo tipo:
- Hay gente que solo abre lo que necesita, despues cierra lo que ha abierto.
- Otros mantienen las tablas abierta todo el tiempo y solo se preocupan de cerrarlas al salir del programa.

Debe tenerse en cuenta la cantidad de tablas que tienes, si son muchas (por poner un número.... digamos más de 100 tablas), deberías abrir y cerrar siempre.

En tiempo de diseño, lo cierro todo. Al abrir el programa abro la Base y Tablas , las consultas las abro y cierro según necesite.

En principio, la Base es necesaria que esté abierta para realizar cualquier operación en la base de datos (incluido abrir y cerrar tablas).

En cuanto a las relaciones Master-Detail:
- Para mostrar datos: Primero se abre la Maestra y despues la Detalle.
- Para añadir registros: Primero se graba la Maestra y despues la Detalle.
- Para borrar: Primero en la Detalle y despues en la Maestra, ya que Paradox, aunque viene las opciones de integridad referencial, no lo tiene implementado.

Un detalle que se me olvidaba: Si tienes los TTables sobre el formulario, pues tendrás que abrirlo. Si tienes los TTables en un Datamodule, puedes dejarlo abierto. Quizás sea bueno poner la Base y TTables en un Datamodule, y despues las consultas sobre el Formulario, pero todo esto depende de la lógica de tu programa, es decir, si quieres abrir dos ventanas de Clientes, cada una mostrando un cliente distinto, tendrás que poner el TTable en el formulario. Si solo permites mostrar una ventana de Clientes al mismo tiempo, puedes poner el TTable en el Datamodule.


Saludos

zugazua2001 04-04-2006 19:33:53

excep.. EdbengineError with message Invalid parameters
 
Ese es el bendito error que me aparece cuando intento ejecutar algun query.
Eso antes no me pasaba. Con las tablas no me tira error.
Hago

Modulo.Query.Close;
Modulo.Query.ParamByName('campo').AsTipo:= Valor;
Modulo.Query.Open;

y ahi me tira el error.
Tengo muchisimas consultas que andaban y de un momento para otro me tiran ese error:

PROJECT RAISED EXCEPTION Class EdbEngineError with message 'Invalid Parameter' Process stopped. Use Stop or Run To Continue.

Si creo otra aplicacion y creo un query en particular no me pasa nada.

Les agradeceria me tiraran alguna idea de que puede ser este error.
Muchas gracias a todos

Lepe 05-04-2006 10:01:30

Igual lo has escrito rápido y por eso no lo entiendo bien, supongo que lo tendrás así:

Código SQL [-]
SELECT * FROM MI TABLA WHERE CODIGO = : prCodigo
A los PaRámetros me gusta anteponerles el "pr" para despues no equivocarme con los nombres de campos, no he probado a ponerle el mismo nombre al parámetro que al campo, igual viene los problemas por ahí, no lo sé.

Código Delphi [-]
Modulo.Query.Close;
Modulo.Query.ParamByName('prCodigo').AsTipo:= Valor;
Modulo.Query.Open;

En los parámetros de la consulta verifica el tipo del parámetro, debe ser "Input" igual con las pruebas tiene otro valor.


Si te sigue fallando, pon el código SQL exacto, así como el trozo de código para abrirlo.

Saludos


La franja horaria es GMT +2. Ahora son las 17:55:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi