Son iki rakama göre otomatik gelen kutu

Katılım
26 Mayıs 2006
Mesajlar
78
Excel Vers. ve Dili
2003
Merhabalar,
Arkadaşlar sorum şöyle. Yardımcı olursanız sevinirim.
6 rakamlı yarı ürün kodumuz var. Bu yarı ürün kodunun son iki rakamı kaliteyi belirliyor. Mesela 123410. Burdaki son iki rakam olan 10, ürünün x kalite olduğunu açıklıyor. Toplam 5 kalite olduğunu düşünelim ve bunları bir tabloda yazalım. Tablonun adı tblkaliteler olsun. Yani son iki rakamına göre;
10=x, 11=y, 12=z, 13=a, 14=b olsun. Burda rakamlar [yarıürünkodu], harfler [kalite] olarak yazılsın. Bunları diğer tablodan çekmek istiyorum. Diğer tablomun ismi ise tblürünler olsun. Tabi bunlara ait formda düzenleyecem. Ürünler tablosunda yarı ürün koduna 123410 yazdığım zaman kalite bölümüne x sayısı otomatik gelsin istiyorum. Kısaca sorunum bu.
Gerçekten kusura bakmayın bilgisayarımda program olmadığı için yine ekleyemiyorum. Evde de maalesef netim yok :(
Anlaşılmayan biryer varsa cevap verebilirim.
Tek istediğim bunu yapabilecek bir kod.
Şimdiden teşekkür ederim...
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın euskenet,

Örnek eklemiş olsaydınız bir de kontrolünü yapmış olurdum. İstediğiniz kod:

Dim kalite1, yarıürünkodu1 As String
yarıürünkodu1 = Me.yarıürünkodu
kalite1 = Right(yarıürünkodu, 2)
Select Case kalite1
Case "10"
Me.kalite = x
Case "11"
Me.kalite = y
Case "12"
Me.kalite = z
Case "13"
Me.kalite = a
Case "14"
Me.kalite = b
End Select

Burada kullandığın Right fonksiyonu bir metin dizisinin sağından belirtilmiş sayı kadar karakter seçiyor.

iyi çalışmalar :D
 
Katılım
26 Mayıs 2006
Mesajlar
78
Excel Vers. ve Dili
2003
son bir soru

Sayın Modalı,

Yanıtınız için çok teşekkür ederim. Söylemiş olduğunuz kodla birlikte basit bir dosya yarattım ve ekledim. x,y ve z yerine, kalitelerin isimlerini girdim. Fakat şöyle bir sorun oluştu. Kod içindeki harfler algılanmıyor kutuya aktarırken. Yani sadece rakamlar algılanıyor.
Birde asıl problemim bu kalite isimlerini elle girmek istemeyişim. Yani kaliteler bunlarla sınırlı değil. Hepsini koda yazmak istemiyorum. Yarıürün formundan otomatik almasını nasıl sağlayabiliriz. Yani ürünler formunda yarı ürün kodunu seçtiğim zaman yarıürün formundaki kaliteyi otomatik olarak alabilirsek daha kullanışlı olacak. Tabi yine ozaman son iki rakamını bildirmeye gerek kalmayacaktır. Direk o yarı ürün koduna karşılık olan kalite gelecektir. Aslında daha önceden açmış olduğum başlıkta da aynı konuda sorunum vardı. Yardımcı olursanız sevinirim.

Çok teşekkür ederim...
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın euskent,

Hata bende " " ları unuttum ondan sayı olarak algılıyor. Neyse ekleyince oluyor. Tabiki daha basit tablodan almak. Onun için sanırım dLookUp fonksiyonunu kullanmak gerekiyor. Bu gece bakmaya çalışırım.

iyi çalışmalar :D
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın euskent,

İstediğiniz herhalde ekli uygulama.

İyi çalışmalar :hey:
 
Katılım
26 Mayıs 2006
Mesajlar
78
Excel Vers. ve Dili
2003
teşekkürler

Sayın modalı,

Ellerinize sağlık, istediğim gibi olmuş. Fakat kodu anlamak için sanırım biraz uğraşacam :D . İlk defa duyduğun bir iki komut var.

Teşekkürler...
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın euskent,

Kodları buraya tekrar yazıp açıklayayım. Takılan varsa yardımcı olmaya çalışırım.
Kod:
Dim cnn As ADODB.Connection
  Dim rec As New ADODB.Recordset
  
  Dim strSQLStart As String
  Dim strSQLFrom As String
  Dim strSQLWhere As String
  Dim strSQLOrder As String
  Dim strSQL As String
  strSQLStart = "SELECT Yarıürünkodu"
      strSQLStart = strSQLStart & "  , Kalite"
      strSQLStart = strSQLStart & "  , Pozisyon"
   strSQLFrom = " From  Tbl_Yarı_Ürün"
   strSQLWhere = " Where  (((Right([Yarıürünkodu],2))=Right('" & Forms!Frm_Ürünler!Yarıürünkodu & "',2)));"
   strSQL = strSQLStart & strSQLFrom & strSQLWhere & strSQLOrder
 
 Set cnn = CurrentProject.Connection
 rec.Open strSQL, cnn
 rec.MoveFirst
 
 Me.Kalite = rec(1)
 
 Set rec = Nothing
Burada genel mantık olarak bir SQL sorgusu cümlesi hazırlıyoruz ondan sonra da ADODB veri erişim yöntemiyle de sorgu cümlesine karşılık gelen veri kümesini açıyoruz oradan istediğimizi seçip metin kutumuza yazdırıyoruz.

SQL veri cümlesinin oluşturulması için şu yolu takip ediyorum (Bana kolay geliyor)

Uygulama içinde boş bir sorgu oluşturuyorum, istediğim sorguyu elde ettikten sonra sorgu penceresini sağ tıklayıp SQL görünümünü açıyorum. Oradaki cümleyi kopyalayıp forumun Access örnekleri bölümüne eklediğim SQL Builder3 uygulamasını açıp kopyaladığım cümleyi yapıştırıyorum ondan sonra da cümlenin VBA daki karşılığını alıyorum oradan kopyalayıp (Sağ tıklamayla kopyalamıyor tüm kodu seçip Ctrl +C ile kopyalayın) kullanılacak olan yere yapıştırıyorum.

Ama bazen kopyalanan cümle sonuç vermeyip hata üretiyor. Bu kodda oluşan hataları hatırlatayım size:

SELECT deyiminde her alan önüne bir de tablo adını ekliyor bu şekilde hata veriyor, onları sildim, bir de SQL cümlesi tırnaklar " " içine yazıldığından araya ekleyeceğimiz alanlar çift tırnak içine yazılmaması gerekiyor, onun için bu düzeltmeleri mutlaka yapmak gerekiyor.

Burada yaptığım düzeltme

Right('" & Forms!Frm_Ürünler!Yarıürünkodu & "',2)));"
cümlesinde Forms!Frm_Ürünler!Yarıürünkodu alanını çift tırnak dışına almak gerekiyor. Alanın veri türüne göre metinse tırnakları ' ' tarihse # # leri unutmamak gerekiyor, sayısal veriler için hiçbirşeye ihtiyaç yok.

