AccessTr.neT
metin ayırma - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Microsoft Access (https://accesstr.net/forum-microsoft-access.html)
+--- Forum: Access Cevaplanmış Soruları (https://accesstr.net/forum-access-cevaplanmis-sorulari.html)
+--- Konu Başlığı: metin ayırma (/konu-metin-ayirma.html)

Sayfalar: 1 2 3 4


metin ayırma - accessman - 12/03/2010

iyi günler
biliyorum daha önce buna benzer sorular ve cevaplar vardı ama ben yapamadım
eklediğim örnekteki tabloda her kayıtta bir veya birden fazla hastalık ismi yazıyor
birden fazla olanlar virgül ile ayrılmış durumda
bana lazım olan bu hastalıkların listesi
yani metin kutusundaki virgül aralarındaki hastalık isimlerini
ayırıp ayrıca bir tablo yapmam lazım
bu yaptığım tabloda her hastalık bir kez geçecek ve her kayıtta sadece bir hastalık ismi yazacak
yani
hipertansiyon ,dorsalji ,dermatit
şeklinde olan kayıt

hipertansiyon
dorsalji
dermatit

şekline gelecek

yardımlarınız için teşekkürler


Cvp: metin ayırma - accessman - 12/03/2010

sn.hayri16 arkadaşımızın yapmış olduğu linkdeki program metin ayırma yapıyor ama her kayıtta sadece bir kez yapıyor
bunu benim örneğime nasıl adapte edebiliriz

https://accesstr.net/konu-metini-ikiye-ayirma.html?page=3&highlight=ay%C4%B1r


Cvp: metin ayırma - Hayri16 - 12/03/2010

Sayın accessman sizin de belirttiğiniz gibi benim örneğim "ikiye" bölüyor. Üçe ve daha fazlaya bölmek için şöyle bir yol izleyebiliriz. Burada "instr" fonksiyonunu devreye sokacağız. Bu fonksiyon metin içerisinde belirttiğimiz karakterin kaçıncı sırada olduğunu verir. Instr(Metin,"karakter"). Bunu bir değişkene atadığımızda bize sayısal değer verir.
Buna göre tekrar yazmaya başlayalım.
Kod:
Dim bolum1, bolum2 as integer
Dim Metin1,Metin2,Metin3 as string

bolum1=instr(Anametin,",")
           'ilk virgülün yerini buluyoruz
metin1=left(Anametin,bolum1-1)
           'Ana metinden virgüle kadar olan kısmı alıp Metin1 değeri elde ediyoruz.
bolum2=instr(bolum1+1,Anametin,",")
           '2.virgülün yerini bulmak için "bolum1+1" instr fonksiyonunda kaçıncı  
           'karakterden sonra arama yapacağını belirtir.  
metin2=mid(Anametin,bolum1+1,bolum2 -(bolum1+1))
            'anametinin ilk virgülden sonraki kısmından ikinci virgülü bulduğumuz
            'kısımdan ilk virgülden sonrakini çıkararak bulduğumuz uzunluk kadar
            'karakteri al Metin2 adlı değişkene ata.
Metin3=right(Anametin,(len(anametin)-bolum2+1))
            'Anametinin sağdaki kısmundan 2.virgüle kadar olan kısmı metin3 değişkenine  
            'atıyoruz.

Bunun mutlaka daha kolay ve daha kısa yolları vardır. Ama benim bilebildiğim ve yapabildiğim bu.
Burada aklıma gelen bir sorun var. Eğer virgülden sonra boşluk bırakılmışsa ne olur bilemiyorum Img-grin
Umarım işine yarar. Kal sağlıcakla.
---------------------------------------------------
Sayın Accessman;
Sanırım sorunuzu yanlış anlamışım. Şimdi dosyanıza baktım. Yapmak istediğiniz teşhisleri tek tek ayırmak. Ve kayıtlarda standart değer yok. Bu durumda nasıl yapılabilir düşünmek lazım. Aklıma ilk gelen yol ayrı bir tanı tablosu hazırlamak. Bununla hasta için düşünülen teşhisi ilişkilendirmek. Faydası olur umuduyla ülkemizde standart hale gelen SGK nin kabul ettiği teşhis ve kodları tablosunu yolluyorum.


Cvp: metin ayırma - Masalcı - 12/03/2010

benim içnde böyle bir kod lazımdı
soru ve cevap için teşekkürler


Cvp: metin ayırma - accessman - 12/03/2010

teşekkürler Sn.hayri16
bu kod bir çok kişinin de işini görebileceği için eğer yapabilirseniz her teşhisi ayrı ayrı kayıtlara yazmak çok güzel olurdu


Cvp: metin ayırma - ayhan2122 - 12/03/2010

Yeni bir tablo oluşturdum ve bütün TANI'ları bu tabloya kaydettirip gruplattırdım.