• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Ado bağlantısı Max yazım hatası

Katılım
6 Temmuz 2008
Mesajlar
1,875
Excel Vers. ve Dili
OFFİCE 2010- TÜRKÇE
Kod:
 Sorgu = "SELECT max(FaturaTarihi),FaturaNo FROM Hareketler
Hayırlı akşamlar
Burada nerede hata yapıyorum ki? Hem fatura tarihindeki en büyük değeri bulup yanındakş fatura no alacağım
 
En büyük fatura tarihi birden fazla ise ne olacak?
 
Evet haklısınız onun için iki sütundan da max değeri almak istedim fakat doğru sonuç alamadım.
Amacım;
Accesdeki datada
FaturaTarihi sütunundaki son tarihe denk gelen
FaturaNo sütunundaki en büyük değere ulaşmak.

Sonuç olarak fatura numarasını otomotik olarak 1no yukarı alıp textboxa alacağım.
 
Son olarak, silsileye uymayan kullanıcı son kullanılan fatura no'ya max tarihten küçük bir tarih de vermiş olabilir. Bu durumda ne yapacaksınız?
 
Hayır oraya faturanın işlendiği zaman (Now) gelecek.
Bu durum seri değiştiğinde doğru noyu cekmek için faydalı olacak. Diğer durumda sadece faturano ile gittiğimde seri değiştiğinde sağlıklı bir numara çekemeyeceğimi düşündüm.
 
Şöyle bir şey işinizi görür sanırım...
Fatura no alanının numerik olduğunu yani "A", "B" gibi seri adı yazılmadığını varsayıyorum.

PHP:
select top 1 faturano + 1
from hareketler
where faturatarihi = max(faturatarihi) and faturano = max(faturano)
order by faturano desc
 
Çok teşekkür ederim. Akşam deneyeceğim . Evdeki pcde kaldı program. Ama kurgu güzel.
Where den sonra max kullanmamıştım hiç.
Top 1 sanırım Desc den aldığı ilk veriyi alıyor?
 
Tekrar düşündüğümde, aslında "top 1" ve "order by.." kısımlarının gereksiz olduğunu farkettim. Onları silebilirsiniz...
 
O halde gruplayarak deneyelim...

PHP:
select faturano + 1
from hareketler
group by faturano
having faturatarihi = max(faturatarihi) and faturano = max(faturano)
 
Yine aynı hata meydana geldi.
Farklı bir kod ile yaptım gibi. denemeler yaptım hatalı gelmedi;
Kod:
 Sub fatnoçek()

  Set con = CreateObject("Adodb.Connection")
    Set rs = CreateObject("Adodb.RecordSet")
 
On Error Resume Next
 con.Open "provider=microsoft.ace.oledb.12.0;data source=" & ThisWorkbook.Path & "\CariKayıtlar\Hareketler.mdb"
 
 
 Dim dtMaxDate As Date
 
    sorgu = "Select FaturaNo, FaturaTarihi From hareketler"
  
  rs.Open sorgu, con, 1, 3
    If Not (rs.BOF And rs.EOF) Then
        dtMaxDate = rs.Fields("FaturaTarihi")
        rs.MoveNext
        Do While Not rs.EOF
            If rs.Fields("FaturaTarihi") > dtMaxDate Then
                dtMaxDate = rs.Fields("FaturaTarihi")
                fatno = rs.Fields("FaturaNo")
            End If
            rs.MoveNext
        Loop
    
     ' If fatno Is Null Then fatno = 0
      FaturaEkranı.faturano = Format(fatno + 1, "000000")
    End If
    rs.Close
    Set rs = Nothing

 End Sub
 
Geri
Üst