Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
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
Problema con RecordCount

Hola gente!, hice un procedimiento que obtiene los campos que pertenecen a un determinado indice. Para esto, utilice las tablas del sistema sys.Columns, sys.Index_Columns y sys.Indexes. Antes que nada les menciono que la sentencia SQL Select que utiliza el TSQLQuery esta probada, funciona perfectamente.
El procedimiento crea un objeto SQLQuery, le asigno el SQLConnection y en su propiedad SQL agrego las sentencias. Esta pueden devolver uno o mas campos, por lo tanto, para saber esto aplico la propiedad RecordCount, que al ejecutarse produce el error: 'El nombre de objeto sys.columns no es valido'.
Recalco que es con esta propiedad que surge el inconveniente ya que si no la aplico, puedo obtener sus datos de manera habitual.
La solución seria utilizar algún otro tipo de propiedad o configurar algo que me este faltando. La prepare carece en este componente.
Bueno escucho sugerencias.

Slds.
Responder Con Cita
  #2  
Antiguo 15-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Yo no me he enterado de lo que estás haciendo, de lo que quieres conseguir, del problema que tienes ni de nada
Responder Con Cita
  #3  
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
Código:

Código Delphi [-]
var
  oQTempCamposIndices : TSQLQuery;
  vCampos: string;
//....
begin
  oQTempCamposIndices := TSQLQuery.Create(nil);
  oQTempCamposIndices.SQLConnection:= SQLDataset.SQLConnection;
       with oQTempCamposIndices do
        begin
          SQL.Clear;
          SQL.Add('Select Columnas.name as Campo From sys.columns as Columnas ');
          SQL.Add('INNER JOIN sys.index_columns as ColIndices on ColIndices.object_id = Columnas.object_id ');
          SQL.Add('AND ColIndices.column_id = Columnas.column_id ');
          SQL.Add('INNER JOIN sys.indexes as Indices on Indices.object_id = ColIndices.object_id ');
          SQL.Add('AND Indices.index_id = ColIndices.index_id ');
          SQL.Add('Where Indices.name = ' + QuotedStr(Indice));
          oQTempCamposIndices.Open;
          //First;
          if oQTempCamposIndices.RecordCount > 1 then <------- ERROR: El nombre de objeto sys.columns no es valido.
          begin
            First;
            while not eof do
              vCampos := vCampos + sc.Trim(oQTempCamposIndices.Fieldbyname('Campo').AsString) + ';';
              next;
          end
          else
            vCampos := vCampos + sc.Trim(oQTempCamposIndices.Fieldbyname('Campo').AsString);
        end;

Última edición por Jere_84 fecha: 15-06-2012 a las 16:13:51. Razón: no toma el codigo fuente
Responder Con Cita
  #4  
Antiguo 15-06-2012
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
Prueba asi

Código Delphi [-]
with oQTempCamposIndices do
        begin
          SQL.Clear;
          SQL.Add('Select Columnas.name as Campo From sys.columns as Columnas ');
          SQL.Add('INNER JOIN sys.index_columns as ColIndices on ColIndices.object_id = Columnas.object_id ');
          SQL.Add('AND ColIndices.column_id = Columnas.column_id ');
          SQL.Add('INNER JOIN sys.indexes as Indices on Indices.object_id = ColIndices.object_id ');
          SQL.Add('AND Indices.index_id = ColIndices.index_id ');
          SQL.Add('Where Indices.name = ' + QuotedStr(Indice));
          oQTempCamposIndices.Open;
          //First;
          if (not  eof) then
           begin
            //while not eof do
              vCampos := vCampos + sc.Trim(oQTempCamposIndices.Fieldbyname('Campo').AsString) + ';';
              next;     
           end
         else
          begin
            vCampos := vCampos + sc.Trim(oQTempCamposIndices.Fieldbyname('Campo').AsString);     
           end;   
        end;

mas o menos
Responder Con Cita
  #5  
Antiguo 15-06-2012
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
bueno y te sirvio?
Responder Con Cita
  #6  
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 microbiano Ver Mensaje
bueno y te sirvio?
No recorre el while solo pasa una vez y a la siguiente se va a finally no se porque, siendo que hay otros campos mas. Ademas desmarque el First para que se posiciones sobre el primer lugar, pero nada..
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
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 14:35:34.


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