En başta kullanacağımız değişkenlerin veri tiplerini atıyoruz. SQL ile başlayan tüm değişkenler metin olarak atanıyor.

Gelelim ADODB ile erişime. En evella bir bağlantımızın olması gerekiyor oda cnn onu ADODB conection olarak atıyoruz.
Bir de veri setine ihtiyacımız var o da rec onuda yeni ADODB veri seti olarak tanımlıyoruz.

Ondan sonra cnn i şu anda çalıştığımız veri tabanına kuruyoruz.
veri setini de bulunduğumuz veri tabanında yukarıda yazdığımız strSQL cümlesinine göre açmasını istiyoruz.
İlk veri ye yönelip Me.kalite metin kutusunun içeriğini bu veri setinin 2. (sayma 0 dan başlıyor onun için 1) alanına eşitliyoruz.

Daha sonra kodla açtığımız veri tabanını 0 lamamız gerekiyor ve cnn ile rec i hiçbirşeye eşitliyoruz.

Daha aöıklayıcı bilgiisteyenler mesaj yazsın lütfen

İyi çalışmalar :hey:
 
Katılım
26 Mayıs 2006
Mesajlar
78
Excel Vers. ve Dili
2003
biraz karışıkmış ama:)

Sayın Modalı,
Çok teşekkür ederim açıklamalar için. Açıklamanızı inceleyeceğim. Biraz karışık görünsede birkaç denemeyle anlayacağımı düşünüyorum. Yardımlarınız için teşekkürler tekrar.
İyi çalışmalar :hey:
 
Katılım
17 Temmuz 2007
Mesajlar
294
Excel Vers. ve Dili
access
İsimleri saymam,toplamını almam lazım

Sevgili arkadaşlar ben kendimce birşeyler yapmaya çalışıyorum ancak aşağıda bulunan örneğimde bir sıkıntım var ve bunun nasıl yapılacağı konusunda ,araştırdım ancak bir sonuç elde edemedim
sorunum şu ;benim bir metin kutusu içinde isimlerim var ve bu isimlerim arka arkasına sıralanmış vaziyette , ben bu isimleri virgül ile ayırdım ve bu virgül ile ayrılmış isimlerin sayısını almak istiyorum lütfen bana yardımcı olursanız çok memnun olacacağım şimdiden herkese teşekkür ederim.
Yardım edende sağ olsun,edemeyende
sorunumla ilgili Yeni örnek aşağıda :herkese Kolay gelsin
 
Son düzenleme:
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın celoy,

Dün gece yapmıştım ama göndermeyi unuttum.:roll:

Bir modül ekledim ve oraya iki fonksiyon yazdım. İstediğiniz hesaplamaları bunlar yapıyor.

İyi çalışmalar
 
Katılım
17 Temmuz 2007
Mesajlar
294
Excel Vers. ve Dili
access
sayın modalı

harikasınız ve çooook teşekkür ederim,sizin gibi insanlara ihtiyacımız var
kolay gelsin
 
