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
|
|||
|
|||
Manejo Del Free Y El Destroy
Hola con todos:
Sigo con el problema de "Capacibylity not Suported" o aveces "Invalid Parameter", no lo comenté antes pero trabajo con base de datos PARADOX y con delphi 5, he estado investigando sobre el metodos del query y encontré uno por ahi que dice FREE, dice algo como para liberar memoria y otro DESTROY que dice para destruir el objeto. Esto tiene algo que ver con mi problema gracias, y para que se utilizan esos métodos y cómo. Si no es así por donde puede estar mi problema, el asunto es que por mas que se demore la consulta no se debe colgar, hay alguna forma de manejar esto, tal vez la configuración del BDE(aunque he estado probando algo al respecto pero nada) GRACIAS.........es de suma urgencia.......... |
#2
|
||||
|
||||
No, o creo que tenga nada que ver.
"Capability not supported" generalmente se refiere a una instrucción sql que el bde no maneja. Recuerda que el bde maneja lo que se llama "sql local" que es un subconjunto del sql estándar de manera que, aun cuando reconoce la instrucción, no puede ejecutarla. // Saludos |
#3
|
|||
|
|||
Gracias Ramon......sigo
Si Ramon, pero di fuera por lo que tu dices no se ejecutaria para ningun parametro de clientes, la cosa aqui es que se ejecuta para un pequeno rango de clientes y este es el código.
El query1 tiene la siguiente sentencia "SELECT DISTINCT COD_CLIE, REFER from CUENTAS" "WHERE COD_CLIE=a1 and FECHA_CORTE<=a2 y esta es la parte del código que se tiene que ejecutar while not eof CLIENTES do begin query1.close; query1.Unprepared;//se supone que es para liberar recursos query1.params[0].value:=CLIENTESCOD_CLIE.value; query1.params[1].value:=fecha//una fecha x query1.prepared;//se supone que es para asignar recursos para la consulta query1.open; while not query1.eof do begin //aca voy insertando datos en una tabla auxiliar query1.next; end; CLIENTES.next; end; He estado tratando de ver si es alguna configuracion del BDE ya que trabajo con paradox, pero no encuentro nada, a ver si me puedes hechar una mano GRACIAS........... |
#4
|
||||
|
||||
Comencemos aclarando que mi nombre no es Ramón, sino Román.
Pasado este álgido punto te comento que a juzgar por lo que veo en tu código los parámetros en tu consulta sql están mal especificados. Cada parámetro debe estar antecedido de ':' Código:
SELECT DISTINCT COD_CLIE, REFER from CUENTAS WHERE COD_CLIE=:a1 and FECHA_CORTE<=:a2 Código:
Query1.ParamByName('a1').AsInteger := CLIENTESCOD_CLIE.value; Query1.ParamByName('a2').AsDate := fecha Por otra parte, no creo que usar Query1.Unprepare sirva para liberar recursos y de hecho no tiene mucho sentido usar Unprepare y Prepare cada vez que ejecutes la consulta. El método Prepare sirve para consultas parametrizadas que se usan muchas veces y en las que sólo cambia el valor de los parámetros. Prepare 'compila' la consulta de manera que subsecuentes llamadas se realicen más rápidamente y en tal caso se hace una vez antes de muchas consultas del mismo tipo y sólo se usa Unprepare al final de estas muchas consultas. Si la consulta no se usa demasiado no creo que valga mucho la pena usar Prepare y Unprepare. // Saludos |
#5
|
|||
|
|||
Gracias Roman........
Efectivamente, la consulta está correcta, se ejecuta para un rango no muy grande de clientes, el problema viene para una tabla de clientes muy grande(unos 10,000 registros), ojo que uso paradox, la consulta tiene que recorrer esos 10,000 clientes y buscar sus referencias en la tabla cuentas que son mas de 100,000 registros hice la prueba compilando paso a paso (F8) y cuando llega la consulta se demora ligeramnete en abrirla(tengo que presionar hasta 5 veces el F8, para que abra la consulta), tal vez haya algo que hacer, pero la cuestion es que en el mensaje de error me sale "CAPABILYTI NOT SUPPORTED" o en algunos veces "INVALID PARAMETER", mi consulta es que por que me salen esos mensajes, que significan, que tengo que hacer.
OBS: solo me sale cuando la consulta es para un rango de clientes muy grande. Otra cosa, ¿será por que utilizo paradox? GRACIAS........ |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|