Skip to main content

AccessTr.neT


Aynı makinanın tekrar oluşturulamaması

Aynı makinanın tekrar oluşturulamaması

Çözüldü #1
Merhaba Arkadaşlar,

Ekteki veri tabanında "MakinalarFormu" nda "kontrol" alanı var. Sorum şu:

Kontrol: [Makinalar]![Fayn] & [Makinalar]![Pus] & [Makinalar]![Sistem] tanımlamalarına sahip ikinci makinayı tanımlayamamak ve bu konuda ekrana uyarı vermek istiuorum. Yani aynı pus+fayn+sistem tanımına sahip ikinci bir makina sisteme tanımlanamamalı.

Tekrarlanan makina tanımını yapamamam lazım. Bunun nasıl bir kontrol yapmam gerekiyor acaba. Kullanıcı hiçbir şekilde aynı değerlere sahip ikinci makinayı tanımlayamamalı. Bunun için "KontrolSorgusu" ndaki aynı alanlara sahip makinalarla karşılaştırma yapılabilir mi?


Saygılarımla,
.rar DENEME.rar (Dosya Boyutu: 30,33 KB | İndirme Sayısı: 7)
Cevapla
#2
Sayın mengene2,

EK’te,bahsettiğiniz talebinize yönelik olarak hazırlanmış örnek uygulama mevcuttur.inceleyebilirsiniz.

MakinalarFormu isimli formunuzun içerisindeki KAYDET butonunun tıklandığında olay yordamına gerekli kodlama dahil edilerek,KontrolSorgusu isimli sorguda yer alan MakinaKontrol isimli alanda bulunan değerler,formdaki kontrol isimli metin kutusundaki değere göre kontrol edilerek,benzer kayıt söz konusu olduğunda uyarı vermesi sağlanmaktadır.

elbette ki,bu işlem SADECE;sorgudaki MakinaKontrol alanına ve bu alan için tercih edilen üç alan bilgisine göre gerçekleşmektedir!

son olarak; tablodaki benzer kayıtlar silinmemiş ve olduğu gibi bırakılmıştır.kodlamadaki kontrol işlemi de var olan kayıtların sonrası için geçerlidir.bu sebeple,isteğe göre,tablodaki 3. ve 4. kayıtların iptal edilip tablodan çıkarılmasının sağlanması yerinde olacaktır.

Bir de hatırlatmada bulunmak için,lütfen butonların olay yordamlarında katıştırılmış makro yerine olay yordamı eklemek sureti ile kod yazmayı deneyiniz.böylece,hem makro sorunlarından kurtulmuş olursunuz hem de kodlama çalışmalarınızı geliştirerek kendinize bilgi ve beceri yatırımı yapmış olursunuz.bilgilerinize.

İyi çalışmalar,
Saygılar.
.rar DENEME-ATOZ.rar (Dosya Boyutu: 28,49 KB | İndirme Sayısı: 8)
Herkes,kendisinin AR-GE'cisidir...


Konulara eklenen Uygulama içeriğine yönelik Tavsiyeler
Alt Form Denetim Değerlerine ulaşma ve Alt Form Güncelleme
Kapatırken Düzenle (Compact On Close) Seçeneğinin İşaretlenmesi Hakkında
Cevapla
#3
Merhaba atoz112,

Detaylı anlatımınız ve çözümünüz için teşekkür ederim. Ben uygulamayı test ettim. Şu şekilde bir beklentim var.

1-Kullanıcı makineyi oluşturduğu anda formdaki "Kontrol" alanının aynısı "KontrolSorgusu" nda olmamalı.

2- Kullanıcı aynı makineden oluştursa bile kaydet butonuna basıldığında uyarı vermeli ama bir önceki kayda gitmemeli,

3- Kullanıcı aynı makineyi oluşturduğu anda aynı makine verilerini girdiğini uyarı sayesinde anladığında gidip pus fayn veya sistemden birini değiştirmek isteyecektir. değiştirdikten sonra tekrar kontrol edip kayıt yapmalı. değilse uyarı verip kullanıcının makineyi farklılaştırması sağlanmalıdır.

Ayrıca mesajınızdaki katıştırılmış makroları pek kullanmıyorum. Örneğim büyük olduğunda sizlere kısa bir demo dosyası hazırlarken katıştırılmış makro ile düğmeleri oluşturmuş oldum. Normalde sizinde dediğiniz gibi kullanmıyorum onları sağolun uyarı için.

