Skip to main content

AccessTr.neT


Dmax Sorunu (Veri Türü Kısa Metin Olan Tabloda)

Dmax Sorunu (Veri Türü Kısa Metin Olan Tabloda)

Çözüldü #1
Veri tabanında hem sayısal hem metin değeri içeren veri girişi yapmak zorunda olduğum RAPOR_NO isimli kısa metin biçiminde bir veri türü alanı var. 
Form üzerine giriş yapılan en büyük değeri hatırlatması amacıyla forma metin kutusu ekledim ve metin kutusu denetim kaynağına =DMax("[RAPOR_NO]";"ANA TABLO") yazdım.
Bu alan içerisinde kayıt 100 e geldiği zaman Dmax kayıt son en büyük değeri göstermemeye başladı.
Küçükten büyüğe sıralama yapmama rağmen 99 sayısını 100 den büyük olarak kabul ediyor. Sorununda buradan kaynaklı olduğunu düşünüyorum.
Rapor_No Alanına 0001, 0010, 0099, 99-EK, 0100, 101-EK, 1000 şeklinde kayıt girilirse sorun olmayacak biliyorum ancak tek veri girişi yapan ben değilim. Bunun daha pratik ve basit bir yöntemi var mı? (Not: En fazla 2500-EK tarzında veri girişi yapıyoruz.)
Hocalarım bu konuda yardımlarınızı bekliyorum. Şimdiden teşekkür ederim.
.rar PROGRAM SON BOŞ HALİ.rar (Dosya Boyutu: 155,63 KB | İndirme Sayısı: 2)
.rar SORGU SONRASI VE ÖNCESİ.rar (Dosya Boyutu: 242,75 KB | İndirme Sayısı: 2)
.rar YENİ SQL KOD SONRASI.rar (Dosya Boyutu: 134,43 KB | İndirme Sayısı: 4)
Son Düzenleme: 23/01/2018, 12:40, Düzenleyen: Rıfat KARA.
Cevapla
#2
Merhaba,

Visual Basic Code
Public Function ParseText(TextIn As String, X) As Variant
On Error Resume Next
Dim var As Variant
var = Split(TextIn, " ", -1)
ParseText = var(X)
End Function

Üstteki kodu modüle ekle, modülü kaydet,

Yeni sorgu oluştur, sorgunun Sql kaynağına aşağıdaki kodu ekle, sorguyu srg_sonsira adıyla kaydet,

Visual Basic Code
SELECT Val(ParseText([RAPOR_NO],0)) AS SiraNo FROM [ANA TABLO] ORDER BY Val(ParseText([RAPOR_NO],0));

Formdaki SON RAPOR NO metin kutusunun denetim kaynağındaki kodu

Visual Basic Code
=DMax("[SiraNo]";"srg_sonsira")

kodu ile değiştir.
Cevapla
#3
Ozan hocam dediğiniz işlemleri yaptım. Rapor_No'ya  0 eklenmiş gibi olmuyor. Sıralama istediğim gibi gerçekleşmedi malesef.
 SORGU SONRASI VE ÖNCESİ.rar isimli ekte eski hali, sizin dediklerinize göre düzenlenmiş hali ve 0 eklenmiş hali mevcut bi bakarsanız sevinirim.
Cevapla
#4
Merhaba,
(23/01/2018 09:36)Rıfat KARA Adlı Kullanıcıdan Alıntı: Rapor_No'ya  0 eklenmiş gibi olmuyor.

Bu cümleden malesef birşey anlayamadım. Sorgunun Sql kodunu aşağıdaki ile değiştir,
Visual Basic Code
SELECT TOP 1 Val(ParseText([RAPOR_NO],0)) AS SiraNo, [ANA TABLO].RAPOR_NO
FROM [ANA TABLO]
ORDER BY Val(ParseText([RAPOR_NO],0)) DESC;

Metin kutusunun denetim kaynağına da
Visual Basic Code
=DLookUp("[RAPOR_NO]";"SORGU_SON_SIRA")

Kodu ekle.

Çözüm olmaz ise, TEK ÖRNEK üzerinden, tablodaki veriye göre, metin kutusunda HANGİ DEĞERİN görünmesini istediğini yazınız.
Cevapla
#5
Ozan hocam son verdiğiniz kodlar ile veri girişi yapılan son en büyük değer görüntülenebiliyor.
Rapor_No'ya  0 eklenmiş gibi olmuyor derken tablodaki ve formdaki sıralama küçükten büyüğe göre olmuyor demek istedim.
Form üzerinde bir önceki kayıt dediğimde son kayıt no 101 olmasına rağmen önce 99 sonra 101 görünüyor. Aslında bu sıralamayı 1, 2, ....,9,10,...,99,99-EK,100,100-EK,101,102 şeklinde yapabilirseniz tüm sıkıntı otadan kalkacak dmax komutu çalışacak diye düşünüyorum.
Çok teşekkür ederim.
YENİ Sql KOD SONRASI.rar isimli dosyayı ekledim.
Cevapla
#6
Merhaba
Uygulamadaki sorguyu düzenledim. 102 kaydedince son numarayı 102, 102 EK kaydedince son numarayı 102 EK olarak gösteriyor.

İnceleyip olumlu/olumsuz bildirimde bulununuz.
.rar OLAY YERİ KAYIT PROGRAMI-YENİ HALİ SORGU VE SQL SONRASI.rar (Dosya Boyutu: 68,17 KB | İndirme Sayısı: 8)
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da