Katılım
15 Kasım 2006
Mesajlar
583
Excel Vers. ve Dili
Ms Office 2003 Türkçe
sayın modalı,
gerçi 1 seneyi geçmiş ama sql adına olduğu için buraya aktarmak
uygun diye düşündüm. (#7 numarada yazdığınız sorgu için)

"
Üzerinde indeks olan kolonlarda optimizer ın indeksi kullanabilmesi için temel bazı tavsiyeler

Bunlar YAPILMAMALI

1) … where first_name || last_name = ‘HAKKIOKTAY’
2) … where counter != 0;
3) … where trunc(process_date) = trunc(sysdate);
4) &#8230; where salary + 100 < 1000;
5) &#8230; where substr(last_name,1,3) = &#8216;OKT&#8217;

Yukar&#305;dakilerin yerine &#351;unlar tercih edilmeli

1) &#8230; where first_name = &#8216;HAKKI&#8217; and last_name = &#8216;OKTAY&#8217; ;
2) &#8230; where counter > 0 ;
3) &#8230; where process_date between trunc(sysdate) and trunc(sysdate) + .99999;
4) &#8230; where salary < 900;
5) &#8230; where last_name like &#8216;OKT&#37;&#8217;;
"

bu al&#305;nt&#305;,
http://hakkioktay.wordpress.com/2007/03/15/indeks-i-kullandirabilmek-icin-“sunu-yapma-bunu-yap”-turunden-tavsiyeler-ozet/
adresinden yap&#305;lm&#305;&#351;t&#305;r.

her nekadar buradaki konu oracle olsa da, sql sorgular&#305;n&#305; ba&#287;lar.
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın yeni54

Son yazdıklarınızla yukarıda yazdığım kodlarla ne gibi bir ilişkisi olabileceğini çıkartamadım.

Daha geniş açıklama yapabilirmisiniz?

İyi çalışmalar
 
Katılım
15 Kasım 2006
Mesajlar
583
Excel Vers. ve Dili
Ms Office 2003 Türkçe
sayın modalı hocam,
(hocam dememe kızmayın, birine birşeyler öğreten, öğrettiğinin hocasıdır diye düşünüyorum. sizden çok şey öğrendik, farkındasınız veya değilsiniz)

#7 numarada kullandığınız sorgunun where şartı ile ilgili olarak bu alıntıyı yapmıştım.

sorguyu, performans açısından alıntıdaki 5. madde ye göre düzenlemek daha doğru olur.
 
Katılım
17 Temmuz 2007
Mesajlar
294
Excel Vers. ve Dili
access
Eme&#287;ine sa&#287;l&#305;k ,&#231;ok te&#351;ekkur ederim.
 
Katılım
17 Temmuz 2007
Mesajlar
294
Excel Vers. ve Dili
access
tablo değişti sorun oluştu

Sayın Hocalarım yaptığınız örnekler çalışıyor ancak
ben tablonun adını ve verisini değiştirince (modül 1 dende değiştirdim) bazı hatalar veriyor kendime uyarlayamadım,kendi tablo ve formum üzerine tekrar işledim,sorunuma bir göz atarsanız sevinirim.
şimdiden teşekkür ederim.
 
Son düzenleme:
Katılım
15 Kasım 2006
Mesajlar
583
Excel Vers. ve Dili
Ms Office 2003 Türkçe
modulde, rs(x) ve rs(y)
gibi bir kullanım vardı.

tablo değişti demişsin, eğer kolonların yerleri de değiştiyse,
yukarıdaki x ve y yi ona göre düzenle.

(tablo alanlarını 0,1,2,3... şeklinde say, yani 0 dan başla)
 
Katılım
17 Temmuz 2007
Mesajlar
294
Excel Vers. ve Dili
access
Sayın yeni54
Dediğiniz gibi denedim ve değiştirdim ancak ,yine benim anlayamadığım hata halen devam etti bu modüldeki makroları bir gözden geçirseniz ,acama burada bulunan modül1 de yazılı
funcTümünüSay = funcTümünüSay + funcKişiSay(rs(5)) + funcKişiSay(rs(6))
yerine daha açık ve
funcTümünüSay = funcTümünüSay + funcKişiSay( MÜŞTEKİLER) + funcKişiSay(ŞÜPHELİLER) gibi direk olarak alan ismi yazsam olmazmı,ben böyle denedim ancak bu sefer makro kökten değişmesi gerekiyor ,yani bir türlü bu işin içinden çıkamadım günlerdir bunun üzerinde uğraşıyorum,yardım ederseniz sevineceğim
lütfen siz hocaların ve değerli arkadaşların bu işin biran önce oluşmasında yardımlarını bekliyorum,şimdiden herkese teşekkür ederim,
herkese kolay gelsin
 
Katılım
15 Kasım 2006
Mesajlar
583
Excel Vers. ve Dili
Ms Office 2003 Türkçe
umarım istediğiniz gibi olmuştur.

(herzamanki gibi dosya uzantisi zip değil 7z)
 
Üst