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 29-07-2004
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 21
silviodp Va por buen camino
Error en Query

Que siginifica éste error 'Capability not supported'
Me lo arroja cuando quiero activar la Query.
Gracias.

Silvio.-
Responder Con Cita
  #2  
Antiguo 29-07-2004
Avatar de __marcsc
__marcsc __marcsc is offline
Miembro
 
Registrado: may 2003
Ubicación: Girona
Posts: 577
Poder: 22
__marcsc Va por buen camino
Eso significa que intentas utilizar alguna característica en la sentencia SQL que tu motor no soporta.

Cuál es la sentencia SQL y qué motor y componentes de acceso utilizas?
Responder Con Cita
  #3  
Antiguo 29-07-2004
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Poder: 20
ruina Va por buen camino
asi a ojo diria que has activado la propiedad Requestlive del query. Un Query solo puede ser "live" (actualizable) y comportarse como una tabla con consultas "simples" es decir, que solo impliquen a una tabla (nada de joins) y que el where sea, también, sencillo (nada de subconsultas).


para todo lo demas masterca... digoooo TUpdateSQL, que cuesta un poco mas ponerse con él pero es muy potente.
__________________
todo el mundo debe creer en algo... yo creo que voy a tomarme otra copa.
Responder Con Cita
  #4  
Antiguo 29-07-2004
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 21
silviodp Va por buen camino
Error en Query

Me doy cuenta que ese error lo da cuando agrego a la lista de campos a listar el campo 'User', que es un campo que guarda direcciones de correo electronico.
Otro error que no entiendo es 'Type mismatch in expresion', la verdad no puedo logar saber qu es...
Gracias.
La consulta es la siguiente:
Código:
SELECT IdUsuario,Nombre,Telefono,Tarifa,Nrec FROM Usuarios2
WHERE %s BETWEEN :DESDE AND :HASTA
ORDER BY %s
Silvio.-
Responder Con Cita
  #5  
Antiguo 29-07-2004
Avatar de __marcsc
__marcsc __marcsc is offline
Miembro
 
Registrado: may 2003
Ubicación: Girona
Posts: 577
Poder: 22
__marcsc Va por buen camino
Hola,

ese %s que pones que se supone que es?? Con toda seguridad eso es lo que hace que la consulta no te funcione, tanto por el WHERE como en el ORDER BY.

Puedes explicar qué quieres que haga el query?
Responder Con Cita
  #6  
Antiguo 29-07-2004
Avatar de Tino
Tino Tino is offline
Miembro
 
Registrado: may 2004
Posts: 40
Poder: 0
Tino Va por buen camino
las sqls bien hechas bien parecen

Cita:
Empezado por marcsc

ese %s que pones que se supone que es?? Con toda seguridad eso es lo que hace que la consulta no te funcione, tanto por el WHERE como en el ORDER BY.
Es el %s lo que hace que dé error la SQL, pero no porque esté mal puesto sino porque de seguro que usa la función Format para formar la SQL; una SQL errónea. El error más típico es comparar un campo de tipo texto con una cadena sin entrecomillar (de ahí el type mismatch o error de disparidad de tipos).

Hace una semana, colgué un hilo en el foro sobre el uso de la técnica de usar Format para generar SQLs dinámicas. En verdad, cuando la SQL es muy variable (variabilidad en el FROM o en la SELECT o incluso en el GROUP BY) no es posible usar solo parámetros y en este caso es cuando es muy útil el uso de Format (combinado con el uso de parámetros en lo posible). Bueno, esto perjudica (minimamente) la eficiencia de la consulta y no será muy transportable por si quieres, por ejemplo, migrar de dBase a Informix. Por no hablar del SQL inyectado ....

Tengo esta rútina para depurar SQLs dinámicas que posiblemente os será útil:

Código Delphi [-]
uses Clipbrd;
procedure DepuraString(ATxt: String);
begin
   Clipboard.Clear;
   Clipboard.SetTextBuf(PChar(ATxt));
   ShowMessage(ATxt);
end;


Esta rutina saca una ventana con la SQL que se forma y además la pega en el portapapeles por lo que puedes llevartela a tu editor SQL favorito, ejecutar y ver exactamente donde falla. Para usarla debes llamarla justo antes del Query.Open (cuando ya está formada la SQL):

