Skip to main content

AccessTr.neT


Tarih Girişi

Tarih Girişi

#13
AY adını niye sildiğinizi anlamadım, aykod'u silerseniz de hata verecek?

Aşağıdaki kodu kullanırsanız ayları aykoda göre hesaplayıp tabloya veri aktarır.


On Error Resume Next
Dim GTarih, GIlkTarih, GSonTarih As Date
Dim GAyAdi As Integer
Dim GAyNo As String
Dim GHaftaTarih, GHaftaGunu As Integer
Dim GYil As Integer
Dim Kayit As DAO.Recordset

Dim GAylarBirlesik As String

Set Kayit = CurrentDb.OpenRecordset("TabloYillik", dbOpenDynaset)

Do While Not Kayit.EOF
If Kayit![PlanID] = DCount("PlanID", "TabloYillik") Then
Exit Do
End If
Kayit.Edit
GAyAdi = Val(Kayit![aykod])

Select Case GAyAdi
Case 1 To 4
GAyNo = GAyAdi + 8
GYil = Year(Date)
Case 5 To 10
GAyNo = GAyAdi - 4
GYil = DateAdd("y", 1, Year(Date))


End Select

GTarih = "01" & "." & GAyNo & "." & GYil
GHaftaTarih = DateAdd("ww", (Left(Kayit![HAFTA], 1) - 1), GTarih)
GHaftaGunu = Weekday(GHaftaTarih, vbMonday)
GIlkTarih = GHaftaTarih - Weekday(GHaftaTarih) + 9
GSonTarih = GHaftaTarih - Weekday(GHaftaTarih) + 13

If Format(GIlkTarih, "mm") = Format(GSonTarih, "mm") Then
GAylarBirlesik = Format(GIlkTarih, "dd") & " "
Else
GAylarBirlesik = Format(GIlkTarih, "dd") & " " & Format(GIlkTarih, "mmmm")
End If
Kayit![Tarih] = GAylarBirlesik & "-" & Format(GSonTarih, "dd") & " " & Format(GSonTarih, "mmmm")
Kayit![ilkTarih] = GIlkTarih
Kayit![SonTarih] = GSonTarih
Kayit.Update
Kayit.MoveNext

Loop


Liste20.Requery
Kayit.Close

aykodu göre değiştirirseniz yine çalışmaz.
Cevapla
#14
Hocam; aşağıdaki kodu inceler misiniz. Bu şekilde bir çözüm bulmaya çalıştım.
Kod:
Dim X, Y, Z, Guncel, Yeni As Integer
Dim AyTarih, sqlTarih, strTarih As String
Z = DCount("PlanID", "TabloYillik")
For X = 0 To Z

Yeni = (Fix((X - 1) / 4)) * 7
sqlTarih = Metin161 + Yeni
AyTarih = sqlTarih + 2
Y = DCount("AY", "TabloYillik", "AY= '" & Format(AyTarih, "mmmm") & "' and [PlanID]<" & X & "")
Guncel = (Fix(Y / 4)) + 1

strSQl = "SELECT * FROM TabloYillik "
Set rstkayit = New ADODB.Recordset
rstkayit.Open strSQl, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

With rstkayit
.Find "[PlanID]=" & "'" & X & "'"

If Not rstkayit.EOF Then

   strTarih = IIf(Format(sqlTarih - Weekday(sqlTarih) + 2, "mmmm") = Format(sqlTarih - Weekday(sqlTarih) + 6, "mmmm"), (Format(sqlTarih - Weekday(sqlTarih) + 2, "dd") & "-" & Format(sqlTarih - Weekday(sqlTarih) + 6, "dd") & " " & Format(sqlTarih - Weekday(sqlTarih) + 2, "mmmm")), (Format(sqlTarih - Weekday(sqlTarih) + 2, "dd") & " " & Format(sqlTarih - Weekday(sqlTarih) + 2, "mmmm") & "-" & Format(sqlTarih - Weekday(sqlTarih) + 6, "dd") & " " & Format(sqlTarih - Weekday(sqlTarih) + 6, "mmmm")))
.Fields("tarih") = strTarih
.Fields("AY") = Format(AyTarih, "mmmm")
.Fields("aykod") = DLookup("Deger3", "TabloDeger", "Deger1= '" & Format(AyTarih, "mmmm") & "'")
If Y <= 4 Then

