Arama İşleminde Metin belirtme

02/09/2009, 14:30

aydiny

Kütüphane kitaplarının takibi amaçlı bir uygulama ektedir. Burada sorgulam işlemi sonunda gelen sonuçlarda, aranan kelimenin ekteki jpg görüntüde yer aldığı gibi zemin rengini nasıl değiştirebiliriz.

Teşekküler, iyi çalışmalar
03/09/2009, 10:08

Seruz

Gerçekten güzel bir soru.

Excel'de aynı hücrede farklı formatlar uygulayabilmek mümkün ama Access'te standart olarak böyle bir özellik yok diye biliyorum.
Gerçi Access 2007'de Html kodları kullanılarak böyle bir şey yapılabildiğini duymuştum ama 2002 ve 2003 için aklıma bir çözüm gelmiyor şu anda.

Çözüm için, diğer arkadaşların fikirlerini bekleyeceğiz.


Aşağıdaki Access 2007 sitesinde bu özellikten bahsediyor.
Alıntı:Metin Biçimi : Metin kutusu bir Not alanıyla ilişkiliyse, Metin Biçimi özellik kutusundaki değeri Zengin Metin olarak ayarlayabilirsiniz. Bu işlem, metin kutusunun içerdiği metne birden çok biçimlendirme stili uygulamanıza olanak verir. Örneğin, bir sözcüğe kalın yazı biçimi, bir diğerine de altı çizili yazı biçimi uygulayabilirsiniz.

Konuyla ilgili Microsoft Access 2007 sitesinden bir kaç link:
Zengin metin alanı ekleme
Zengin metin biçimini destekleyen bir denetim veya sütuna veri girme veya düzenleme
03/09/2009, 10:43

cuneyt

evet bende öyle bir özelliğinin olduğunu duymadım. örneğin 20 satırlık ve her satırdaki kelimeyi renklendirmesi hiç bir şekilde olmuyor sanırım. ancak bir metin kutusu içinde kelimeyi bulup seçimli koyu renge boyaması oluyor.
bunun için şöyle bir kod kullanabilirsin:

Kod:
Option Explicit
Dim ArananKelime As String
Dim KelimeninYeri, AramayaBasla As Integer

Private Sub Sorgula_Click()
ArananKelime = Me.SAdi
AramayaBasla = Forms!frm_sorgu.Form!frm_sorgu_alt_formu!İfade1.SelStart + Forms!frm_sorgu.Form!frm_sorgu_alt_formu!İfade1.SelLength
If AramayaBasla = 0 Or AramayaBasla = Len(Forms!frm_sorgu.Form!frm_sorgu_alt_formu!İfade1) Then AramayaBasla = 1
KelimeninYeri = InStr(AramayaBasla, Forms!frm_sorgu.Form!frm_sorgu_alt_formu!İfade1, ArananKelime, vbTextCompare)
If KelimeninYeri = 0 Then
MsgBox "Metin içinde böyle bir kelime yok"
Else
Forms!frm_sorgu.Form!frm_sorgu_alt_formu!İfade1.SetFocus
Forms!frm_sorgu.Form!frm_sorgu_alt_formu!İfade1.SelStart = KelimeninYeri - 1
Forms!frm_sorgu.Form!frm_sorgu_alt_formu!İfade1.SelLength = Len(ArananKelime)
End If
End Sub
03/09/2009, 11:44

Seruz

Güzel bir fikir ama bunu (örnekteki gibi) sürekli formda nasıl yapacağız?
03/09/2009, 12:08

gocebe

sayın aydiny ;
resim ile örneğini verdiğiniz uygulama web tabanlı Html kodları ile yapılıyor. sunucu tarafında kodlar işlenirken arama kriterine uyan kelimeleri font rengini değiştirerek basıyor.tek bir alan içersinde textlerin diğerlerinden bağımsız olarak renklendirilmesi mümkün değil.
anca aklıma webdeki gibi yaparak çözüme ulaşmak için bir yöntem geliyor. arama sonuçlarını teker teker ayrı etiketlere yazmak ve arama kriteri ile uyuşuyor ise rengini değiştirmek.
aşağıda kodunu ve örneğini ekliyorum.
sürekli formda ayırma yapamıyor onun için tek form görünümünde olabilir.
ancak nedense boşlukları tam olarak ayırtamadım. sayın cuneyt'in kodları ile benim kodları birleştirerek devamı getirilebilir.bende mantığımdaki yanlışı görmüş olurum.
Kod:
Private Sub parcala_yay()
On Error GoTo cikis
Dim kelimeler, aktar As String
Dim uzunluk, nerdeyiz, nerdeyiz1, buraya As Integer

For eno = 1 To 40
   Me("e_" & eno).Visible = False
   Me("e_" & eno).ForeColor = vbBlack
Next eno

nerdeyiz = 1
kelimeler = Me.Metin7
uzunluk = Len(kelimeler)
For eno = 1 To 40
   If eno <> 1 Then
    nerdeyiz1 = nerdeyiz
    nerdeyiz = InStr(nerdeyiz1, kelimeler, " ") + 1
    buraya = InStr(nerdeyiz, kelimeler, " ") - nerdeyiz1

   Else
    nerdeyiz = 1
    buraya = InStr(nerdeyiz, kelimeler, " ")
   End If
  
   Me("e_" & eno).Caption = Mid(kelimeler, nerdeyiz, buraya)
   Me("e_" & eno).Visible = True
   Me("e_" & eno).Width = Len(Me("e_" & eno).Caption) * 130
  
   If eno = 1 Then
    Me("e_" & eno).Left = 1550
   Else
    Me("e_" & eno).Left = Me("e_" & eno - 1).Width + Me("e_" & eno - 1).Left
   End If
  
   If Me("e_" & eno).Caption = Forms!frm_sorgu!DNo Then Me("e_" & eno).ForeColor = vbRed
   If Me("e_" & eno).Caption = Forms!frm_sorgu!SAdi Then Me("e_" & eno).ForeColor = vbRed
   If Me("e_" & eno).Caption = Forms!frm_sorgu!SSoyadi Then Me("e_" & eno).ForeColor = vbRed
   If Me("e_" & eno).Caption = Forms!frm_sorgu!SKonu Then Me("e_" & eno).ForeColor = vbRed
  
Next eno
cikis:
End Sub
05/09/2009, 15:20

aydiny

Değerli arkadaşlarım,

yanıtlarınız için teşekkür ederim. Konu ile ilgili çözüm denemlerim devam ediyor. Sonuca ulaştığımda sizleri de bilgilendireceğim.

İyi çalışmalar dilerim.