Otomatik Numara Verdirme

1 2 3
02/07/2015, 09:11

Allback

Merhaba,
Yaptığım işte standart adlandırma işleminin bir sistematiği var.


Bir standart iş standardı ise "G-[BölümAdı]" diye, video standardı ise "V-" diye, İşletme talimatı ise "KE-" diye başlıyor. (Örnek ben kalıp ekipman bölümünde olduğumdan yeni iş standardı yazarsam baş tarafı "G-Kalıp" oluyor.)

Standart hangi işle ilgili ise o işe tanımlı numara devamına ekleniyor (Mesela kalıp hazırlama işi diyelim tanımlı numarası da 2 olsun "G-Kalıp-2" oluyor.

Devamında 4 basamaklı bir numara daha geliyor. Bu da yapılan işin türünü belirtiyor. İş güvenliği ise 1, kalite ise 2, Problemlere Müdahale ise 3, operasyon ise 4 ile başlıyor (7'ye kadar gidiyor). Örneğin operasyon standardı olsun. 
"G-Kalıp-2-4001" oluyor. Kalıp hazırlama ile ilgili yeni bir operasyon standardı yazılırsa bu sondaki 4 basamaklı sayı 1 arttırılıyor. Örn: "G-Kalıp-2-4002" oluyor.

Şimdi sorum şu;

Formda bu kriterleri seçebileceğim açılan kutular var. Açılan kutulardan seçtiklerime göre standart numarasını sistemin otomatik vermesini sağlayabilir miyim? Aynı kaydın girilebilmesini engellemiştim. Burada kafama takılan nokta, sistem en son girilmiş kaydı bulup 1 eklemeli. Bunu nasıl yapabiliriz ya da yapabilir miyiz?
Diyelim ki yeni bir iş standardı yazdım ve kayıt formunda aşağıdaki kriterleri seçtim.
Standart Türü: İş Standardı
Standart Klasörü: Kalıp Temizleme (tanımlı numarası 6)
Standart Sınıfı: Problemlere Müdahale

Daha önce G-Kalıp-6-3016 nolu kaydın olduğunu var sayarsak, aşağıdaki standart numarasının otomatik gelmesini sağlayabilir miyim?
Standart No: G-Kalıp-6-3017
02/07/2015, 18:57

ozanakkaya

Standart No: G-Kalıp-6-3017

yazmışsınız, veri sayısı artınca, 5 haneli sayıya gereksinim duyma ihtimali varmı bilmiyorum, örnek uygulamanızı düzenledim, inceleyip olumlu/olumsuz bildirimde bulununuz.

Sub SiraNoHesapla()

Dim STuru, SKlasoru As String
Dim SSonNo, SSnifi As Integer

If Me.std_türü = "İş Standardı" Then
STuru = "G-"
ElseIf std_türü = "Video Standardı" Then
STuru = "V-"
ElseIf std_türü = "İşletme Talimatı" Then
STuru = "KE-"
End If

Select Case Me.std_klasörü
Case "01-Kalıp Değişme"
SKlasoru = "Kalıp-1"
Case "02-Kalıp Hazırlama"
SKlasoru = "Kalıp-2"
Case "03-Torba Değişme"
SKlasoru = "Kalıp-3"
Case "04-Torba Hazırlama"
SKlasoru = "Kalıp-4"
Case "05-Kalıp Bakım"
SKlasoru = "Kalıp-5"
Case "06-Kalıp Temizleme"
SKlasoru = "Kalıp-6"
Case "07-Ekipman Bakım"
SKlasoru = "Kalıp-7"
Case "08-Ofis ve Yönetim"
SKlasoru = "Kalıp-8"
Case "09-Genel"
SKlasoru = "Kalıp-9"
End Select

SSnifi = Nz(Left(Me.std_sinifi, 1), 0)

Me.Metin41 = STuru & SKlasoru & "-" & SSnifi
SSonNo = Nz(DMax("[son_no]", "srg_siranobul"), 0) + 1
SSonNo = Format(SSonNo, "0000")
If Not IsNull(Me.std_türü) And Not IsNull(Me.std_klasörü) And Not IsNull(std_sinifi) Then
Me.std_no = STuru & SKlasoru & "-" & SSonNo
End If
End Sub
03/07/2015, 08:51

Allback

(02/07/2015, 18:57)ozanakkaya yazdı: Standart No: G-Kalıp-6-3017

yazmışsınız, veri sayısı artınca, 5 haneli sayıya gereksinim duyma ihtimali varmı bilmiyorum, örnek uygulamanızı düzenledim, inceleyip olumlu/olumsuz bildirimde bulununuz.

Sub SiraNoHesapla()

Dim STuru, SKlasoru As String
Dim SSonNo, SSnifi As Integer

If Me.std_türü = "İş Standardı" Then
   STuru = "G-"
ElseIf std_türü = "Video Standardı" Then
   STuru = "V-"
ElseIf std_türü = "İşletme Talimatı" Then
   STuru = "KE-"
End If

Select Case Me.std_klasörü
Case "01-Kalıp Değişme"
   SKlasoru = "Kalıp-1"
Case "02-Kalıp Hazırlama"
   SKlasoru = "Kalıp-2"
Case "03-Torba Değişme"
   SKlasoru = "Kalıp-3"
Case "04-Torba Hazırlama"
   SKlasoru = "Kalıp-4"
Case "05-Kalıp Bakım"
   SKlasoru = "Kalıp-5"
Case "06-Kalıp Temizleme"
   SKlasoru = "Kalıp-6"
Case "07-Ekipman Bakım"
   SKlasoru = "Kalıp-7"
Case "08-Ofis ve Yönetim"
   SKlasoru = "Kalıp-8"
Case "09-Genel"
   SKlasoru = "Kalıp-9"
End Select

SSnifi = Nz(Left(Me.std_sinifi, 1), 0)

Me.Metin41 = STuru & SKlasoru & "-" & SSnifi
SSonNo = Nz(DMax("[son_no]", "srg_siranobul"), 0) + 1
SSonNo = Format(SSonNo, "0000")
If Not IsNull(Me.std_türü) And Not IsNull(Me.std_klasörü) And Not IsNull(std_sinifi) Then
Me.std_no = STuru & SKlasoru & "-" & SSonNo
End If
End Sub

Sn. ozanakkaya,

Öncelikle ellerinize sağlık. Çok güzel olmuş. 5 basamaklı sayıya ihtiyaç duymuyor sistem. Sadece bir kaç noktada düzeltme isteyeceğim.

Açılan kutulardan seçilene göre daha önce hiç bir kayıt yoksa, sondaki 4 basamaklı "0001"den başlıyor. Aslında açılan kutudan seçilen std_sinifi numarasına göre başlaması lazım. Yani "6-3S" seçildiyse ve daha önce hiçbir kayıt yoksa 6001'den başlaması lazım. 

Bir de standart adlandırma sistematiği hepsinde "İş Standardı"nda olduğu gibi değil. 
std_türü: "Video standardı" seçilirse "V-Kalıp-" ve devamında "Standart klasörü"nden seçilene göre de (misal 2-Kalıp Hazırlama olsun) "V-Kalıp-2001" oluyor. Yani video standartlarının adlandırmasında std_sınıfı'nı eklemiyoruz. (5 basamaklı olma ihtimali yok)

İşletme talimatı seçilirse; sadece başlangıcı "KE-" oluyor ve KE-001" den başlayıp devamında ardışık olarak artmaya devam ediyor. (4 basamaklı olma ihtimali yok)

İlk kısımdaki "0001'den başlama" problemden sonrası, sizi çok uğraştıracak bir düzeltme ise ben halletmeye çalışırım. (Muhtemelen beni daha daha çok uğraştıracak ve içinden çıkamayacağım
Tekrardan çok teşekkürler...
03/07/2015, 20:39

ozanakkaya

inceleyiniz
04/07/2015, 09:04

Allback

(03/07/2015, 20:39)ozanakkaya yazdı: inceleyiniz

Sn. ozanakkaya

"İş Standardı" seçildiğinde hiçbir problem yok. "Video Standardı" ya da "İşletme Talimatı" seçtiğimde sondaki aritmetik artması gereken sayı kaldığı yerden değil "1'den" başlıyor.

Bunun da nedeni anladığım kadarıyla hangi std_türünü seçersem seçeyim  "Metin41" kutusuna
std_türü + std_klasörü + std_sinifi şeklinde veri geliyor. Sorguda da buradaki son rakama göre arama yaptığından doğru kayıtları getiremiyor. 

Bir de "Temizle" butonuna bastıktan sonra yeniden kayıt girmek istediğimde std_türü seçince hata veriyor. Onun nedenini çözemedim.
04/07/2015, 09:59

GTAO

bu konuyla ilgisi yok, yeni bir konu nerden açılıyor
1 2 3