[VBA] Access Class Textbox Change Olayı Text Hatası
#1
Merhaba.

Classs ile textbox verilerini birleştirmeyi başaramadım.
Visual Basic
  1. aa = aa & vbNewLine & kontrol.name



Yukarıdaki kodda kontrol.name yerine kontrol.Text yazarsam odaklanmadan dolayı hata veriyor.Çözüm nedir?
Saygılar.



Form Kodlar;

Visual Basic
  1. Option Compare Database
  2.  
  3. Private KontrolCollection  As Collection
  4.  
  5.  
  6. Private Sub Form_Load()
  7.  
  8.     Dim olay  As ClassTextboxSec
  9.     Dim kontrol As Access.Control
  10.  
  11.     Set KontrolCollection = New Collection
  12.  
  13.     For Each kontrol In Me.Controls
  14.         If kontrol.ControlType = acTextBox Then
  15.             Set olay = New ClassTextboxSec
  16.             olay.Initialize kontrol
  17.             KontrolCollection.Add olay, kontrol.name
  18.         End If
  19.     Next
  20.  
  21.     Set olay = Nothing
  22.     Set Control = Nothing
  23.  
  24. End Sub
  25.  
  26.  
  27. Private Sub Form_Unload(Cancel As Integer)
  28.  
  29.     Dim olay  As ClassTextboxSec
  30.     
  31.     On Error Resume Next
  32.     
  33.     For Each olay In KontrolCollection
  34.         olay.Terminate
  35.     Next
  36.  
  37.     Set olay = Nothing
  38.     Set KontrolCollection = Nothing
  39.  
  40. End Sub



Class kodlar;

Visual Basic
  1. Option Compare Database
  2.  
  3. Private Const olayTextBox  As String = "[Event Procedure]"
  4.  
  5. Private WithEvents ClassTextBox As Access.TextBox
  6.  
  7. Public Sub Initialize(TextBox As Access.TextBox)
  8.     Set ClassTextBox = TextBox
  9.     ClassTextBox.OnChange = olayTextBox
  10. End Sub
  11.  
  12.  
  13. Public Sub Terminate()
  14.     Set ClassTextBox = Nothing
  15. End Sub
  16.  
  17.  
  18. Private Sub ClassTextBox_Change()
  19.  
  20.     Dim kontrol As Control
  21.     Dim aa
  22.     
  23.     For Each kontrol In Forms("Form1")
  24.         aa = aa & vbNewLine & kontrol.name
  25.     Next
  26.     
  27.     MsgBox aa
  28.     
  29. End Sub




Eklenti Dosyaları
.rar   class Textbox change olayi.rar (Boyut: 48,75 KB / İndirilme: 55)



  Alıntı
Bu mesajı beğenenler:
#2
sn feraz Change olayını aşağıdaki gibi değiştirin, istediğiniz gibi çalışacaktır.
Visual Basic
  1. Private Sub ClassTextBox_Change()
  2.  
  3.    Dim kontrol As Control
  4.    Dim aa
  5.  
  6.    For Each kontrol In Forms("Form1")
  7.  
  8.        kontrol.Application.RunCommand acCmdSave
  9.        kontrol.Requery
  10.        aa = aa & vbNewLine & kontrol
  11.        
  12.    Next
  13.    
  14.    MsgBox aa
  15.    
  16. End Sub





  Alıntı
Bu mesajı beğenenler:
#3
Teşekkürler sayın  @onur_can.

Gifte gördüğünüz gibi textboxlara 1 den fazla karakter girilemiyor.

[Resim: MTVlNzcyZDQ1MGM1ZGQ.gif]



  Alıntı
Bu mesajı beğenenler:
#4
text kutusuna bir karakter girdiğinizde olay çalışıyor, Aslında 1 karakter girdikten sonra text kutusu seçili hale geldiği için siz 1 karakterden fazla girilmediğini düşünüyorsunuz. 1 karakter girdikten sonra çıkan pencereye tamam dedikten sonra metni seçili olmaktan kurtarıp yanına bir karakter daha girin. Bu şekilde birçok karakter girilebilir.



  Alıntı
Bu mesajı beğenenler:
#5
(22-03-2020, 14:44)onur_can demiş ki: text kutusuna bir karakter girdiğinizde olay çalışıyor, Aslında 1 karakter girdikten sonra text kutusu seçili hale geldiği için siz 1 karakterden fazla girilmediğini düşünüyorsunuz. 1 karakter girdikten sonra çıkan pencereye tamam dedikten sonra metni seçili olmaktan kurtarıp yanına bir karakter daha girin. Bu şekilde birçok karakter girilebilir.
Evet ama her defasında fare ile enson boş yere tıklamak gerekiyor textboxun.



  Alıntı
Bu mesajı beğenenler:
#6
ilgili kodu alttaki gibi değiştirince çözüldü Smile
Teşekkürler sayın @onur_can



Visual Basic
  1. Private Sub ClassTextBox_Change()
  2.      
  3.         Dim kontrol As Control
  4.         Dim aa
  5.         
  6.         aa = vbNullString
  7.         
  8.         For Each kontrol In Forms("Form1")
  9.             If kontrol.ControlType = acTextBox Then
  10.                 kontrol.Application.RunCommand acCmdSave
  11.                 aa = aa & "," & kontrol
  12.             End If
  13.         Next
  14.         
  15.         aa = Mid(aa, 2)
  16.         Forms("Form1").Controls("Metin13") = aa
  17.         If Len(ClassTextBox) > 0 Then
  18.             ClassTextBox.SelStart = Len(ClassTextBox)
  19.         Else
  20.             ClassTextBox.SelStart = 1
  21.         End If
  22.         
  23.  
  24.     End Sub





  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  [SORGU] Textbox'taki Veriyi Dinamik Sorgulama NLas7 2 133 06-09-2023, 08:44
Son Mesaj: NLas7
access-sql-9 Text Kutusundaki Rakamı Alt Formda Bulan Hesap Sutunun Tüm Satırlarına Nasıl Eklenir bilservisci 7 265 29-08-2023, 22:19
Son Mesaj: bilservisci
  Kayıt Kaynağı Direkt Tablo Olan Formdaki Ilişkisiz Bir Textbox'a Text Girememe. tarkanaykın 4 247 21-03-2022, 02:38
Son Mesaj: tarkanaykın
  [VBA] Access Vba üzerinden Sorgu çağırma Hatası tanyeri 20 613 13-02-2022, 17:47
Son Mesaj: onur_can
  [VBA] Text Dosyasına Yazma, Okuma, Düzenleme A.Serdar 4 201 19-01-2022, 12:13
Son Mesaj: halily
  [TABLO] Access Hatası benuva 8 299 13-01-2022, 22:20
Son Mesaj: benuva
  Access çalışma çıkışında "dosya Zaten Kullanımda" Hatası h2001 2 703 06-09-2021, 19:00
Son Mesaj: h2001
  Access Dosyası Açma Hatası strife 4 407 13-08-2021, 15:12
Son Mesaj: strife

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi