Help and Support
 

powered byLive Search

REVISIÓN: MSHFLexGrid no muestra más de 2048 filas

Id. de artículo:194653
Última revisión:lunes, 14 de marzo de 2005
Versión:1.2
En esta página

Síntomas

El control Hierarchical FlexGrid muestra siempre un máximo de filas 2048 independientemente del número de registros en el origen de datos.

Volver al principio

Solución

Aunque el registro de recuento de la mshflexgrid es correcto, se muestran sólo el primer 2048 registros. Si se necesita mostrar más de 2048, deberá abrir el conjunto de registros y rellenar la cuadrícula mediante el método GetString de ADO y la propiedad Clip de la MSHFlexGrid.

El código siguiente puede utilizarse en lugar del código en el evento Comando1_Click en la sección Más información para solucionar temporalmente este comportamiento:
   Dim cn As New ADODB.Connection
   Dim rs As New ADODB.Recordset
   Dim rsVar As Variant
   Dim i As Integer
   cn.Open "Testing"  '<-- Your DSN

   rs.Open "select * from Cies", cn, adOpenStatic, adLockOptimistic
   rs.MoveLast

   rs.MoveFirst
   ' Assuming that rs is your ADO recordset
   MSHFlexGrid1.Rows = rs.RecordCount + 1

   rsVar = rs.GetString(adClipString, rs.RecordCount)

   MSHFlexGrid1.Cols = rs.Fields.Count

   ' Set column names in the grid
   For i = 0 To rs.Fields.Count - 1

       MSHFlexGrid1.TextMatrix(0, i) = rs.Fields(i).Name

   Next

   MSHFlexGrid1.Row = 1
   MSHFlexGrid1.Col = 0

   ' Set range of cells in the grid
   MSHFlexGrid1.RowSel = MSHFlexGrid1.Rows - 1
   MSHFlexGrid1.ColSel = MSHFlexGrid1.Cols - 1
   MSHFlexGrid1.Clip = rsVar

   ' Reset the grid's selected range of cells
   MSHFlexGrid1.RowSel = MSHFlexGrid1.Row
   MSHFlexGrid1.ColSel = MSHFlexGrid1.Col

   rs.Close
   Set rs = Nothing
   cn.Close
   Set cn = Nothing
				

Volver al principio

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados al principio de este artículo.

Este error se corrigió en Visual Studio 6.0 Service Pack 3.

Para obtener más información acerca de los Service Packs de Visual Studio, consulte los artículos siguientes en Microsoft Knowledge Base:

