Artikel-ID: 194653 - Geändert am: Montag, 14. März 2005 - Version: 1.2

Update: MSHFLexGrid wird nicht mehr als 2048 Zeilen angezeigt.

SystemtippDieser Artikel bezieht sich auf ein anderes Betriebssystem als das von Ihnen verwendete. Für Sie möglicherweise nicht relevante Artikelinhalte wurden deaktiviert.

Auf dieser Seite

Alles erweitern | Alles schließen

Problembeschreibung

Das Hierarchical FlexGrid-Steuerelement zeigt immer maximal 2048 Zeilen unabhängig von der Anzahl der Datensätze in der Datenquelle.

Lösung

Obwohl die Datensatz-Anzahl der Mshflexgrid korrekt ist, werden nur die ersten 2048 Datensätze angezeigt. Wenn Sie mehr als 2048 anzeigen möchten, müssen Sie zum Öffnen des Recordsets und zum Auffüllen des Rasters mit der GetString-Methode von ADO und der Clip-Eigenschaft des MSHFlexGrid.

Der folgende Code kann anstelle der Code im Ereignis Command1_Click im Abschnitt " Weitere Informationen , um dieses Verhalten zu umgehen verwendet werden:
   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
				

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel Microsoft-Produkten handelt.

Dieser Bug wurde in Visual Studio 6.0 Service Pack 3 behoben.

Weitere Informationen zu Visual Studio Servicepacks finden Sie in die folgenden Artikeln der 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/ )

Weitere Informationen

Dieses Verhalten des MSHFlexGrid kann mit verschiedenen Back-Ends vorführen einschließlich SQL Server, Access usw..

Schritte zum Reproduzieren des Verhaltens

Test-Tabelle

  1. Erstellen Sie eine einfache Tabelle mit den folgenden Feldern:
         Name         Data Type (SQL Server)       Data Type(Access) 
      ------------------------------------------------------------------
    
         PartID          Integer                      Integer
         PartName        VarChar (10)                 Text (10)
    					
  2. Info über einfügen 10000 3000 Zeilen in der Tabelle. Der Einfachheit halber können Sie eine Schleife erstellen und legen Sie den gleichen Datensatz in einen Leistungsindikator 3000 um 10000.
  3. Speichern Sie Ihre Tabelle unter "Testen".

    Hinweis: Sie können alle anderen Back-End um den Test durchzuführen.

Visual Basic-Client

  1. Starten Sie ein neues Standard EXE-Projekt in Visual Basic. Form1 wird standardmäßig erstellt.
  2. Wählen Sie "Komponenten" im Menü Projekt, und wählen Sie die folgenden Komponenten:
    • Microsoft ADO-Datensteuerelement 6.0 (OLE DB).
    • Microsoft Hierarchical FlexGrid-Steuerelement 6.0.

  3. Wählen Sie im Menü Projekt auf Verweise und "Microsoft ActiveX Data Objects 2.0 Library."
  4. Setzen Sie die folgenden Objekte auf das Formular:
        Control             Name                  Caption
       -------------------------------------------------------------------
    
       CommandButton       Command1           Using ADO Recordset
       CommandButton       Command2           Using ADODC
       CommandButton       Command3           Free MSHFlexGrid
       MSHFlexGrid         MSHFlexGrid1       Testing MSHFlexGrid Display
       ADODC               Adodc1
    					
  5. Binden Sie ADODC über Ihren DSN oder über den systemeigenen OLEDB-Provider (falls vorhanden). In der Datenherkunft-Eigenschaft schreiben: SELECT * von Test.
  6. Fügen Sie den folgenden Code in den Allgemein Deklarationsbereich von 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. Drücken Sie F5, um den Code auszuführen, und beachten Sie, dass nur 2048 Datensätze in der MSHFlexGrid angezeigt werden .

    Hinweis: Verbinden zur Datenquelle mithilfe von OLE DB-Provider für ODBC oder mithilfe der systemeigenen OLEDB-Provider hat keine Auswirkungen auf das Hierarchical FlexGrid-Verhalten.

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Keywords: 
kbmt kbbug kbfix kbvs600sp3fix KB194653 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 194653  (http://support.microsoft.com/kb/194653/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.