• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

MsFlexGrid Ve DataGrid nesnelerine elle veri girilebilrimi?

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,239
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Merhaba.
DataGrid ve MsFlex nesnelerine el ile veri girilebilirmi?
Yoksa listviewdeki gibi sadece listelememi yapılıyor bu nesnelerde?
Teşekkür ederim.
 
merhaba sayın evren gizlen

bu nesnelere vb6 da elle giriş mümkün sadece bildiğim bu nasıl olur diye sorarsanız bilmiyorum.
 
merhaba sayın evren gizlen

bu nesnelere vb6 da elle giriş mümkün sadece bildiğim bu nasıl olur diye sorarsanız bilmiyorum.

Sayın masuk500 teşekkür ederim.
Ben elle veri giremedim bu nesnelere
 
Evren bey, en basit haliyle şu şekilde yapılabilir.

Bir Userform üzerinde bir adet DataGrid (DataGrid1), bir adet de CommandButton (CommandButton1) nesnesi yerleştirin. Projenize, "Microsoft Activex Data Objects Recordset xx Library" kütüphanesini de ekleyin.

Daha sonra, aşağıdaki kodları, Userform1 modülüne kopyalayın.

Kod:
Option Explicit
Dim rs As ADOR.Recordset
'-----------------------------------
Private Sub CommandButton1_Click()
    rs.AddNew
End Sub
'-----------------------------------
Private Sub UserForm_Initialize()
    Set rs = New ADOR.Recordset
    
    With rs
        
        With .Fields
            .Append "SıraNo", adVarChar, 50
            .Append "Kişi", adVarChar, 50
            .Append "Tarih", adDate
            .Append "Ciro", adCurrency
        End With
        
        .CursorType = adOpenDynamic
        .Open
        .AddNew
    
    End With
    
    Set DataGrid1.DataSource = rs
End Sub
'---------------------------------------
Private Sub UserForm_Terminate()
    Set rs = Nothing
End Sub
 
Ferhat bey, güzel bir örnek vermişsiniz. Teşekkürler.
 
Ferhat Bey Çok teşekkürler.
Güzel bir örnek vermişsiniz.Peki okumayı nasıl yapabiliriz her sütunda.
Yani yani hücrelerde bulunan verileri nası okuyabiliriz.Birde yeni satır eklemeyi son hücrede entere bastığımızda otomatik ekleyebilrimiyiz?
 
slm arkadaşlar,
örneği çalıştıramadım;benim kontrollerim arasında datagrid görünmüyor. nasıl ekleyebilim?
 
Ferhat Bey Çok teşekkürler.
Güzel bir örnek vermişsiniz.Peki okumayı nasıl yapabiliriz her sütunda.
Yani yani hücrelerde bulunan verileri nası okuyabiliriz.Birde yeni satır eklemeyi son hücrede entere bastığımızda otomatik ekleyebilrimiyiz?

Evren bey,

Çalışma kitabının aktif sheet'inin A1: D40 aralığında, (ilk satır başlıklar olmak üzere) verilerimizin olduğunu varsayarsak,

Bu verilerin DataGrid üzerine çekilmesi ve DataGrid'in son satırına veri girildikten sonra, otomatik olarak yeni bir kayıt (satır) eklenmesi için kodlar şu şekilde olmalıdır.

Kod:
Option Explicit
Dim rs As ADOR.Recordset
'---------------------------------
Private Sub DataGrid1_AfterColEdit(ByVal ColIndex As Integer)
[COLOR=darkgreen]  'Eğer DataGrid editlendikten sonra[/COLOR]
 
[COLOR=darkgreen]  'Editlenen satır (kayıt),[/COLOR]
[COLOR=darkgreen]  'Recorset'in kayıt sayısı kadarsa[/COLOR]
[COLOR=darkgreen]  '-ki bu durumda son satır oluyor[/COLOR]
    If DataGrid1.Bookmark = rs.RecordCount Then
        'Yeni bir kayıt (satır) ilave et.
        rs.AddNew
    End If
End Sub
'----------------------------------
Private Sub UserForm_Initialize()
 
    Dim rg As Range
    Dim hcr As Range
    Dim y&
 
[COLOR=darkgreen]  'Yeni bir Recordset nesnesi yaratılıyor[/COLOR]
    Set rs = New ADOR.Recordset
 
    With rs
[COLOR=darkgreen]      'Recordset alanları oluşturuluyor[/COLOR]
        With .Fields
            .Append "SıraNo", adVarChar, 50
            .Append "Kişi", adVarChar, 50
            .Append "Tarih", adDate
            .Append "Ciro", adCurrency
        End With
 
[COLOR=darkgreen]      'Recordset açıklıyor[/COLOR]
        .CursorType = adOpenDynamic
        .Open
 
[COLOR=darkgreen]      'Sayfa üzerinden alınacak alan oluşturuluyor[/COLOR]
        Set rg = Range("A2:D40")
 
[COLOR=darkgreen]      'Alan içerisindeki herbir hücre değeri,[/COLOR]
[COLOR=darkgreen]      'denk gelen recordset alanına atanıyor[/COLOR]
        For Each hcr In rg.Cells
            y = y + 1
            If y = 1 Then rs.AddNew
            rs(y - 1) = hcr
            If y = 4 Then y = 0
        Next
 
    End With
 
[COLOR=darkgreen]  'DataGrid'in veri kaynağını[/COLOR]
[COLOR=darkgreen]  'az önce oluşturduğumuz Recordset olarak gösteriyoruz[/COLOR]
    Set DataGrid1.DataSource = rs
 
[COLOR=darkgreen]  'Alandaki tüm değerler DataGrid'e aktarıldıktan sonra[/COLOR]
[COLOR=darkgreen]  'tüm verilerin altına yeni bir kayıt(satır)[/COLOR]
    rs.AddNew
 
[COLOR=darkgreen]  'Şekil şemal yapılıyor[/COLOR]
    Me.Caption = "DataGrid Örneği"
    DataGrid1.Caption = ""
 
End Sub
'-----------------------------------------
Private Sub UserForm_Terminate()
[COLOR=darkgreen]  'Recordset ipini koparıyor :)[/COLOR]
    Set rs = Nothing
End Sub
 
Ferhat bey güzel çalışmanız için teşekür ederim.
Yalnız İlk kayıt eklendiğinde entere basınca alt satıra geçiyor.
Oda ilk sütundayken atlıyor.
Sayfa mantığına göre şöyle olmalı:Eğer aktif hücre son sütundaysa entere basıldıysa veya tab tuşuna basıldıysa eğer son satırsa yeni bir satır oluştur ve imleci yeni oluşturulan satırn ilk sütununa konumlandır.Son satır değilse,Bir alt satırdaki ilk sütuna konumlandır.
 
Son düzenleme:
Geri
Üst