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.933
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.933
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.933
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
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 16:52:52.


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