Skip to main content

AccessTr.neT


A Sayfasında Olan Veri B Sayfasında Varsa A Sayfasındaki İlgili Satırı Silme

A Sayfasında Olan Veri B Sayfasında Varsa A Sayfasındaki İlgili Satırı Silme

#49
çerçevelerin oluşmasını engellemek için öncelikle çerçeve istemediğiniz sayfalarda yer alan aşağıdaki kodu silmelisiniz, gerekli kod Sayfa Hazırla butonuna eklenmiştir
Private Sub Worksheet_Change(ByVal Target As Range)
''''''''''''''''''Satırlara Tablo Yapmak''''''''''''''''''''''''''''''''''''''''''
Range("A2:AJ10000").Borders.LineStyle = 0
Range("A2:AJ" & [B10000].End(3).Row).Borders.LineStyle = 1
Range("A2:AJ" & [B10000].End(3).Row).Borders.LineStyle = xlContinuous
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
End Sub
Sayfa Hazırla butonunun kodu
Dim Sql As String
Dim SyfAdi As String
Dim ADO_RS As ADODB.Recordset
Dim ADO_CN As ADODB.Connection
Dim WS As Worksheet

SyfAdi = Me.ComboBox1.Value
Set WS = ThisWorkbook.Sheets(SyfAdi)
SonStr = WS.Cells(WS.Rows.Count, 1).End(xlUp).Row - 2

WS.Range("A8:AJ" & SonStr).Select
Selection.EntireRow.Delete
Application.ScreenUpdating = False

SQL = "SELECT  cdbl([VERi$].[F2]), [VERi$].[F5], [VERi$].[F3], [VERi$].[F4],1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 " & _
      "FROM [KONTROL$B2:C] INNER JOIN ((([VERi$] " & _
                          "LEFT JOIN [KONTROL$E2:E] ON [VERi$].[F6] = [KONTROL$E2:E].[F1]) " & _
                          "LEFT JOIN [KONTROL$F2:F] ON [VERi$].[F5] = [KONTROL$F2:F].[F1]) " & _
                          "LEFT JOIN [KONTROL$G2:G] ON [VERi$].[F2] = [KONTROL$G2:G].[F1]) ON [KONTROL$B2:C].[F2] = [VERi$].[F5] " & _
      "WHERE ([VERi$].[F1] Is Not Null) and (([KONTROL$E2:E].[F1]) Is Null) and (([KONTROL$F2:F].[F1]) Is Null) and (([KONTROL$G2:G].[F1]) Is Null) " & _
      "ORDER BY Clng([KONTROL$B2:C].[F1]), cdbl([VERi$].[F2])"


Set ADO_RS = New ADODB.Recordset
Set ADO_CN = New ADODB.Connection

ADO_CN.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;data source=" & ThisWorkbook.FullName & _
                          ";extended properties=""excel 12.0;hdr=no;IMEX=1"""
ADO_CN.Open
ADO_RS.Open SQL, ADO_CN, 3, 1

WS.Rows("8:" & 5 + ADO_RS.RecordCount + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow      'xlFormatFromLeftOrAbove
'  Eğer Hiç Kayıt Yoksa
If ADO_RS.RecordCount = 0 Then
    MsgBox "Kayıt Bulunamadı.", vbCritical, "Veri Yok"
    GoTo skipfile:
End If
ADO_RS.MoveLast
ADO_RS.MoveFirst
ADO_RS.MoveNext

WS.Range("B7").CopyFromRecordset ADO_RS
SonStr = 7 + ADO_RS.RecordCount - 2
       
        WS.Range("A7") = 1
        WS.Range(WS.Cells(8, "A"), WS.Cells(SonStr, "A")).Formula = "=A7+1"
        WS.Range(WS.Cells(7, "Aj"), WS.Cells(SonStr, "Aj")).Formula = "=sum(F7:Ai7)"
        WS.Range(WS.Cells(7, "Aj"), WS.Cells(SonStr, "Aj")).Interior.color = WS.Range("AJ7").Interior.color
        WS.Range("A7").Select
''''''''''''''''''Satırlara Tablo Yapmak''''''''''''''''''''''''''''''''''''''''''
WS.Range("A1:AJ" & SonStr + 20).Borders.LineStyle = 0
WS.Range("A5:AJ" & SonStr).Borders.LineStyle = 1
WS.Range("A5:AJ" & SonStr).Borders.LineStyle = xlContinuous
WS.Range("A7:AJ" & SonStr).HorizontalAlignment = xlCenter

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
skipfile:
ADO_RS.Close
ADO_CN.Close
Set ADO_RS = Nothing
Set ADO_CN = Nothing
Set WS = Nothing
    Application.ScreenUpdating = True

Bu arada mümkünse konu açarken eklediğiniz Yeşil kalkan simgesini kullanmayın, o simge cevaplanmış mesajların sembolü olduğunda görünce cevaplanmış sanıp konuyu atlayabiliyor insan. En azından bir kaç kez ben cevaplanmış sanıp geçtim)
.rar Puantaj_hy6.rar (Dosya Boyutu: 841,06 KB | İndirme Sayısı: 7)
Cevapla
#50
Sayın berduş Hocam Sayın Zafer Hocam iki farklı örnek aklımı karıştırdı durdu.
Şablon olarak benim attığım dosya üzerinden ve Zafer Hocamın kodları bana daha bildik geldiği için bu yönde devam etmek daha mantıklı geldi
Bundan sonraki tüm işlemlerin eklediğim form üzeriden gitmesi daha mantıklı olur
Ekteki belge şablon olarak oturdu ama kodlarda aşağıdaki hatalar mevcut


