Metin Alanındaki verileri sütunlara ayırma ve birleşim sorgusu yapma

Katılım
16 Şubat 2007
Mesajlar
323
Excel Vers. ve Dili
office 2003 prof.tr
Arkadaşlar merhaba,
Öncelikle Bayramınızı kutluyorum. benim sorum şöyle; tabloda yer alan bir metin alanındaki verileri standart bir karakter yardımıyla farklı sütunlara bölmek ve bu farklı sütunları bir sorgu (Ya da varsa farklı bir yöntemle) ile yeniden her bir sütuna ayırdığım verileri yeni birer kayıt alanı olarak görmek istiyorum.
Ekli dosyada ürünler isimli bir tablomdaki ürün cinsi adlı metin alanında yer alan ve virgül (Standart karakter) ile birbirinden ayrılan her bir ismi sütünlara bölmek daha sonra da sütunlardaki verileri ürün cinsi adlı tek sütunda toplamak istiyorum. Sonuçta yer alan veriler sorgu ile gösterilecek, yani yeni bir tablo falan oluşturmadan sadece sorguda sonuçları görmem yeterli, örnekle açıklamak gerekirse;
Mevcut durum
Kayıt No Tarih Ürün Cinsi
1 01.12.2008 Elma, Armut
2 02.12.2008 Karpuz, Yeşil Soğan, Kavun
Olmasını istediğim durum
Kayıt No Tarih Ürün Cinsi
1 01.12.2008 Elma
2 01.12.2008 Armut
2 02.12.2008 Karpuz
2 02.12.2008 Yeşil Soğan
2 02.12.2008 Kavun
 

Ekli dosyalar

Son düzenleme:
Katılım
19 Eylül 2008
Mesajlar
331
Excel Vers. ve Dili
2003
Sayın abkbek
sorgu ile yapılacağını okumadan tabloya yaptım çok gerekli ise sorgu ile de yapabilirz iyi çalışmalar
 

Ekli dosyalar

Katılım
16 Şubat 2007
Mesajlar
323
Excel Vers. ve Dili
office 2003 prof.tr
Sayın adnanyurdakul,
cevabınız için teşekkür ederim. Sonucta ulaşmak istediğim hedefe ulaşmışsınız. Ancak sorgu ile yapabilirseniz memnun olurum.
 
Katılım
19 Eylül 2008
Mesajlar
331
Excel Vers. ve Dili
2003
satırların 2nci ve 3 üçüncü virgüllerini kontrol ederek bilgilerini alan sorguları iki ve uc isimleri ile tanımlı olarak yaptım
ayrıca iki ve uc sorgusunu birleştirdim geri kalan kısmını sen modüle bakarak sadece d yazan yerlerin karşısındaki rakamları ve say yazan yerin karşısındaki rakamları örneklere bakarak yapabilirsin iyi çalışmalar
 

Ekli dosyalar

Katılım
16 Şubat 2007
Mesajlar
323
Excel Vers. ve Dili
office 2003 prof.tr
Sayın adnan yurdakul,
ilginiz ve cevabınızdan dolayı çok teşekkür ederim. anlattığınız yöntemi anladım ve amaca hizmet ediyor. (ilk virgülden önceki veriyi almak için ne yapmalıyım? bunu da gönderebilirseniz memnun olurum)
ancak anlattığınız yöntemle her ayırıcı için modül yazmak ve sorgu oluşturmak gerekiyor. yani metin alanında yer alabilecek azami ayırıcıyı öngörmek gerekir. öngördüğünüzden fazla veri bulunduğunda ise sonuçta hata olasılığı var. acaba bizi bu statik durumdan kurtarabilecek daha işlevsel bir yöntem bulunabilir mi. daha iyi bir yöntem buluncaya kadar sizin çözümünüzü kullanacağım. fakat bu arada araştırmaya devam edeceğim.
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Merhaba;
Alttaki linkte göreceğiniz üzere belirli bir ayraca göre kelimeleri kolayca ayırabilirsiniz..

Elbette bu yöntemde de oluşacak sütun sayısı belli değil..

http://allenbrowne.com/func-10.html

ve log_error fonksiyonu için;

http://allenbrowne.com/ser-23a.html


