Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-06-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 688
Poder: 21
olbeup Va camino a la fama
Hola Jere_84

Has repasado bien la SQL, la he realizado en mi ordenador y funciona correctamente, porque utilizas alias tan largos.

En vez de sys.columns AS Columnas, utiliza AS C, o algo parecido.

Código SQL [-]
SELECT
    C.name AS CAMPO
  FROM sys.columns AS C
    INNER JOIN sys.index_columns AS IC
      ON IC.object_id = c.object_id AND IC.column_id = C.column_id
    INNER JOIN sys.indexes AS I
      ON I.object_id = IC.object_id AND I.index_id = IC.index_id
  WHERE I.name = 'PKUC_IDEMPLEADO'

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #2  
Antiguo 15-06-2012
Avatar de Jere_84
Jere_84 Jere_84 is offline
Miembro
NULL
 
Registrado: sep 2011
Ubicación: Córdoba, Argentina
Posts: 214
Poder: 0
Jere_84 cantidad desconocida en este momento
Cita:
Empezado por olbeup Ver Mensaje
Hola Jere_84

Has repasado bien la SQL, la he realizado en mi ordenador y funciona correctamente, porque utilizas alias tan largos.

En vez de sys.columns AS Columnas, utiliza AS C, o algo parecido.

Código SQL [-]
SELECT
    C.name AS CAMPO
  FROM sys.columns AS C
    INNER JOIN sys.index_columns AS IC
      ON IC.object_id = c.object_id AND IC.column_id = C.column_id
    INNER JOIN sys.indexes AS I
      ON I.object_id = IC.object_id AND I.index_id = IC.index_id
  WHERE I.name = 'PKUC_IDEMPLEADO'

Un saludo.
Hola olbeup, si la sentencia anda lo que si da un error en el RecordCount y no se porque. Voy a comprobar el tema de los alias pero no debería influir.
Responder Con Cita
  #3  
Antiguo 15-06-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
No sé exactamente de qué va el hilo este, pero hay que tener en cuenta un 'pequeño' detalle:
recordcount no devuelve el número de registros involucrados en un query.
Habría que ir al último registro (hacer un fetch) para, ahora sí, usar el valor de recordcount.
Resumiendo:
Código Delphi [-]
qry.close;
qry.sql.text:='select nombre from tbclientes where provincia=28';
qry.execquery;
showmessage(inttostr(qry.recordcount));  //  <<---  Esto normalmente devolverá: 1
Responder Con Cita
  #4  
Antiguo 16-06-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 688
Poder: 21
olbeup Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No sé exactamente de qué va el hilo este, pero hay que tener en cuenta un 'pequeño' detalle:
recordcount no devuelve el número de registros involucrados en un query.
Habría que ir al último registro (hacer un fetch) para, ahora sí, usar el valor de recordcount.
Resumiendo:
Código Delphi [-]
qry.close;
qry.sql.text:='select nombre from tbclientes where provincia=28';
qry.execquery;
showmessage(inttostr(qry.recordcount));  //  <<---  Esto normalmente devolverá: 1
Hola Casimiro,

Efectivamente te devuelve 1 registro
Código Delphi [-]
qry.close;
qry.sql.text:='select nombre from tbclientes where provincia=28';
qry.execsql;
showmessage(inttostr(qry.recordcount));  //  <<---  Esto normalmente devolverá: 1

Pero esto te devuelve cuantos registros hay
Código Delphi [-]
qry.close;
qry.sql.text:='select nombre from tbclientes where provincia=28';
qry.open;
showmessage(inttostr(qry.recordcount));  //  <<---  Esto devolverá: x registros
qry.close;

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: 16-06-2012 a las 01:38:49.
Responder Con Cita
  #5  
Antiguo 16-06-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por olbeup Ver Mensaje
Pero esto te devuelve cuantos registros hay
Código Delphi [-]
qry.close; 
qry.sql.text:='select nombre from tbclientes where provincia=28'; 
qry.open; 
showmessage(inttostr(qry.recordcount));  //  <<---  Esto devolverá: x registros 
qry.close;

Un saludo
No, pruébalo y verás que no
Responder Con Cita
  #6  
Antiguo 16-06-2012
Avatar de Jere_84
Jere_84 Jere_84 is offline
Miembro
NULL
 
Registrado: sep 2011
Ubicación: Córdoba, Argentina
Posts: 214
Poder: 0
Jere_84 cantidad desconocida en este momento
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No, pruébalo y verás que no
Entonces andará mal tu Delphi, porque RecordCount devuelve la cantidad de registros. El nombre de la propiedad lo dice.

Slds.
Responder Con Cita
  #7  
Antiguo 16-06-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
¿Lo has probado?
Responder Con Cita
  #8  
Antiguo 17-06-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 688
Poder: 21
olbeup Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No, pruébalo y verás que no
Tengo muchas aplicaciones así y ninguna me ha fallado, trabajo con SQL SERVER 2005 y hasta ahora RecordCount se ha portado, sólo trabajo con ADOQuery, nunca he trabajado con ADOTABLE que también está el RecordCount, lo he probado muchas veces ADOQuery.RecordCount y devuelve los registros que contiene el ADOQuery, ni más ni menos.

Código SQL [-]
SELECT 
    COUNT(*) AS CANTIDAD 
  FROM TBCLIENTES 
  WHERE PROVINCIA = 28

Esta consulta es más rápida porque sólo devuelve un registro, pero tan válida cómo ADOQuery.RecordCount

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #9  
Antiguo 17-06-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Si el componente que estás usando tiene alguna propiedad del tipo "FetchAllRecords" y está a True, entonces es el motivo por el que te funciona el recordcount.
Pero ten en cuenta que eso es sólo por lo que he comentado, por el valor de una propiedad, ya que un select a una base de datos no puede saber cuántos registros involucra, salvo que vaya hasta el último, es algo elemental que verás en cualquier tutorial sql de cualquier base de datos.
Tenlo presente, y no te encabezones , RecordCount NO devuelve el número de registros. Salvo que sea una tabla plana, que no es el caso.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
RecordCount -1 bjaeger Conexión con bases de datos 2 27-01-2010 03:14:53
Problema con la funcion recordcount de los TIBQuery capo979 Conexión con bases de datos 14 26-03-2008 16:02:02
SQL y RecordCount UREÑA SQL 5 28-08-2007 14:32:14
Problema con TQuery.RecordCount kuan-yiu Varios 4 26-10-2006 18:54:31
Problema con un RecordCount Lucciano Conexión con bases de datos 4 07-04-2006 15:40:54


La franja horaria es GMT +2. Ahora son las 01:11:38.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi