FilemakerTurk, AYS Bilişim ve Beyaz Net tarafından desteklenmektedir.
Filemaker Danışmanınız
AYS Bilişim
Mehmet KAYA
 0532 231 07 27
 0216 318 55 80
 mkaya@aysbilisim.net
						

Karekod içinden seri no yu çekmek?

+2 oy
2,001 kez görüntülendi

01086985363692902110034-11190321101

010869853630227321133011181225101

010869853630944921181130-11181224101

0108680831006123211688301111809141014091815

010868083100765621105711*111704111011041717

Karekod 4 bölümden oluşuyor.

01 ile barkod no başlıyor. barkod 14 haneli

21 ile  seri no başlıyor.   4-16 haneli.std bir değer yok.(Sorun da burdan oluyor zaten)

11 ile tarih başlıyor. Seri no en sonunda 1, 11 ,111 olursa tarih in kodu ile karışmasın diye Bazı firmalar  "-*_" koymuşlar. Bazısında hiç yok.

10 ile Lot no başlıyor.

Bizim isteğimiz üstteki örneklerdeki Yeşil fosforlu rakamları bir alana tanımlamak?

14, Nisan, 2019 Filemaker Advanced kategorisinde Optisyen (57,460 puan) tarafından soruldu
17, Nisan, 2019 Recep Güney tarafından yeniden etikenlendirildi
karekod'da geçen tarih bilgisi ayrı bir yerde (alanda) mevcut mu?
Osman Hocam, firmadan bu şekilde oluşturulmuş tek parça olarak geliyor. Bazı firmalardan 4 parça halinde alabiliyoruz ama vermeyen firmalar var. Dolayısıyla bizim çözümleme yapmamız gerekiyor.
Benzer bir sorunu İlaç Barkodu olan da siz çözmüştünüz.
http://www.filemakerturk.com/6946/karekod-i%C3%A7inden-tarih-bilgisi-%C3%A7ekmek?show=6946#q6946
Dün epey uğraştım ama ordaki çözümü buraya uyarlayamadım . Bir Usta eli değmesi gerekiyor.
evet biraz anımsamıştım o zamanki kodu, benziyor sanki biraz. tarihen sonraki bölümle ilgili (en son siyah kısım) ipucu var mı? hangi karakterle başlar, hangisiyle biter?
En son kısım LOT NO.
10 ile başlıyor. bazı firmalar sadece 1 yazıyor LOT No ya. Bazıları 8-10 haneye kadar uzatıyor. Heralde şöyle yapmak lazım osman Hocam . Mantığı ben söyleyeyim Kod işi siz kalıyor! :))
En sağdan başla "10" u bul; ama bundan sonraki (sola doğru) 6 rakam tarih olsun.
Tarihin başındaki 11i bul; baştan 19. hane ile bunun arasındaki (solundaki rakamları)
bulduk mu işlem tamamdır? :)

5 Cevaplar

+4 oy
 
En İyi Cevap

Herkese selam ederim;

Hocam bir örnek yaptım ama umarım istediğiniz gibi olmuştur. Farklı şeylerde yapılabilir mutlaka. Ben ilk aklıma gelen şekilde uyguladım. Eğer çözüm bulunamaz ise ilerleyen günlerde farklı çözümler üzerinde de çalışırım. 

Örnek Dosya

Herkese hayırlı günler dilerim.

Saygılarımla.

16, Nisan, 2019 ercanD (73,590 puan) tarafından cevaplandı
16, Nisan, 2019 Optisyen tarafından seçilmiş
Çok orjinal bir çözüm olmuş.
Ellerinize sağlık..
@ercand
süper... müthiş... ve harbiden orjinal... tebrik ederim...
Ercan bey tarihleri 11 Kasım yapınca farklı sonuç veriyor. :)

edit: Substitue() yerine GetAsNumber () da kullanılabilir!
Herkese selam ederim,

Estağfirullah değerli hocalarım, o sizlerin teveccühü ama yine de güzel sözleriniz için teşekkür ederim.

Sorunuz çok bilinmeyenli bir denklem. Bu tür denklemlerde sonucun hatalı çıkma olasılığı çok yüksektir.
Örneğin tarih 11 ile başlıyor demiştiniz 2011 yılının 11. ayının 11. gününe denk gelen bir değer 11111111 olacaktır. buna benzer değerlerde sorun olma olasılığı bulunmakta. Yada 2021 yılında 11211111..Lot numarasında da ayını sorunlar muhtemel 1010101010 gibi. Başka bir örnek 211111111121101010101010...
Değer basamak sayıları barkod numarasında olduğu gibi mutlak olmuş olsa idi iş çok kolay olurdu. Örneğin seri no için de seri numaraları 21 ile başlar ve takip eden 16 basamak seri numarasını ifade eder denilmiş olsa idi...

Ben fırsat buldukça düşünüyorum. Daha kalıcı ve hatasız nasıl yapabiliriz diye. Değerli hocalarımızın da bu konu hakkında akıl yorduklarını kanısındayım.
Umuyorum en kısa sürede daha güzel bir sonuca ulaşabilirsiniz.

Herkese hayırlı günler dilerim.
Saygılarımla.
Selam ederim Recep Hocam,

Sizin mesajınızı yazdığım yazıyı onayladıktan sonra gördüm. Olası sebeplerden bahsettim. Dediğiniz de bu olası sebeplerden birisi :)

Güzel düşünüp güzel formüle etmek gerekiyor. Birkaç gün bilgisayar başında olamayacağım. Allah izin verir ise bilgisayar başına geçince tekrar inceleyeceğim. Bu arada belki değerli hocalarımızdan biri sorunu çözmüş olur. :)

GetAsNumber için kenara notumu aldım hocam.

Recep hocam hayırlı günler dilerim.
Saygılarımla.
Ben kavede pişpirik oynuyom, mfö dinliom, maç seyrediom... :)
ben bir çözüm buldum ama beğenmedim, uzun ve karışık.
Osman abininki gibi güzelleştirecek vakit bulursam yazarım.
Saygılar.
+2 oy
İlk 18 rakamı attıktan sonra PatternCount () ile 11'leri sayar ve de herbirinin text içindeki yerini Position () ile hesaplardım.

Sonra da her bir 11'den sonra gelen 6 rakamın geçerli bir tarih olup olmadığını sorgulayarak seri numarasının bittiği yer tahmin edilebilir sanki...
14, Nisan, 2019 Recep Güney (70,020 puan) tarafından cevaplandı
+1 oy
ilk 14 haneyi atın. ayrı bir alana alın.

bir tablo oluşturup number formatında tarih adında bir alan açın. betik ile tarihleri uygun formatta doldurun.

 X ile ilişki kurun mevcut tablonun herhangi bir alanına.

List(Tarih) ile o tablodaki tüm tarihleri listeye alın.

Mevcut alan ile filtre uygulayın eşleşen tarihi gösterecek. Bunu değişken içerisinde yapabilirsiniz.

Mevcut tarih ile Substr ile kaydı parçalayın elinizde sonu 11 ile biten arada - veya * olan bir seri numarası kalacaktır. ihtiyacınız olan uygun formatlı bir tarih listesi.
14, Nisan, 2019 Goksel_Gokce (98,530 puan) tarafından cevaplandı
Güzel bir soru, tüm olasılıklarıyla çözüp, uygulamayı paylaşana 2020 yılında, 1 yıl boyunca sınırsız adette, ücretsiz efatura hediye edeceğim....
+2 oy

Bir script vasıtası ile seri nr ve tarihi çıkardım. Mevcut örnekleri ve Recep beyin söylediği 11 kasımı hatta           11 kasım 2011 i de denedim herhangi bir problem çıkmadı.

Mantığı şu şekilde kurdum Barkodu çıkardıktan sonra 11 i aratıyorum 11 i bulursa bu 11 den belli karekter sonra10 varmı diye sorduruyorum  cevap yok ise 11 aramaya devam cevap var ise tarih hanelerini seçerek bir tarih alnına atıyorum. Örneklerde hepsi tarih alanına oturdu. Onun için daha fazla uğraşmadım . Aslında Ay hanesinin  1-12 arasında kaldığını , Gün hanesinin de ay ve yıla göre uygun olup olmadığının da sorgulanması icap eder. Herkese selam ve sevgiler...

http://filemakerturk.com/?qa=blob&qa_blobid=1656818575723207250

YENİ DÜZENLEME ; Kare kod içindeki tarihi temsil eden hanelerin gerçek tarihe uygun olup olmadığını da kontrol etmek için bazı ilave ve değişiklikler yaptım.

http://filemakerturk.com/?qa=blob&qa_blobid=3383329866901601249

18, Nisan, 2019 Cevat Okyar (20,310 puan) tarafından cevaplandı
18, Nisan, 2019 Cevat Okyar tarafından düzenlendi
Cevat Abim emeklerinize sağlık, çok güzel bir çözüm olmuş. teşekkür ederim.
Rica ederim. İşinizi gördü ise ne mutlu bana. Selamlar...
+2 oy

Custom Function olarak ben de bir örnek yaptım sonunda :)

Let ( [  

           @textWOBC = GetAsNumber ( text );
           @textLength = Length ( @textWOBC ) ;

           @is11 = Middle ( @textWOBC ; start ; 2 ) = 11 ;
           @is10 = Middle ( @textWOBC ; start + 8 ; 2 ) = 10 ;
           @isValidDate = IsValid ( GetAsDate ( Middle ( @textWOBC ; start + 6 ; 2 ) & "/" & Middle ( @textWOBC ; start + 4 ; 2 ) & "/20" & Middle ( @textWOBC ; start + 2 ; 2 ) ) )

        ]; 

           Case ( 

 

                     @is11 + @is10 + @isValidDate = 3 ;  Middle ( @textWOBC ; 18 ; start - 18 ) ; 


                     start < @textLength ; findSerial_cf ( text ; start + 1 ) ; 

 

                    "Hata: Kod bulunamadı." 


                     )


)//end let

23, Nisan, 2019 Recep Güney (70,020 puan) tarafından cevaplandı
23, Nisan, 2019 Recep Güney tarafından düzenlendi
Recep Bey ellerinize sağlık, ufkumu açtınız.
Her bir çözüm ayrı bir güzel oldu .
Tüm cevapları veren arkadaşlarıma ayrı ayrı teşekkür ediyorum. iyi ki varsınız!
Helal valla topragim!
Eyvallah gadasını aldığım :)
...