sizin Tablonuza göre basit bir kullanım örneği;

SELECT uruncinsi,
parseword(uruncinsi,1,",") AS ilk_kelime,
parseword(uruncinsi,2,",") AS ikinci_kelime,
parseword(uruncinsi,-1,",") AS son_kelime
FROM urunler;
 
Katılım
19 Eylül 2008
Mesajlar
331
Excel Vers. ve Dili
2003
sn abkbek
form üzerindeki düğmenin fonksiyonunu şu şekilde değiştirdim


Dim rs As New ADODB.Recordset
rs.Open "urunler", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

Dim rs1 As New ADODB.Recordset
rs1.Open "vurun", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

'Dim tmr
'tmr = Timer

Dim t() As String
Dim i As Integer

Dim fld2 As ADODB.Field, fld1 As ADODB.Field, flds1 As ADODB.Field, flds2 As ADODB.Field

Set fld1 = rs1(1)
Set fld2 = rs1(2)
Set flds1 = rs(1)
Set flds2 = rs(2)

Do Until rs.EOF





t = Split(flds2.Value, ",")
For i = 0 To UBound(t)
rs1.AddNew
fld2.Value =trim(t(i))
fld1.Value = flds1.Value
Next

rs.MoveNext
Loop
rs1.UpdateBatch
rs.Close
rs1.Close

sorguya dayalı sistemde alt alta gelecek şekilde accesss te işlem yapmayıben beceremedim ancak en kısa yol olarak şunu yazadım t(i) içindeki i değerini 0,1,2,3,4 gibi rakkamlar ile değiştirip sorguya bağladığında çok daha kolay işlem yapabilirsiniz normalde bu işlem bütün değerleri okuyor ancak sql e hepsini yazamıyor en sonundaki değerler kalıyor yani üzerine yazıyor

modüldeki değerleri silip bunu yapıştırın
Function ilk(uruncinsi As String) As String
Dim i As Integer
Dim t() As String

t = Split(uruncinsi, ",")
For i = 0 To UBound(t)
ilk = t(i)

Next
End Function
örneği ekliyorum
 

Ekli dosyalar

Katılım
19 Eylül 2008
Mesajlar
331
Excel Vers. ve Dili
2003
sn beab05 parseword fonksiyonunu örnkteki dosya üzerinde kullanabilirseniz çok memnun olcağız teşekkürler
 
Katılım
16 Şubat 2007
Mesajlar
323
Excel Vers. ve Dili
office 2003 prof.tr
Sayın üstadlarımıza çok teşekkür ederim. oluşacak sütun sayısı ile ilgili problemi de manuel kontrol ederek uzun yoldan hallederiz artık. temel sorun halloldu, artık daha işlevsel olmasını sağlamak adına sütun sayısı ile ilgili sınırlama ileride siz üstadlarımız tarafından mutlaka çözümlenecektir. ilgi ve emeğinize minnettarım.
 
Katılım
16 Şubat 2007
Mesajlar
323
Excel Vers. ve Dili
office 2003 prof.tr
Arkadaşlar merhaba,
parseword fonksiyonu ile çalıştırdığım sorgunun sonuçlarını excelde kaynak sorgu olarak kullanmak maksadıyla excel'in dış veri al (Yeni veritabanı sorgusu) seçeneğini tıkladığımda "ifadede tanımlanmamış parseword işlevi" şeklinde hata iletisi ile karşılaşıyorum ve bu hata nedeniyle excele aktaramıyorum. ancak sorgudayken tüm verileri seçip, excel'e yapıştır dediğimde herhangi bir problem yok. oysa benim yapmak istediğim, excel'e kaynak olarak ekleyip her seferinde kopyala yapıştır yapmak yerine, verileri güncelle ile güncel bilgilerin excel'e aktarılmasını sağlamak. acaba ben mi eksik birşey yapıyorum.
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Excelden verileri import etmek yerine, Access'ten ilgili sorguyu bir düğmeyle Excel'e export etseniz?
 
Katılım
16 Şubat 2007
Mesajlar
323
Excel Vers. ve Dili
office 2003 prof.tr
Sayın beab05 önerinizi deneyeceğim. teşekkür ederim.
 
Üst