.Fields("HAFTA") = "1.Hafta"
ElseIf Y > 4 And Y <= 8 Then
.Fields("HAFTA") = "2.Hafta"
ElseIf Y > 8 And Y <= 12 Then
.Fields("HAFTA") = "3.Hafta"
ElseIf Y > 12 And Y <= 16 Then
.Fields("HAFTA") = "4.Hafta"
ElseIf Y > 16 And Y <= 20 Then
.Fields("HAFTA") = "5.Hafta"
End If

Liste20.Requery

.Update
End If
End With
Yeni = Yeni + 7
Next X

Son Düzenleme: 04/09/2015, 19:06, Düzenleyen: idrisy.
Cevapla
#15
ozanakkaya hocam; yardımlarınız için çok teşekkür ederim. Ellerinize sağlık. Sayenizde sorunum çözüldü.
Çalışmanın son halini ekledim. Öneriniz olursa onu da dikkate alırım.
.rar Plan.rar (Dosya Boyutu: 67,66 KB | İndirme Sayısı: 4)
Cevapla
#16
Benim yardımımla çözülmüş olamaz, eklediğiniz son örnekteki kod bana ait değil, farklı bir kod kullanmışsınız.

Private Sub Komut160_Click()

On Error Resume Next
Dim GTarih, GIlkTarih, GSonTarih As Date
Dim GAyNo As String
Dim GHaftaTarih, GHaftaGunu, GAyAdi As Integer
Dim GYil As Integer
Dim Kayit As DAO.Recordset

Dim GAylarBirlesik As String

Set Kayit = CurrentDb.OpenRecordset("TabloYillik", dbOpenDynaset)

Do While Not Kayit.EOF
       If Kayit![PlanID] = DCount("PlanID", "TabloYillik") Then
           Exit Do
       End If
           Kayit.Edit
           GAyAdi = Val(Kayit![aykod])
       
       Select Case GAyAdi
        Case 1 To 4
           GAyNo = GAyAdi + 8
           GYil = Year(Date)
       Case 5 To 10
           GAyNo = GAyAdi - 4
           GYil = DateAdd("y", 1, Year(Date))
       
       
       End Select
       
       GTarih = "01" & "." & GAyNo & "." & GYil
       GHaftaTarih = DateAdd("ww", (Left(Kayit![HAFTA], 1) - 1), GTarih)
       GHaftaGunu = Weekday(GHaftaTarih, vbMonday)
       GIlkTarih = GHaftaTarih - Weekday(GHaftaTarih) + 9
       GSonTarih = GHaftaTarih - Weekday(GHaftaTarih) + 13
       
           If Format(GIlkTarih, "mm") = Format(GSonTarih, "mm") Then
               GAylarBirlesik = Format(GIlkTarih, "dd") & " "
           Else
               GAylarBirlesik = Format(GIlkTarih, "dd") & " " & Format(GIlkTarih, "mmmm")
           End If
       Kayit![Tarih] = GAylarBirlesik & "-" & Format(GSonTarih, "dd") & " " & Format(GSonTarih, "mmmm")
       Kayit![ilkTarih] = GIlkTarih
       Kayit![SonTarih] = GSonTarih
       Kayit![AY] = MonthName(GAyNo)
       Kayit.Update
       Kayit.MoveNext
       
   Loop
   

Liste20.Requery
Kayit.Close
End Sub
Cevapla
#17
hocam; evet sizin yazdığınız kod değil ama sayenizde farklı şeyler yapabileceğimi fark ettim.  Ama hala sıkıntım var. Birincil anahtarla ilgili. Şuan planId 1 den başlıyor ve sıralı olarak gidiyor. Sonra satır sildim veya başka bir şey oldu PlanID 150 den başlarsa sorun çıkacağını düşünüyorum. Böyle bir sorun çıkmaması için kodu nasıl düzenlemeliyim?
Cevapla
#18
Sayın idrisy, önce tarih dediniz, tarih ile ilgili kodu yazdım. Sonra ay silindiğinde hata veriyor dediniz ay ile ilgili kodu yazdım. Şimdide farklı bir olaydan bahsediyorsunuz.

Konu başlığındaki sorunuz çözümlendi ise konuyu taşıyalım.
Siz yeni sorunuz için yeni konu açınız.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task