Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-07-2004
[mateamargo] mateamargo is offline
Miembro Premium
 
Registrado: jul 2003
Posts: 82
Poder: 21
mateamargo Va por buen camino
Exclamation Problemas select en Oracle

Tengo un componte TQUERY (conectado por ODBC con ORACLE)
en el cual hago :
Código:
query1.sql.add('select * from tabla where fecha >= :fechaini and fecha <= :fechafin ');
query1.parambyname('fechaini').asdatetime := fechainicio;
query1.parambyname('fechafin').asdatetime := fechafinal;
query1.open;
Me da un mensaje de error 'operacion no permitida'.
si hago lo mismo pero sin los parametros de fecha funciona correctamente.
Desde ya muchas gracias.
Responder Con Cita
  #2  
Antiguo 05-07-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
¿Tenes la base de datos abierta y conectada al DataSet?
¿Limpias el SQL antes de hacer el Add?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 05-07-2004
Avatar de vic_ia
vic_ia vic_ia is offline
Miembro
 
Registrado: ene 2004
Posts: 238
Poder: 21
vic_ia Va por buen camino
hola...
Cita:
Empezado por mateamargo
Código:
query1.sql.add('select * from tabla where fecha >= :fechaini and fecha <= :fechafin ');
query1.parambyname('fechaini').asdatetime := fechainicio;
query1.parambyname('fechafin').asdatetime := fechafinal;
query1.open;
Me da un mensaje de error 'operacion no permitida'.
me parece que tu error podria ser en donde tienes el where... por que no pones cada sentencia de comparación entre parentesis, por que, al menos a mi me ha sucedido con otros motores y los querys que el orden en que compara, toma primero el "and" antes de las comparaciones, es decir, sugiero lo pongas de esta forma....
Código:
query1.sql.add('select * from tabla where (fecha >= :fechaini) and (fecha <= :fechafin) ');
espero te sirva...

saludos...
Responder Con Cita
  #4  
Antiguo 05-07-2004
[mateamargo] mateamargo is offline
Miembro Premium
 
Registrado: jul 2003
Posts: 82
Poder: 21
mateamargo Va por buen camino
Question Problemas select en Oracle

Hola,
Gracias por tu respuesta.
Asi como tu me decis fue como yo lo hice y no funciona, es mas en el hilo original aclare que si no pongo como parametros las fechas o sea algo como esto
Código:
query1.close;
query1.sql.add('select * from tabla where campo1= :parametro1');
query1.parambyname('parametro1').asinteger := numero;
query1.open;
Desde ya muchas gracias.
Responder Con Cita
  #5  
Antiguo 05-07-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
El error es un ORA-XXXX????

¿Revisaste que el query este enlazado y la base conectada?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #6  
Antiguo 05-07-2004
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Poder: 20
ruina Va por buen camino
mira a ver si asignandole el tipo al parametro antes....

Query.ParamByName('fechaini').DataType:=ftDate
ó
Query.ParamByName('fechaini').DataType:=ftDateTime


es que no tengo ningun oracle por aqui cerca para probar....
Responder Con Cita
  #7  
Antiguo 05-07-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por ruina
mira a ver si asignandole el tipo al parametro antes....

Query.ParamByName('fechaini').DataType:=ftDate
ó
Query.ParamByName('fechaini').DataType:=ftDateTime


es que no tengo ningun oracle por aqui cerca para probar....
Cuando utilizas Parametro.AsTipo, puedes prescindir de asignar manualment el tipo de parámetro.

Código Delphi [-]
procedure TParam.SetAsDateTime(const Value: TDateTime);
begin
  FDataType := ftDateTime;
  Self.Value := Value
end;
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #8  
Antiguo 07-07-2004
Bagy Bagy is offline
Registrado
 
Registrado: jun 2004
Posts: 9
Poder: 0
Bagy Va por buen camino
Según yo es porque te falta un prepare, esto para que se incialicen los parametros que estas definiendo dentro de tu query, si no quieres utilizar esta instrucción tienes que crear los parametros. Ejemplos

--Prepare
query1.close;
query1.sql.add('select * from tabla where campo1= arametro1')
query1.prepare;
query1.parambyname('parametro1').asinteger := numero;
query1.open;

-- Creación de parametro
query1.close;
query1.sql.add('select * from tabla where campo1= arametro1')
Query1.Params.CreateParam(ftdate,'fecha1',ptinput);//o algo asi
query1.parambyname('parametro1').asinteger := numero;
query1.open;



-- Otra opcion
En el componente tquery, en la propiedad SQL, escribe tu query que deseas
ejecutar después en la propiedad params deben de aparecerte tus parametros
que definiste com arametro y ahi le indicas el DataType y el ParamType.
Espero te ayude !!!
Responder Con Cita
  #9  
Antiguo 07-07-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Los parámetros se crean dinámicamente al asignar el SQL, por otro lado si no haces el prepare tendras una merma en la performance si ejecutas repetidamente el SQL, pero no por eso dejará de funcionar.

Mateamargo... ¿Lo has solucionado?... ¿Puedes responder a alguna de mis preguntas?
Cita:
Empezado por delphi.com.ar
¿Tenes la base de datos abierta y conectada al DataSet?
¿Limpias el SQL antes de hacer el Add?
El error es un ORA-XXXX????
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #10  
Antiguo 07-07-2004
[mateamargo] mateamargo is offline
Miembro Premium
 
Registrado: jul 2003
Posts: 82
Poder: 21
mateamargo Va por buen camino
Hola,
En realidad el select lo hago en la propiedad sql del componente.
Estoy conectado a la base y puedo ejecutar cualquier otra consulta sin parametros.
El mensaje de error que me da es :
"Operation not applicable"
Desde ya muchas gracias.
Responder Con Cita
  #11  
Antiguo 07-07-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por mateamargo
...El mensaje de error que me da es: "Operation not applicable"...
Si el mensaje tiene el formato: Prefijo-Número: Mensaje..., donde el prefijo mas normal es ORA referente a "Generic Oracle Server Errors", se trata de errores de Oracle. Tu error me da la impresión que se trata de un problema de conexión...

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #12  
Antiguo 08-07-2004
[mateamargo] mateamargo is offline
Miembro Premium
 
Registrado: jul 2003
Posts: 82
Poder: 21
mateamargo Va por buen camino
Question

Hola,
Gracias por tu respuesta.
Pero si es un error de conexión no me debería dar error para todos los sql que hago a dicha base ?
Hago unos cuantos de la forma
Código:
select * from tabla
Y funcionan perfectamente.
Desde ya muchas gracias
Responder Con Cita
  #13  
Antiguo 08-07-2004
^TxTeZ^ ^TxTeZ^ is offline
Registrado
 
Registrado: jul 2004
Posts: 8
Poder: 0
^TxTeZ^ Va por buen camino
a lo mejor es una chorrada lo que digo, pero ¿has probado con un Beetwen?
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 06:39:33.


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
Copyright 1996-2007 Club Delphi