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 24-07-2013
identsoft identsoft is offline
Miembro
 
Registrado: abr 2006
Posts: 282
Poder: 19
identsoft Va por buen camino
'operation not supported' al hacer un recordcount

Supongo que será una tontería, pero no doy con la solución.
Pongo el código.
Código Delphi [-]
sqldataset1.close;    
sqldataset1.commandtext := ' select expediente_e, importe_e from hono_cli where cliente = :icodigo and modulo = :imodulo';    
sqldataset1.ParamByName('icodigo').AsInteger := StrToint(dbeCliente.Text);    
SqlDataset1.ParamByName('imodulo').Asstring := ucmodulo;    
SqlDataset1.open;    
if sqlDataset1.RecordCount > 0 then       .....
El Sqldataset.Open lo hace correctamente, pero en la siguiente linea (recordcount) es cuando da el error 'Operation not Supported'.
DbeCliente es un DBEDIT y trae un valor correcto.
UcModulo es una variable String que también tiene un valor correcto, de tal manera que si hacemos :
Código Delphi [-]
SqlDataset1.commandtext := 'select expediente_e, importe_e from hono_cli where cliente = '+  dbecliente.text + ' and modulo = ' + quotedstr(ucmodulo);  
sqldataset1.open; if sqldataset1.recordcount > 0 then    ....
No da ningún tipo de problema.
los parámetros están (creo) bien definidos (icodigo DataType = ftInteger y imodulo DataType = ftUnknow) los dos Paramtype = ptInput
Deduzco que el error debe estar en los parámetros ...
¿Alguna ayuda?
Utilizo Delphi 2006 y Firebird 2.5
Un saludo

Última edición por Casimiro Notevi fecha: 24-07-2013 a las 13:07:35.
Responder Con Cita
  #2  
Antiguo 24-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Qué es sqldataset1?
Responder Con Cita
  #3  
Antiguo 24-07-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola identsoft.

No acostumbro a usar la propiedad RecordCount ya que no funciona con todos los componentes. Para saber si la consulta devolvió algún resultado podes hacer :
Código Delphi [-]
  ...
  if not SqlDataset1.IsEmpty then 
  ...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 24-07-2013
identsoft identsoft is offline
Miembro
 
Registrado: abr 2006
Posts: 282
Poder: 19
identsoft Va por buen camino
Ante todo gracias por vuestro tiempo.
casimiro: Sqldataset1 es uno de los componentes de DBExpress para enlace con la BD Firebird.

ecfisa: el problema creo que no está en el recordcount. Creo que el problema debe estar en los valores que recogen los parámetros, porque el segundo código (también con RecordCount pero sin parámetros) funciona perfectamente.
Responder Con Cita
  #5  
Antiguo 24-07-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola identsof.

Te sugerí usar la propiedad IsEmpty ya que sqlDataset1.RecordCount > 0 es equivalente a not SqlDataset1.IsEmpty.

En la ayuda de Delphi sobre TSQLDataSet dice:
Cita:
...
Reading RecordCount will generate an exception if the dataset can’t determine the number of records. Do not read RecordCount if:
  • The dataset represents stored procedure.
  • The dataset represents a query that contains parameters.
  • The dataset represents a multi-table join.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 24-07-2013
Avatar de ozsWizzard
ozsWizzard ozsWizzard is offline
Miembro
 
Registrado: may 2004
Ubicación: Murcia
Posts: 190
Poder: 20
ozsWizzard Va por buen camino
Cita:
Empezado por identsoft Ver Mensaje
Ante todo gracias por vuestro tiempo.
casimiro: Sqldataset1 es uno de los componentes de DBExpress para enlace con la BD Firebird.
Sqldataset1 es el nombre que tú le has dado al componente, se intuye que es un TSqlDataSet pero no tendría porque serlo, algunos ponemos nombres a la variables

No es bueno dar cosas por hecho, ten en cuenta que Casimiro no tiene por qué usar ese componente y puede pensar que es un nombre que tú le has dado a un TSqlQuery, por ejemplo.

Un saludo
__________________
La Madurez se llama...
~~~Gaia~~~

Última edición por ozsWizzard fecha: 24-07-2013 a las 19:08:47. Razón: Faltaba una s
Responder Con Cita
  #7  
Antiguo 24-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Claro, por eso lo preguntaba, para saber de qué componente se trataba.

Confirmo lo dicho también por ecfisa, no uses recordcount.
Responder Con Cita
  #8  
Antiguo 25-07-2013
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Hola identsoft,

Revisa esto sobre RecordCount y sigo en mis trece, afirmo y confirmo que RecordCount no falla.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.

Última edición por olbeup fecha: 25-07-2013 a las 09:59:06.
Responder Con Cita
  #9  
Antiguo 25-07-2013
identsoft identsoft is offline
Miembro
 
Registrado: abr 2006
Posts: 282
Poder: 19
identsoft Va por buen camino
Gracias a todos por vuestro tiempo.
No volveré a utilizar Recordcount (con parámetros). Desconocía que no funciona correctamente.
Con IsEmpty funciona correctamente.
olbeup no quiero volver a discutir lo ya discutido, pero sqldataset.recordcount NO funciona CON parámetros y SI funciona SIN parámetros (por lo menos a mí). Y además según eficsa el manual lo dice claramente (cosa que desconocía).


Un saludo
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
capability not supported gonza_619 SQL 5 21-09-2010 23:13:22
Capability not supported JoseQ Conexión con bases de datos 1 13-09-2005 16:38:26
Interface not supported en Excel aig Servers 0 19-11-2004 13:50:35
Error: Capability not supported javito Oracle 1 02-08-2004 10:34:19
CAPABILITY NOT SUPPORTED en PARADOX Robert SQL 3 29-03-2004 19:12:48


La franja horaria es GMT +2. Ahora son las 17:58:36.


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