Otomatik Sayı Verme

1 2
11/02/2009, 17:13

nihatkr

Örnek içerisinde olması gereken işlemi istedim.

Kısaca;

1 iş var 10-12 taşeron var. Her taşeron aylık olarak hakediş düzenlemektedir.

Her taşeronun hakedişini otomatik sıra nosu ile yapmasını istiyorum.

İşin konusuna ve taşeronun adına göre hakediş nosunu bir öncekinden görüp bir sonraki numarayı ekleyecek.

Teşekkürler ilgilenlere.
11/02/2009, 19:09

esrefigit

iş bir tanemi yani bir kaç değişik iş varmı
iş sadece bir adetse

bu bir kaç değişik olaydan oluştuğu için dmax veya Dlookup ile halledilmez sanırım bunu sorgulu bir dao yada ado ile çözülebilir

Set rst = CurrentDb.OpenRecordset("SELECT * FROM taseronhakedisi WHERE isinkonusu Like '" & Me.isinkonusu & "*' And taseronadi Like '" & Me.isinkonusu & "*'
)
if rst.RecordCount=0 then
me.hakedisno=1
else
rst.Movelast
me.hakedisno=rst!hakedisno+1
end if


bu şekilde işin konusu ve taşeron adına göre tabloyu sorgular ve kayıtları sayar kayıt yoksa 1 yazar eğer kayıt varsa en son kayda gider onun hakediş nosunu alır üzerine +1 ekler ve metin kutusuna yazar

buna benzer örneği benim eklediğim
kod deposunda bulabilirsin
11/02/2009, 19:12

nihatkr

iş bir adet değil değişken. imaltın durumuna göre 12 ile 15 arasında değişiyor işin konusu
11/02/2009, 19:20

esrefigit

demek istediğim

yani a işi b işi işleride kendi aralarında sıralayacakmısın

yani mehmet emminin a işini 3 defa yapmış b işini 4 defa yapmış bunlarıda kendi aralarında sıralayacaksan kritere bir And daha ekleyerek bir kriter daha eklersin bu şeklide sadece işin konusu ve işin taşeron adına göre süzüp sıra no veriyor lakin bana sorasan birde ödendi diye bir alan ekle böylece sadece ödeme yapılmamış olanları sıralasın işin daha kolay olur
11/02/2009, 19:24

nihatkr

yok öyle bir sıralama yapmayacağım. ödendi ilede işim yok. bana lazım olan sadece otomatik sıra no versın.

a kişisi B imalatında aa işini yapmış 3. hakediş
a kişisi B İmalatında ab işini yapmış 2. hakediş
a kişisi A imalatında aa işini yapmış 7. hakediş
a kişisi A İmalatında ab işini yapmış 12. hakediş

bu liste uzayıp gidiyor c,d,e,f,g kişileri diyerek

bunlara bır sonrakınde 1 eklesin yeterli. ödeme işi ayrı.
12/02/2009, 16:00

esrefigit

senin istediğini yapan kod bu
Private Sub taseronfirma_Exit(Cancel As Integer)
Dim rst As Recordset
Dim sd As String
sd = "SELECT * FROM taseronhakedisi WHERE isinkonusu Like '" & Me.isinkonusu & "*' And taseronfirma Like '" & Me.taseronfirma & "*'" & ""
Set rst = CurrentDb.OpenRecordset(sd)
If rst.RecordCount = 0 Then
Me.hakedisno = 1
Else
rst.MoveLast
Me.hakedisno = rst!hakedisno + 1
End If
rst.Close
Set rst = Nothing
End Sub

yalnız alan isimlerini hem tabloda hemde formda aynen yazdığı gibi değiştir ayrıca tablo adınıda taseronhakedisi bu şekilde değiştir birde unutma asla türkçe karakterler kullanma alan adlarında ve aralarında boşlukta bırakma illada bırakacam karışıyor diyorsan ali_gel diye altçizgi ile yap boşlukları
1 2