Makale numarası: 194653 - Son Gözden Geçirme: 14 Mart 2005 Pazartesi - Gözden geçirme: 1.2

Düzeltme: Fazla 2048 satırları MSHFLexGrid görüntülemiyor

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Belirtiler

Sıradüzensel FlexGrid denetimi, veri kaynağındaki her zaman en fazla kayıt sayısı ne olursa olsun 2048 satır görüntüler.

Çözüm

The mshflexgrid kayıt sayısını doğru olsa da, yalnızca ilk 2048 kayıtlar görüntülenir. 2048'Den fazla görüntülemek gerekiyorsa, recordset'i açın ve ADO GetString yöntemini ve MSHFlexGrid <a1>Klip</a1> özelliğini kullanarak kılavuz doldurmak gerekir.

Aşağıdaki kod Ek BILGILERI bölümünde Command1_Click olay kodu yerine bu davranışa geçici bir çözüm bulmak için kullanılabilir:
   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
				

Durum

Microsoft, bunun bu makalenin başında listelenen Microsoft ürünlerinde bir hata olduğunu onaylamıştır.

Bu hata, Visual Studio 6.0 Service Pack 3'te giderilmiştir.

Visual Studio hizmet paketleri hakkında daha fazla bilgi için lütfen aşağıdaki Microsoft Knowledge Base'deki makaleleri bakın:

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/ )

Daha fazla bilgi

Bu davranış, MSHFlexGrid çeşitli arka-bitiş karşı gösterildiği gibi SQL Server, Access, etc.

Davranışı yeniden oluşturma adımları

Sınama tablosu

  1. Aşağıdaki alanlar ile basit bir tablo oluşturun:
         Name         Data Type (SQL Server)       Data Type(Access) 
      ------------------------------------------------------------------
    
         PartID          Integer                      Integer
         PartName        VarChar (10)                 Text (10)
    					
  2. Ilgili ekleme tablonuzdaki 3000 10000 satır. Kolaylık olması açısından, bir döngü oluşturun ve sayacı 3000 10000'i için aynı kaydı ekleyin.
  3. Tablonuzu "test." kaydedin...

    Not: Tüm diğer sınama yapmak için uç seçebilirsiniz.

Visual Basic istemcisi

  1. Yeni bir proje standart exe DOSYASı, Visual Basic'te başlatın. Varsayılan olarak, Form1 oluşturulur.
  2. Proje menüsünde "Components"'i seçin ve aşağıdaki bileşenleri seçin:
    • Microsoft ADO veri denetimi 6.0 (OLE DB).
    • Microsoft, sıradüzensel FlexGrid denetim 6.0.

  3. Proje menüsünde başvuru'i seçin ve "Microsoft ActiveX Data Objects 2.0 kitaplığı."
  4. Aşağıdaki nesneler, form üzerinde yerleştirin:
        Control             Name                  Caption
       -------------------------------------------------------------------
    
       CommandButton       Command1           Using ADO Recordset
       CommandButton       Command2           Using ADODC
       CommandButton       Command3           Free MSHFlexGrid
       MSHFlexGrid         MSHFlexGrid1       Testing MSHFlexGrid Display
       ADODC               Adodc1
    					
  5. (Varsa), DSN veya yerel OLEDB Sağlayıcısı ADODC bağlayın. RecordSource özelliğinde yazma: SELECT * Kimden sınama.
  6. Aşağıdaki kod Form1 genel bildirimi bölümünde yerleştirin:
           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. Kod çalıştırma ve yalnızca 2048 kayıtları MSHFlexGrid görüntülendiğini unutmayın F5 tuşuna basın.

    Not: OLEDB Sağlayıcısı için ODBC kullanarak veya yerel OLEDB sağlayıcısını kullanarak veri kaynağına bağlanırken, sıradüzensel FlexGrid davranışı üzerinde hiçbir etkisi vardır.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Anahtar Kelimeler: 
kbmt kbbug kbfix kbvs600sp3fix KB194653 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:194653  (http://support.microsoft.com/kb/194653/en-us/ )