Tablodaki Kişileri Aynı Tabloya Eklemek Veya Kopyalamak

1 2 3
02/02/2020, 19:56

fkilic76

feraz üstat;
gelen kod ile ay_id si 1 olan kayıtlar ay_id si 2 oldu o kadar.
yapmak istediğim :ay_id 1 olanlar kalacak ,kaldığı gibi ay_id 2 olacak şekilde yeni kayıt olarak tekrar eklenecek.
02/02/2020, 20:07

feraz

Dosyada sonucun nasıl çıkacağını gösterirmisiniz.Tabloyu kopyalayıp yapabilirsiniz.

Çünkü tam anlaşılmıyor.
02/02/2020, 20:22

fkilic76

[img]‪C:\Users\Feridun\Pictures\ayaktarma.PNG[/img]
resim eklendimi bilemedim ama olay sonunda hesap  tablosu alttaki gibi olmalı

ay_id      kişi_id     isim    soyisim     ödemekalemleri(aidat,su,elek,gaz,vb)
1              1           a
1              2           b
1              3           c
1              4           d
2              1           a
2              2           b
2              3           c
2              4           d
02/02/2020, 20:34

feraz

Tamam anladım.
02/02/2020, 21:23

fkilic76

(02/02/2020, 16:01)mehmetdemiral yazdı: Tablo yapınız yanlış. Aylar için sadece ay id ve adını bulunduran bir tablo yapın. Ay içindeki hareketler için de ayrı bir tablo yapın yıl ve ay bilgisi olsun. Bu arada o ay için kaydedilecek kişiler de bu tabloda olsun. Sonra da bir güncelleştirme sorgusu yapın, kriter olarak açılan kutu verilerinize bağlı bir güncelleme sorgusuyla, aynı kişilere ait bilgilerin sadece ay id değerini 1 iken 2 yapıp tabloya eklesin. Yapmaya çalışın, başaramazsanız yardımcı oluruz.
Üstadım kastettiğiniz sorguları yapmaya çalıştım.ama aktarma kodlarını bilmiyorum..
02/02/2020, 22:41

feraz

Kodları tek tek kopyalayınız.

Alttaki işaretli olanlarda seçili olmalı.


Option Compare Database

Dim Sql As String
Dim rs As New ADODB.Recordset
Dim cn As New ADODB.Connection
Dim rs1 As New ADODB.Recordset

Sub loopTable(alan As Byte)

Dim k As Integer

    With rs
    If Not .BOF And Not .EOF Then
        For i = 1 To .RecordCount
          .AddNew
            .Fields(1) = rs1.Fields(1)
            .Fields(2) = alan
            For k = 3 To rs.Fields.Count - 1
              .Fields(k) = rs1.Fields(k)
            Next k
          rs.Update
          rs.MoveNext
          rs1.MoveNext
      Next i
 
    End If
    End With

End Sub

Sub baglan()
  With rs
        If .State = adStateOpen Then .Close
          .CursorLocation = adUseClient
          .CursorType = adOpenKeyset
          .LockType = adLockOptimistic
       
        .Open Sql, cn
    End With

    With rs1
        If .State = adStateOpen Then .Close
          .CursorLocation = adUseClient
          .CursorType = adOpenKeyset
          .LockType = adLockOptimistic
        .Open Sql, cn
    End With
End Sub

Private Sub Aktar_Click()
 
  If Me.cmbay1.Value = "" Or IsNull(cmbay1.Value) Then GoTo son
    If cmbay2.Value = "" Or IsNull(cmbay2.Value) Then GoTo son
 
  Sql = "SELECT * FROM hesap where ay_id= " & cmbay1.Column(0) & ""
  Set cn = CurrentProject.Connection
   
  Call baglan
  Call loopTable(cmbay2.Column(0))

 
  Sql = "SELECT * FROM hesap where ay_id= " & cmbay2.Column(0) & ""
  rs.Close
  rs.Open Sql, cn
 
    Liste15.ColumnCount = rs.Fields.Count ' rs.Fields.Count
    Liste15.ColumnWidths = "1CM;1CM;1CM;1CM;1CM;1CM;1CM;1CM;1CM;1CM;1CM;1CM;1CM;1CM;1CM;1CM;1CM"
    Liste15.ColumnHeads = True

    Set Liste15.Recordset = rs
    rs.Close
    cn.Close
    Set rs = Nothing
    Set cn = Nothing

    Set rs1 = Nothing
    Set cn1 = Nothing

  Exit Sub
   
son:
  MsgBox "Combolar bos olamaz", vbCritical
End Sub
1 2 3