194022 INFO: Visual Studio 6.0 Service Packs, What, Where, Why (http://support.microsoft.com/kb/194022/EN-US/)

194295 HOWTO: Tell That Visual Studio 6.0 Service Packs Are Installed (http://support.microsoft.com/kb/194295/EN-US/)

Volver al principio

Más información

Este comportamiento de la MSHFlexGrid puede se muestran con respecto a diversos servicios de extremos incluidos SQL Server, tener acceso A, etc..

Volver al principio

Pasos para reproducir este comportamiento

Volver al principio

Tabla de prueba

1.Crear una tabla sencilla con los siguientes campos:
     Name         Data Type (SQL Server)       Data Type(Access) 
  ------------------------------------------------------------------

     PartID          Integer                      Integer
     PartName        VarChar (10)                 Text (10)
					
2.Insertar sobre filas 3000-10000 en la tabla. Por motivos de simplicidad, puede crear un bucle y insertar el mismo registro en un contador de 3000 a 10000.
3.Guarde la tabla como "Prueba".

NOTA: Puede elegir cualquier otros servicios de fondo para realizar la prueba.

Volver al principio

Cliente de Visual Basic

1.Inicie un nuevo proyecto EXE estándar en Visual Basic. Se creará Form1 de manera predeterminada.
2.Seleccione "Componentes" en el menú Proyecto y elija los siguientes componentes:
?Microsoft ADO Data Control 6.0 (OLE DB).
?Microsoft Hierarchical FlexGrid Control 6.0.

3.Seleccione Referencias en el menú Proyecto y haga clic en " Microsoft ActiveX Data Objects 2.0 library. "
4.Coloque los siguientes objetos en el formulario:
    Control             Name                  Caption
   -------------------------------------------------------------------

   CommandButton       Command1           Using ADO Recordset
   CommandButton       Command2           Using ADODC
   CommandButton       Command3           Free MSHFlexGrid
   MSHFlexGrid         MSHFlexGrid1       Testing MSHFlexGrid Display
   ADODC               Adodc1
					
5.Enlazar ADODC mediante el DSN o mediante el proveedor OLEDB nativo (si existe). En la propiedad RecordSource (OrigenDelRegistro), escriba: seleccionar * de prueba.
6.Coloque el código siguiente en la sección de declaraciones general de Form1:
       Option Explicit

       Private Sub Command1_Click()

          Dim cn As New ADODB.Connection
          Dim rs As New ADODB.Recordset

          cn.Open "Testing"               '<-- Your DSN

          rs.Open "select * from Test", cn, adOpenStatic, adLockOptimistic
          rs.MoveLast

          ' Check the number records in your ADO recordset
          ' The RecordCount property of the ADO recordset reflects the
          ' actual number of records

          Debug.Print "ADO recordset record-count: " & vbTab & _
              rs.RecordCount

          Form1.Caption = "Loading grid... please wait..."

          Set MSHFlexGrid1.Recordset = rs

          ' Check the number of rows that the Hierarchical FlexGrid
          ' contains The RecordCount property of the Hierarchical
          ' FlexGrid also reflects the actual number of records

          Debug.Print "MSHFlexGrid1 Recordset record-count: " & vbTab &  _
             MSHFlexGrid1.Recordset.RecordCount

          Form1.Caption = "MSHFlexGrid Display Sample"

          ' Free resources
          rs.Close
          Set rs = Nothing
          cn.Close
          Set cn = Nothing

       End Sub

       Private Sub Command2_Click()

          Form1.Caption = "Loading data... please wait..."

          ' Set the Grid's source to be ADODC
          Set MSHFlexGrid1.DataSource = Adodc1

          ' Check the number of records in ADODC recordset
          Debug.Print "ADO data control record-count: " & vbTab &  _
             Adodc1.Recordset.RecordCount
          Form1.Caption = "MSHFlexGrid Display Sample"
       End Sub

       Private Sub Command3_Click()
          MSHFlexGrid1.Clear
          Form1.Caption = "Grid is clear now..."
       End Sub
					
7.Presione la tecla F5 para ejecutar el código y observe que sólo 2048 registros se muestran en el MSHFlexGrid.

NOTA: Conectar al origen de datos mediante el proveedor OLEDB para ODBC o mediante el proveedor OLEDB nativo no tiene ningún efecto en el comportamiento Hierarchical FlexGrid.

Volver al principio


La información de este artículo se refiere a:
?Microsoft Visual Basic Enterprise Edition for Windows 6.0

Volver al principio

Palabras clave: 
kbmt kbbug kbfix kbvs600sp3fix KB194653 KbMtes

Volver al principio

Traducción automáticaIMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente. Si ve errores y desea ayudar con este esfuerzo, rellene la encuesta en la parte inferior de este artículo.
Haga clic aquí para ver el artículo original (en inglés): 194653 (http://support.microsoft.com/kb/194653/en-us/)

Volver al principio

Seleccione idioma

 

Other Support Options

  • Need More Help?
    Contact a Support professional by E-mail, Online or Phone.
  • Customer Service
    For non-technical assistance with product purchases, subscriptions, online services, events, training courses, corporate sales, piracy issues, and more.
  • Newsgroups
    Pose a question to other users. Discussion groups and Forums about specific Microsoft products, technologies, and services.