Ocak adlı sayfada yapılan kontrolde
1. Rütbe sıralaması yapmıyor.
2. Otomotik sıra numarası vermiyor
3.Sayfa yapısını sayfaya sığacak şekilde ayarladim
Yeşil ve mavi kısımları olması gerektiği gibi boyutlandirdim
Mavi 30 yazan kısımlar personel varsa gelsin personel yoksa gelmesin  b sütününda 6 haneli sicil yazarsa F:AI aralığında 0 yazarsa arka dolgu açık mavi 1 yazarsa dolgu olmasa

4. Üsteki yeşil kısıma tıklayınca hata mesajı veriyor  SN SCİL ADI yazan kısım
5. En önemlisi kontrol sayfası kosul1 koşul 2 koşul 3 e elle veri girdiğimde hata mesajı veriyor ve sayfayı hazırlamıyor ama sizin hazırladığınız dosyaya dokunmazsam sayfayı hazırla diyince çalışıyor. Veri giriş şeklimde hata mı var elle sicil yazıyorum sayfayı hazırla diyorum hazırlamıyor
6. Hocam makul satırdan sonra örnekte eklediğim imza bloku gelse time news roman 12 punto ortalanmış şekilde

(20/11/2020, 21:20)berduş yazdı: çerçevelerin oluşmasını engellemek için öncelikle çerçeve istemediğiniz sayfalarda yer alan aşağıdaki kodu silmelisiniz, gerekli kod Sayfa Hazırla butonuna eklenmiştir
Private Sub Worksheet_Change(ByVal Target As Range)
''''''''''''''''''Satırlara Tablo Yapmak''''''''''''''''''''''''''''''''''''''''''
Range("A2:AJ10000").Borders.LineStyle = 0
Range("A2:AJ" & [B10000].End(3).Row).Borders.LineStyle = 1
Range("A2:AJ" & [B10000].End(3).Row).Borders.LineStyle = xlContinuous
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
End Sub
Sayfa Hazırla butonunun kodu
Dim Sql As String
Dim SyfAdi As String
Dim ADO_RS As ADODB.Recordset
Dim ADO_CN As ADODB.Connection
Dim WS As Worksheet

SyfAdi = Me.ComboBox1.Value
Set WS = ThisWorkbook.Sheets(SyfAdi)
SonStr = WS.Cells(WS.Rows.Count, 1).End(xlUp).Row - 2

WS.Range("A8:AJ" & SonStr).Select
Selection.EntireRow.Delete
Application.ScreenUpdating = False

SQL = "SELECT  cdbl([VERi$].[F2]), [VERi$].[F5], [VERi$].[F3], [VERi$].[F4],1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 " & _
      "FROM [KONTROL$B2:C] INNER JOIN ((([VERi$] " & _
                          "LEFT JOIN [KONTROL$E2:E] ON [VERi$].[F6] = [KONTROL$E2:E].[F1]) " & _
                          "LEFT JOIN [KONTROL$F2:F] ON [VERi$].[F5] = [KONTROL$F2:F].[F1]) " & _
                          "LEFT JOIN [KONTROL$G2:G] ON [VERi$].[F2] = [KONTROL$G2:G].[F1]) ON [KONTROL$B2:C].[F2] = [VERi$].[F5] " & _
      "WHERE ([VERi$].[F1] Is Not Null) and (([KONTROL$E2:E].[F1]) Is Null) and (([KONTROL$F2:F].[F1]) Is Null) and (([KONTROL$G2:G].[F1]) Is Null) " & _
      "ORDER BY Clng([KONTROL$B2:C].[F1]), cdbl([VERi$].[F2])"


