Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-07-2006
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 22
mlara Va por buen camino
Open en MDOQuery

Hola nuevamente... tengo este caso con un MDOQuery. Alguien sabrá de esto?

Uso: Delphi 7, FireBird 2, y MDOLibRC2.

Tengo un MDOQuery con una consulta muy simple:

Código:
select * from "Users"
Cuando ejecuto el método Open, me da este error: "Range check error". Si ejecuto desde Delphi, se abre el archivo MDOCustomDataSet.pas y el cursor se localiza en la línea 1625.

Es como si fuese necesario agregar campos al MDOQuery usando el editor. Pero no necesito hacer esto, ya que con el mismo componente ejecuto mil consultas en toda mi aplicación.

Gracias...
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.
Responder Con Cita
  #2  
Antiguo 04-07-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Chequea este hilo
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 04-07-2006
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 22
mlara Va por buen camino
Nada vtdeleon. Deshabilité la opción Range Checking en las opciones de proyecto, y no soluciona nada. También recompilé sin la opción 'Range Checking' e instalé nuevamente los componentes. Incluso tuve que recompilar otros (los Hash que uso para validar contraseñas). Ensayé también poniendo los *.pas en carpetas \pas, y bueno, de repente ya no me da el mismo error. El error que sale es otro (Dynamic SQL Error) relacionado con el archivo MDO.pas. Pero si vuelvo a poner los *.pas en el directorio original (runtime), vuelve a salir el error inicial. No importa si compilo con la opción 'Range Checking' o sin ella.

No sé si otra persona tenga idea de lo que pasa. Mientras sigo haciendo pruebas...
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.

Última edición por mlara fecha: 04-07-2006 a las 03:27:01.
Responder Con Cita
  #4  
Antiguo 04-07-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Mi experiencia con esos componentes en estos momento es casi nula, pero llegaremos al paso al asunto.
Cita:
El error que sale es otro (Dynamic SQL Error)[...]
Probaste quitando las comillas a la table?
Si agregas los campos usando el editor, funciona?
Invoca solo un campo a ver...
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #5  
Antiguo 04-07-2006
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 22
mlara Va por buen camino
Ok,... ahora el error es otro (en mi código), así que el asunto inicial ya está solucionado.

Conclusión: Si alguien tiene el mismo problema puede probar esto:

1. Recomiple sin la opción 'Range checking' y reinstale los componentes MDOLib.
2. Como Delphi seguirá mostrando el mismo mensaje, mueva los *.pas que se encuentran en la carpeta runtime a otra carpeta (se puede llamar \pas), y listo.

vtdeleon, muchas gracias. Voy a solucionar mi nuevo inconveniente, y espero no frenarme mucho.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.

Última edición por mlara fecha: 04-07-2006 a las 03:54:08.
Responder Con Cita
  #6  
Antiguo 04-07-2006
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Cita:
tengo este caso con un MDOQuery.
Usa en su lugar el MDODataset q es igual q un query pero puede hacerse Live si es necesario..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #7  
Antiguo 04-07-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
LLevo usando los MDO algunos meses, MDODataset, MDOQuery, MDOSql y el monitor de sql, no he visto jamás ese fallo que comentas.

El problema con las comillas dobles no debe dar problemas, ya que el MDOCustomDataset tiene una propiedad de "doublequote identifiers", lo he probado y funciona a las mil maravillas.

El problema más bien lo veo de SQL, puede que una udf, palabra reservada de SQL, etc se llame igual que tu tabla Users, y por ahí empiezan los problemas. No sabe identificar si es una tabla o una función.

Yo le cambiaría el nombre a la tabla si estuviese a tiempo.

Tampoco lo cambiaría por un TMDODataset, ya que este último está pensado para actualizar, y no tiene sentido si solo vas a consultar. Incluso si no necesitas moverte por los registros hacia atrás, puedes usar un TMDOSql, el cual es un componente más liviano todavía que el MDOQUERY.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 04-07-2006
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Cita:
Tampoco lo cambiaría por un TMDODataset
El MDOQuery es solo para compatibilidad con el componente TQuery del BDE, el MDODataset sirve para actualizar solo si le asigna SQL a sus InsertSQL, DeleteSQL etc. En caso contrario es igual q un MDOQuery.

La preferencia del MDODataset es cuando no se sabe si la query va ser actualizable o no, se pone al principio solo con el SelectSQL y cuando se quiere hacerla modificable se configuran las otras, ademas uno puede borrar la unidad MDOQuery de la uses y ahorrar unos bits
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #9  
Antiguo 04-07-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Realmente no lo había mirado, pero ahora sip:

En total son unas 40 lineas de código para:
Código Delphi [-]
constructor TMDOCustomDataSet.Create(AOwner: TComponent);
...
  FQDelete := TMDOSQL.Create(Self);
  FQDelete.OnSQLChanging := SQLChanging;
  FQDelete.GoToFirstRecordOnExecute := False;
  FQInsert := TMDOSQL.Create(Self);
  FQInsert.OnSQLChanging := SQLChanging;
  FQInsert.GoToFirstRecordOnExecute := False;
  FQRefresh := TMDOSQL.Create(Self);
  FQRefresh.OnSQLChanging := SQLChanging;
  FQRefresh.GoToFirstRecordOnExecute := False;
  FQSelect := TMDOSQL.Create(Self);
  FQSelect.OnSQLChanging := SQLChanging;
  FQSelect.GoToFirstRecordOnExecute := False;
  FQModify := TMDOSQL.Create(Self);
  FQModify.OnSQLChanging := SQLChanging;
  FQModify.GoToFirstRecordOnExecute := False;
...

Sobre el Tquery, muestro el constructor completo:
Código Delphi [-]
constructor TMDOQuery.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FSQL := TStringList.Create;
  TStringList(SQL).OnChange := QueryChanged;
  FParams := TParams.Create(Self);
  ParamCheck := True;
  FGenerateParamNames := False;
  FRowsAffected := -1;
end;

Aunque TMDOQuery deriva de TMDOCustomDataset, hace un override del constructor.

Por cierto, gracias por hacerme mirar el código, seguiré usando TQuerys cuando solo vaya a consultar datos

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #10  
Antiguo 05-07-2006
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 22
mlara Va por buen camino
Muy interesantes sus apreciaciones. Por lo que a mí respecta, pues usaré el MDOQuery, ya que trabajo en la migración de un sistema, y necesito trabajar con componentes compatibles a los usados anteriormente.

Con respecto a lo del mensaje 'Range check error', he seguido haciendo pruebas y al parecer lo que tengo es un conflicto con componentes Hash, que uso para cifrar las contraseñas y compararlas. Pero por fortuna, he logrado hacer correr mi aplicación. Ya voy más adelante.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
window.open Marquitos HTML, Javascript y otros 1 02-05-2006 18:39:51
Delphi con Open GL jeluso Gráficos 3 05-09-2005 21:57:41
Too Many open Tables rogeriobeltran Firebird e Interbase 0 28-11-2004 01:00:07
Programación Open Tools Api sur-se OOP 2 04-11-2004 18:19:09
Error while trying to open file nefy Firebird e Interbase 4 15-09-2004 20:02:42


La franja horaria es GMT +2. Ahora son las 08:30:03.


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