Código Delphi [-]
   DepuraString(Query.SQL.Text);
   Query.Open;

Una vez capturada la SQL, es muy fácil depurarla.

Saludos.
__________________
El hombre que no lee no tiene ninguna ventaja sobre el que no sabe leer.

Para hacer una buena exposición hay que escribir más de lo que se va a decir, y luego decir más de lo que se escribió.
Responder Con Cita
  #7  
Antiguo 29-07-2004
Avatar de __marcsc
__marcsc __marcsc is offline
Miembro
 
Registrado: may 2003
Ubicación: Girona
Posts: 577
Poder: 22
__marcsc Va por buen camino
Bueno, como ha puesto ese SQL yo entendía que lo ponía en tiempo de diseño en la propiedad SQL del Query. Enentedría que a %s le pueden faltar comillas pero creo que no es el caso dado que la condición seria un poco rebuscada y además lo incluye también en el order by, por lo que realmente parece que en lugar de %s quiere poner un campo.

Por eso pregunto que qué es lo que quiere hacer exacamente con el Query, porqué creo que si explica un poco más y no da un poco de "contexo" será realmente sencillo encontrar el error.

Saludos.

Última edición por __marcsc fecha: 29-07-2004 a las 18:47:24.
Responder Con Cita
  #8  
Antiguo 29-07-2004
Avatar de Tino
Tino Tino is offline
Miembro
 
Registrado: may 2004
Posts: 40
Poder: 0
Tino Va por buen camino
Estoy de acuerdo contigo marcsc. Tan solo comentaba el uso de Format para generar sqls y comprobar que no soy el único que lo usa (no estoy solo en el universo, menos mal) :-P



Sabiendo el motor de bd y la SQL (final) sería inmediato hallar la solución.
Responder Con Cita
  #9  
Antiguo 29-07-2004
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 21
silviodp Va por buen camino
Error en Query

Es exactamente como dice Tino estoy usando Format para realizar consulta dinámica, ese '%s', es un parámetro, y estoy seguro que no es eso lo que estoy haciendo mal porque lo utilizo siempre en mis listados, etc, lo que quería saber, por si no fui claro, es que significaba ese error, nada más.
Estoy usando el DBE, en Delphi 5.
Gracias.-
Responder Con Cita
  #10  
Antiguo 29-07-2004
Avatar de Tino
Tino Tino is offline
Miembro
 
Registrado: may 2004
Posts: 40
Poder: 0
Tino Va por buen camino
'Capability not supported', como ya ha comentado marcsc, significa que el motor de bd no soporta alguna instrucción SQL (no estándar) que estás lanzando. Por eso, necesitariamos saber el tipo de bd (access, paradox, dBase, Ms SQL server, Oracle, etc...) que estás utilizando y la SQL exacta para ser más concretos.

En cuanto al error 'Type mismatch' se trata de un error de tipos y puede ser debido a que estés comparando un campo de tipo cadena con otro tipo de datos, un entero por ejemplo.

Publica tu código y te ayudamos más.
Responder Con Cita
  #11  
Antiguo 30-07-2004
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 21
silviodp Va por buen camino
Error en Query

Estoy utilizando el BDE con tablas Paradox 7, el primer error me di cuenta que lo da cuando en la lista de campos incluyo uno donde guardo direcciones de Correo Elect., puede ser??, ya que si no incluyo el mismo la Query funciona...
Y el segundo si puede ser que me esté equivocando de tipos cuando ejecuto la Query dinámicamente...

Silvio.-
Responder Con Cita
  #12  
Antiguo 30-07-2004
Avatar de Tino
Tino Tino is offline
Miembro
 
Registrado: may 2004
Posts: 40
Poder: 0
Tino Va por buen camino
Ya está claro: estás usando como nombre de campo "user". Este nombre está reservado en algunos motores de bd (Paradox por ejemplo) y no puedes usarlo como nombre de campo.

Cambia el nombre del campo por otro en la tabla (como p.ej. "usuario") y verás como te funciona.

En cuanto al 2o. error prueba a capturar la SQL que se forma y ejecutala en el DB Explorer o en el Database Desktop y verás con mayor comodidad en que punto de la sql te está fallando.
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 00:17:14.


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