Saygılarımla,
Cevapla
#4
Merhaba,

Sn. Atoz112'nin örneğini incelediğim kadarıyla,

1-) Kontrol alanının aynısı kontrol sorgusunda olmaması için koda
Visual Basic Code
Me.Fayn = ""
eklenebilir.
2-) Bir önceki kayda gitmesi olayı kayıt gezintisinde diğer kayıtları açma olayından mı bahsediyorsunuz anlamadım.
3-) sn atoz112'nin eklediği kodlar uyarı verdirip kaydı geri alıyor, siz kaydın geri alınmasını istemiyorsanız kodları aşağıdakiler ile değiştiriniz.
İptal edilen satırların başına tırnak ekledim, uyarı kodunun altınada yukarı yazdığım kodu ekledim.

Visual Basic Code
'KontrolSorgusu isimli sorguda yer alan MakinaKontrol isimli alanda bulunan değerler,
'formdaki kontrol isimli metin kutusundaki değere göre kontrol edilerek,
'benzer kayıt söz konusu olduğunda uyarı vermesi sağlanmaktadır

'elbette ki,bu işlem SADECE;
'sorgudaki MakinaKontrol alanına ve bu alan için tercih edilen
'üç alan bilgisine göre gerçekleşmektedir!

'son olarak;
'tablodaki benzer kayıtlar silinmemiş ve olduğu gibi bırakılmıştır.
'kodlamadaki kontrol işlemi de var olan kayıtların sonrası için geçerlidir
'bu sebeple,isteğe göre,tablodaki 3. ve 4. kayıtların iptal edilip
'tablodan çıkarılmasının sağlanması yerinde olacaktır.

If Me.kontrol = DLookup("MakinaKontrol", "KontrolSorgusu", "[MakinaID]='" & Me.MakinaID & "'") Then
    'eğer benzer nitelikte kayıt girilmişse,uyarı mesajının belirmesi için
    MsgBox ("Aynı kayıt bilgisi daha önceden girilmiştir" & vbCr & "Lütfen,bilgileri kontrol ediniz."), vbCritical, "UYARI"
    Me.Fayn = ""
    'MsgBox ("Kaydetme işlemi iptal edildi."), vbInformation, "BİLGİ"
    'Me.Refresh
    'DoCmd.GoToRecord , , acLast
Else
    'kayıtlar benzer değilse,tabloya kaydetmesi için
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
End If
"Boş Örnek Eklerim, Yapıp Verirler" demeyin, örneğinizi hazırlayın.
Komplike kod talebiniz var ise İletişim bağlantısından bize ulaşın. 
Cebelleşmezsen Öğrenemezsin. 
Cevapla
#5
Sayın mengene2,

konunuzun 3.mesajında belirttiğiniz hususlara yönelik olarak;öncelikle sayın ozan bey'in önceki örneğe ilişkin yazdıklarına katıldığımı belirtmekle birlikte,aşağıdaki bilgilerin de yeterli olacağı kanısındayım.
1)
Alıntı:...1-Kullanıcı makineyi oluşturduğu anda formdaki "Kontrol" alanının aynısı "KontrolSorgusu" nda olmamalı...
Yeni bir kayıt açılıp makine oluşturulmak istendiğinde,Kontrol Sorgusu isimli sorgu içerisinde ikinci bir benzer kaydın olması zaten engellenmiş durumdadır,çalıştırılıp incelendiğinde.Fakat bu kast ettiğiniz eğer sorgudaki 3. ve 4.kayıtlara yönelik ise,bu durum ile ilgili bir önceki mesajda da zaten aşağıda yazılı olduğu gibi bilgilendirilmesi yapılmıştı;
Alıntı:...son olarak; tablodaki benzer kayıtlar silinmemiş ve olduğu gibi bırakılmıştır.kodlamadaki kontrol işlemi de var olan kayıtların sonrası için geçerlidir.bu sebeple,isteğe göre,tablodaki 3. ve 4. kayıtların iptal edilip tablodan çıkarılmasının sağlanması yerinde olacaktır.
bu sebeple,bu kısımda belirtilen hususun,bu açıklama ile giderildiğini düşünüyorum.

