son endeksin bir sonraki kayıtta,ilkendeks olarak görünmesi

26/10/2015, 21:48

simendifer

https://accesstr.net/konu-musterek-dogal...grami.html
likteki programla her aya aynı kişilere ait doğal gaz kullanım bedelini tespit etmek için yaptığım programı sizlerle paylaşmıştım 
şimdi bu programa ocak ayının son endeks değerinin, bir sonraki şubat ayı kayıtlarını girerken ilk endeks olarak metin kutusuna yazdırabilir miyiz  
ekteki resimle açıkladım
Bu arada araştırdım SONDEGER  diye bir örnek buldum bu örnek üzerinden Tablo11  üzerine adapte ettim kayıt formundaki gibi olmadı sonendeks e kayıt girince ilk endeks i siliyor acaba nerede hata yapıyorum yardımlarınızı talep ediyorum  
27/10/2015, 15:24

atoz112

Sayın simendifer,

Öncelikle,tavsiye olarak görülmesi ve yorumlanması temennisi ile şu üç hususu belirtmekte fayda var kanısındayım.

1) Lütfen;tablo ve alan adlarında,formlarda,sorgu ve raporlarda isimlendirmelerde bulunurken;Türkçe karakterler kullanmayınız.

Örnek olarak,tablolarınızda ı harfi kullanımınız mevcut.bunları i olarak değiştirmeniz halinde sorunlara maruz kalmamış olursunuz,bu nedenden ötürü olası bir durumda.

2) Yine tablolarınızda alan adı belirlerken, % (Yüzde) ifadesini başlangıç karakter olarak değil,tanım bitiminde kullanmanız daha yerinde olur.

ÖRNEK:
%30dagitim yerine dagitim% veya dagitim_yuzde30

şeklinde alan adını kullanıp form üzerindeki ilgili alanın metin denetim kutusunun etiketine istediğiniz gibi %30dagitim şeklinde ifade kullanabilirsiniz.çünkü;etiketlere istediğiniz ifadeleri yazabilirsiniz fakat alan adlarında bu hususa dikkat ederek yazmak daha faydalı bir davranış olacaktır.

3) Kod sayfanızda,ilk başlangıç satırında; Option Compare Database ifadesinin yerine,Option Explicit ifadesinin yer almasına özen gösteriniz.
 
Fakat,eğer kodlarınız genelinde;ilk satırında SADECE Option Compare Database ifadesi yazıyorsa veya Olay Yordamları içerisinde On Error Resume Next ifadesi yer alıyorsa;yukarıda yazılı maddelerdeki hataları görme imkanı vermeksizin uygulamanın işleyişte bulunmasına devam eder.
 
Bu nedenle,ileride çeşitli nitelikte sorunlara veya hatalara maruz kalmamak adına,her zaman uygulamalarınızdaki kod sayfasında ilk satırda Option Explicit ifadesinin yer almasına önem vererek özen göstermeye gayret ediniz. OptionExplicit ifadesinin gerekliliğini belirtmek için,aşağıdaki tanımlamalar yeterli olacaktır kanısındayım.
 
Option Compare Database (seçenek karşılaştırma);
 ikili değer,metin değeri,dize karşılaştırmalarında tanımlı değerlerin karşılaştırmasını yapmak için kullanılır.veritabanının sıralama kodlaması tarafından belirlenir.
 
Option Explicit (Belirgin seçenek); 
uygulamada kullanılmakta olan değişken isimlerinde bir hata söz konusu olduğunda tanımsız bir değişken kullanıldığına dair bu hatayı bildirerek,değişken isimlerinin Dim, Private, Public, ReDim veya Statik deyimi ile doğru tanımlanmasına bir zorunluluk getirir. Böylece,uygulamanın bu hatalardan arınarak sağlıklı çalışmasına imkan sağlar.
 
Option Explicit ifadesinin her uygulama hazırlayacağınız zaman,kod sayfasında sürekli otomatik olarak yer almasını sağlamak için de,kodlama sayfasında iken,üst menüden TOOLS - OPTIONS - EDITOR sekmesindeki REQUIRE VARIABLE DECLERATION satırını işaretleyip Tamam diyerek çıkınız.

son olarak,EK'te;
bahsettiğiniz talebinize yönelik olarak hazırlanmış örnek uygulama mevcuttur.inceleyebilirsiniz.bilginize...iyi çalışmalar,saygılar.
27/10/2015, 17:50

simendifer

hocam elinize sağlık tam istediğim gibi son endeks bir sonraki ayın ilk endeksinde görüyorum
alt tabloda blok açılır kutunun değiştiğinde olay yordamı ile çözmüşsünüz sorunu benzer konularda arkadaşlara örnek olması açısından ekliyorum

konu çözüme kavuşmuştur

Private Sub Blok_Change()
If IsNull(DLast("[sonendeks]", "Tablo1", "ayıd=" & Forms![Tablo11]![Tablo1 Sorgu alt formu].Form![ayıd] - 1 & " and Blok='" & Forms![Tablo11]![Tablo1 Sorgu alt formu].Form![Blok] & "'")) Or DLast("[sonendeks]", "Tablo1", "ayıd=" & Forms![Tablo11]![Tablo1 Sorgu alt formu].Form![ayıd] - 1 & " and Blok='" & Forms![Tablo11]![Tablo1 Sorgu alt formu].Form![Blok] & "'") = "" Then
Me.ilkendeks = 0
Else
Me.ilkendeks = DLast("[sonendeks]", "Tablo1", "ayıd=" & Forms![Tablo11]![Tablo1 Sorgu alt formu].Form![ayıd] - 1 & " and Blok='" & Forms![Tablo11]![Tablo1 Sorgu alt formu].Form![Blok] & "'")
End If
End Sub