VB.Net Database verilerine göre Replace Yardım Edin

Kodla Büyü

veryrough

Üye
Mesajlar
2
Sorunum şu word teki bul ve değiştire benzer bir program yapmak istedim fakat farkı bir database olucak ve bu database içerisindeki verilere göre bulup değiştirsin istedim ancak bi noktada takıldım. Takıldığım nokta database içerisine değiştirmek istediğim metni ve neyle değiştirmek istediğimi giriyorum birden fazla kayıt girdiğimde girdiğim son kayıt üzerinde işlem yapıyor yani şöyle örneklersek : elimizde 2 adet richtextbox var birincisi değiştirmek istediğimiz metnin girileceği bölüm 2. ise değiştirilmiş metnin gösterileceği bölüm 2 adet textbox var bunlarda neyi neyle değiştireceğimizi girdiğimiz bölümler 2 adet button var bunlardan biri textboxlara girilen neyi neyle değiştireceğimizi girdiğimiz bölümleri access veri tabanına ekleyen düğmemiz diğer button ise richtextbox 1 e girdiğimiz metni veri tabanımıza girdiğimiz verilere göre bulup değiştirdikten sonra richtextbox2 de göstermesini sağlayacak. Fakat dediğim gibi girdiğim son kayda göre değişiklik yapıyor. komutları aşağıya yazıyorum lütfen nerede hata yaptığımı söylerseniz aşırı mutlu olurum. :)

değişikliği yaptırdığım button un click olayı

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim baglanti_metni1, baglanti_metni2 As String
baglanti_metni1 = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=|DataDirectory|\vt2.accdb; Persist Security Info=False;"
baglanti_metni2 = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|\vt2.mdb; Persist Security Info=False;"
Dim baglanti1 As New Data.OleDb.OleDbConnection(baglanti_metni2)
baglanti1.ConnectionString = baglanti_metni2
baglanti1.Open()
Dim sql2 As String
sql2 = "select * from anatablo "
Dim komut1 As New System.Data.OleDb.OleDbCommand(sql2, baglanti1)
Dim veri_okuyucu As Data.OleDb.OleDbDataReader
veri_okuyucu = komut1.ExecuteReader
Do While (veri_okuyucu.Read())
RichTextBox2.Text = RichTextBox1.Text.Replace(veri_okuyucu("dkmetin"), veri_okuyucu("dsmetin"))
Loop
End Sub
 
Do While (veri_okuyucu.Read())
RichTextBox2.Text = RichTextBox1.Text.Replace(veri_okuyucu("dkmetin"), veri_okuyucu("dsmetin"))
Loop
Kısmını aşağıdaki ile değiştirin.
dim metin as string
metin = RichTextBox1.Text
Do While (veri_okuyucu.Read())
metin = metin.Replace(veri_okuyucu("dkmetin"), veri_okuyucu("dsmetin"))
Loop
RichTextBox2.Text = metin


kodda yazım yanlışları olabilir, siz düzeltirsiniz.
Hatanız
RichTextBox2.Text = RichTextBox1.Text.Replace(veri_okuyucu("dkmetin"), veri_okuyucu("dsmetin"))
satırında, richtextbox2'ye richtextbox1'deki yazıyı değiştirip, atıyorsunuz. Ancak richtextbox1'in içeriği değişmeyince, döngünün sonraki adımında tekrar aynı metni değiştiriyorsunuz. Dolayısıyla en son kelime değişikliği metin kutusuna yazılmış oluyor. Benim yazdığımda ise metni metin değişkenine aktarıp, bu metni her adımda değiştiriyoruz. Metnin en son halini de metin kutusuna aktarıyoruz. Bu hem daha performanslı çalışır hem de daha anlaşılır olacaktır.
 
yakuphan' Alıntı:
Do While (veri_okuyucu.Read())
RichTextBox2.Text = RichTextBox1.Text.Replace(veri_okuyucu("dkmetin"), veri_okuyucu("dsmetin"))
Loop
Kısmını aşağıdaki ile değiştirin.
dim metin as string
metin = RichTextBox1.Text
Do While (veri_okuyucu.Read())
metin = metin.Replace(veri_okuyucu("dkmetin"), veri_okuyucu("dsmetin"))
Loop
RichTextBox2.Text = metin


kodda yazım yanlışları olabilir, siz düzeltirsiniz.
Hatanız
RichTextBox2.Text = RichTextBox1.Text.Replace(veri_okuyucu("dkmetin"), veri_okuyucu("dsmetin"))
satırında, richtextbox2'ye richtextbox1'deki yazıyı değiştirip, atıyorsunuz. Ancak richtextbox1'in içeriği değişmeyince, döngünün sonraki adımında tekrar aynı metni değiştiriyorsunuz. Dolayısıyla en son kelime değişikliği metin kutusuna yazılmış oluyor. Benim yazdığımda ise metni metin değişkenine aktarıp, bu metni her adımda değiştiriyoruz. Metnin en son halini de metin kutusuna aktarıyoruz. Bu hem daha performanslı çalışır hem de daha anlaşılır olacaktır.

Evet dün gece biraz daha örnek inceleyince anladım ben şu şekil yapmıştım bi label oluşturdum templabel dedim buna
Temp.Text = RichTextBox1.Text
Do While (veri_okuyucu.Read())
Temp.Text = Temp.Text.Replace(veri_okuyucu("dkmetin"), veri_okuyucu("dsmetin"))
Loop
RichTextBox2.Text = Temp.Text

veya şu şekilde de olabilirdi
RichTextBox2.Text = RichTextBox1.Text
Do While (veri_okuyucu.Read())
RichTextBox2.Text = RichTextBox2.Text.Replace(veri_okuyucu("dkmetin"), veri_okuyucu("dsmetin"))
Loop

bu şekilde değişime tabi tutulan metinde sabit kalmış oluyor en azından metinde nasıl değişiklik yapılmış olduğunu görürüz. yakuphan sanada ilginden dolayı çok teşekkür ederim.
 
Geri
Üst