2)
Alıntı:...2- ...uyarı vermeli ama bir önceki kayda gitmemeli,...
KAYDET butonuna basıldığında,
Visual Basic Code
DoCmd.GoToRecord , , acLast
İfadesi ile kayıt geri alma ve tazeleme kodlarından sonra,son kayıt bilgilerinin olduğu kayda gitmesi sağlanmaktadır zaten.Önceki kayda gitme durumu söz konusu değildir.başka bir durum için mi bunu kast ettiniz,anlayamadım.bu sebeple,bu kısımda belirtilen hususun da,bu açıklama ile giderildiğini düşünüyorum.

3)
Alıntı:...3- Kullanıcı aynı makineyi oluşturduğu anda aynı makine verilerini girdiğini uyarı sayesinde anladığında gidip pus fayn veya sistemden birini değiştirmek isteyecektir. değiştirdikten sonra tekrar kontrol edip kayıt yapmalı. değilse uyarı verip kullanıcının makineyi farklılaştırması sağlanmalıdır...
Bu talebiniz için,KAYDET butonunun tıklandığında olay yordamı içerisindeki komut satırlarının buna göre yeniden düzenlenmesi gerekmektedir.

EK’te,bu talebinize yönelik olarak düzenlenmiş hali ile yeni örnek uygulama mevcuttur.inceleyebilirsiniz.

Son olarak,KAYDET butonuna eklenen kodlar neticesinde; KontrolSorgusu isimli sorgu, uygulamanın bu hali ile kullanımına gerek olmadığından dolayı şu an itibarı ile geçersiz kalmıştır.sadece,ileride değer talepleri söz konusu olduğunda kullanılabilecek olabilir düşüncesi için;olduğu gibi bırakılmıştır.bilgilerinize.

İyi çalışmalar,
Saygılar.
.rar DENEME-ATOZ2.rar (Dosya Boyutu: 31,95 KB | İndirme Sayısı: 5)
Herkes,kendisinin AR-GE'cisidir...


Konulara eklenen Uygulama içeriğine yönelik Tavsiyeler
Alt Form Denetim Değerlerine ulaşma ve Alt Form Güncelleme
Kapatırken Düzenle (Compact On Close) Seçeneğinin İşaretlenmesi Hakkında
Cevapla
#6
Merhaba atoz112,

Uygulamada değişiklik yaptım ama olmuyor bir türlü,

Asıl uygulamayı eke ekledim. Şimdi yapmak istediklerimi kısaca sıralamak istiyorum.

1- "MakinaListesi" formundan yeni bir makina oluşturduğumuzda "ModelTipi", "Pus", "Fine" ve "Sistem" alanlarının aynısı olan ikinci bir makina eklenememeli.

2- Bu kontrolü yaparken "MakinaSorgula" sorgusundaki "Bak" alanı ölçüttür.

3- Kullanıcı makineyi oluşturmaya başladığınd ve tanımlamayı tamamlayıp kaydet tışuna bastığında eğer aynı makineden "MakinaSorgula" sorgusunda varsa uyarı vermeli eğer yoksa kaydettiğine dair mesaj vermeli.

4- Kullanıcı şans eseri aynı makineden ikincisinin verilerini girip kaydet tuşuna bastığında çıkan uyarıya "tamam" dediği anda kayıt ekranda kalmalı ve değişiklik yapması beklenmelidir. Değişiklik yaptığında eğer benzersin bir makina tanımladıysa kontrol yapılıp kaydetmesi sağlanmalı. Eğer yinede benzersin bir kayıt yapıldıysa tekrar değiştirmesi için ekran veya kayıt son kayıtta kalmalı.

Yani anlayacağınız kullanıcının hatalı veya aynı makineden ikincisini kaydetmemesi için tüm olasılıkları değerlendirip "MakinaFormuDuzenleme" formunda makine kaydını yapmasını sağlamalıyız. yukarıdaki örneklerde kayıt kandırılabiliyor. Aynı kaydı(makinayı) tekrar kayıt edebiliyor.

Makinanın benzersiz olabilmesi için [ModelTipi] & [Pus] & [Fine] & [Sistem] alanlarının toplamı benzersiz olması gerekli. Burada ModelTipi metin diğerleri sayısal alanlardır.

Umarım derdimi anlatabilmişimdir.

Saygılarımla,
.rar Dosya.rar (Dosya Boyutu: 3,85 MB | İndirme Sayısı: 14)
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da