Skip to main content

AccessTr.neT


Tablo Alanlarını Döngü İçinde Kullanmak

Tablo Alanlarını Döngü İçinde Kullanmak

Çözüldü #1
Hayırlı ramazanlar şöyle bir kod ile tablonun eski ve yeni değerleri arasında karşılaştırma yapıp listelemek istiyoruz
Kod
Private Sub Komut3_Click()
    Dim strSQL, strSQL_perad, strSQL_persoy As String
    strSQL_perad = "SELECT" & _
        " itLastPersonel.SICNO" & "," & _
        " 'PERAD' AS AlanAdi" & "," & _
        " itLastPersonel.PERAD" & "," & _
        " itNewPersonel.PERAD" & _
        " FROM itLastPersonel" & _
        " INNER JOIN itNewPersonel ON itLastPersonel.SICNO = itNewPersonel.SICNO" & _
        " WHERE (((itLastPersonel.PERAD)<>[itNewPersonel].[PERAD])) "

        
    strSQL_persoy = "SELECT" & _
        " itLastPersonel.SICNO" & "," & _
        " 'PERSOY' AS AlanAdi" & "," & _
        " itLastPersonel.PERSOY" & "," & _
        " itNewPersonel.PERSOY" & _
        " FROM itLastPersonel" & _
        " INNER JOIN itNewPersonel ON itLastPersonel.SICNO = itNewPersonel.SICNO" & _
        " WHERE (((itLastPersonel.PERSOY)<>[itNewPersonel].[PERSOY]));"
        
    strSQL = strSQL_perad & " UNION ALL " & strSQL_persoy
    
    Me.Liste0.RowSource = strSQL
    Me.Liste0.Requery
End Sub
ilk Sql de PERAD ikincide "PERSOY" alanlarının eski ve yeni değerleri karşılaştırılıp farklı olanlar listeleniyor
bu sadece iki alan için böyle Oysa ki tabloda en az 30 alan var 
herbir alanın değişip değişmediğini kontrol edip listelemek lazım
çok farklı yolları olabilir ama ben tablo alanlarını döngü içerinde Sql satırına eklemek istiyorum
nasıl yapmam lazım

Kod
Dim l As Integer

For l = 0 To CurrentDb.TableDefs("tbl_Name").Fields.Count - 1
  Debug.Print CurrentDb.TableDefs("tbl_Name").Fields(l).name
Next l
bunu nasıl kullanabilirim
@benbendedeilem
Son Düzenleme: 24/04/2020, 14:23, Düzenleyen: accessman.
Cevapla
#2
sql server kullanma olanağın varsa except komutu işini döngüsüz halledebilirsin.
Cevapla
#3
sqlite de kullanılabiliniyormuş.
https://www.sqlitetutorial.net/sqlite-except/
Son Düzenleme: 24/04/2020, 15:54, Düzenleyen: alicimri.
Cevapla
#4
Her 2 tablonunda tum alan adlari ve alan ozellikleri ayniysa
Once recordset ile ile ilk tablo baglanir

Dim fld As Field
For each fld in rs.fileds
.... fld.name
Next fld
Bu kod ile tüm alanların adı alinabilr, gerisi bu alan adları sorguda kullanmak
Cevapla
#5
teşekkürler
bir türlü şu değişkenleri Sql içine yazamadım
Kod
lastTableName = "itLastPersonel"
newTableName = "itNewPersonel"
lastColumnName = "PERSOY"
newColumnName = "PERSOY"


SQL = SQL & " WHERE itLastPersonel.PERSOY <> itNewPersonel.PERSOY;"
@benbendedeilem
Son Düzenleme: 24/04/2020, 17:20, Düzenleyen: accessman.
Cevapla
#6
Visual Basic Code
SQL = SQL & " WHERE itLastPersonel.[" & fld.name & "]<> itNewPersonel.[" & fld.name & "];"
Şeklinde deneyebilirsiniz.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da