Set ADO_RS = New ADODB.Recordset
Set ADO_CN = New ADODB.Connection

ADO_CN.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;data source=" & ThisWorkbook.FullName & _
                          ";extended properties=""excel 12.0;hdr=no;IMEX=1"""
ADO_CN.Open
ADO_RS.Open SQL, ADO_CN, 3, 1

WS.Rows("8:" & 5 + ADO_RS.RecordCount + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow      'xlFormatFromLeftOrAbove
'  Eğer Hiç Kayıt Yoksa
If ADO_RS.RecordCount = 0 Then
    MsgBox "Kayıt Bulunamadı.", vbCritical, "Veri Yok"
    GoTo skipfile:
End If
ADO_RS.MoveLast
ADO_RS.MoveFirst
ADO_RS.MoveNext

WS.Range("B7").CopyFromRecordset ADO_RS
SonStr = 7 + ADO_RS.RecordCount - 2
       
        WS.Range("A7") = 1
        WS.Range(WS.Cells(8, "A"), WS.Cells(SonStr, "A")).Formula = "=A7+1"
        WS.Range(WS.Cells(7, "Aj"), WS.Cells(SonStr, "Aj")).Formula = "=sum(F7:Ai7)"
        WS.Range(WS.Cells(7, "Aj"), WS.Cells(SonStr, "Aj")).Interior.color = WS.Range("AJ7").Interior.color
        WS.Range("A7").Select
''''''''''''''''''Satırlara Tablo Yapmak''''''''''''''''''''''''''''''''''''''''''
WS.Range("A1:AJ" & SonStr + 20).Borders.LineStyle = 0
WS.Range("A5:AJ" & SonStr).Borders.LineStyle = 1
WS.Range("A5:AJ" & SonStr).Borders.LineStyle = xlContinuous
WS.Range("A7:AJ" & SonStr).HorizontalAlignment = xlCenter

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
skipfile:
ADO_RS.Close
ADO_CN.Close
Set ADO_RS = Nothing
Set ADO_CN = Nothing
Set WS = Nothing
    Application.ScreenUpdating = True

Bu arada mümkünse konu açarken eklediğiniz Yeşil kalkan simgesini kullanmayın, o simge cevaplanmış mesajların sembolü olduğunda görünce cevaplanmış sanıp konuyu atlayabiliyor insan. En azından bir kaç kez ben cevaplanmış sanıp geçtim)

Hocam ona dikkat ederim. Son dosya üzerinden yürümemiz mümkün mü berduş hocam
.rar Puantaj YILDIZ.rar (Dosya Boyutu: 417,1 KB | İndirme Sayısı: 0)
Son Düzenleme: 20/11/2020, 21:36, Düzenleyen: hayalibey.
Cevapla
#51
Oncelikle sorayim gönderdiğim dosyada siralamada bir sorun göremedim belirttiginiz gibi hem rütbeye hem de sicile gore siralama doğru gibi getirdi, nerde hata verdiğini belirtir misiniz?
Cevapla
#52
Berduş Hocam ekli dosya üzerinden devam etmemiz mümkün mü. Tek format üzerinden gidelim
.rar Puantaj YILDIZ.rar (Dosya Boyutu: 417,1 KB | İndirme Sayısı: 0)
Cevapla
#53
(20/11/2020, 21:35)hayalibey yazdı: Son dosya üzerinden yürümemiz mümkün mü berduş hocam
yanılmıyorsam daha önceden bir mesajımda belirtmiştim ben excelden pek anlamam zaten o nedenle Ado yöntemiyle yaptım ama @feraz beyin yapabileceğinden eminim.
Cevapla
#54
(20/11/2020, 21:46)berduş yazdı: Oncelikle sorayim gönderdiğim dosyada siralamada bir sorun göremedim belirttiginiz gibi hem rütbeye hem de sicile gore siralama doğru gibi getirdi, nerde hata verdiğini belirtir misiniz?
Hocam Koşul 1 2 3 randımanlı çalışmıyor.
Koşul 3 gelmeyecek sicillere ilk sicili yazdım gelmedi ama daha sonra koşul3ten sildim ama inadına ocak sayfasına gelmesi gerekirken gelmiyor
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task