AccessTr.neT

Tam Versiyon: Commandbuttonları Koşullu Silme
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2 3 4
tam olarak teknik alt yapısı nasıldır bilmiyorum ama for each mantığı her nesne yada eleman için tek tek kontrol ediyor sildiğinde geriye kalan tüm elemanların sıralaması bir azalıyor dolayısıyla artık 2. eleman 1. eleman olmuş oluyor. bir sonraki elemana gidince yani 2. elemana -eskiden 2. olan artık 1., 3. olan da artık 2. olduğu için - eski 3. elemana gidip 2.yi atlamış oluyor.
aslında döngü doğru çalışıyor ama her silmede elemanlar bir sıra kaydığı için atlamış oluyor
Abey dögüylede denemiştim olmamıştı alttaki gibi örneğin bundada aynı durum olmuştu.Gariplik var abey gariplik Img-cray

For i = .count to to 0 step -1
Feraz bey anladığımı söyleyeyim amacınız 2 mor buton dışında kalan bütün butonları sildirmek değil mi?
Başka bir şey yapacak mı?
Public Function butonYap()

Dim db As dao.Database
Dim rs As dao.Recordset
Dim sqlStr As String
Dim frm As Form
Dim yeni As Control
Dim i As Integer, say As Integer, ii As Integer
Dim silinmemesiGerekenler
Dim scr As Object
Dim toop As Integer
Dim scrSil() As String

Set scr = CreateObject("Scripting.Dictionary")
silinmemesiGerekenler = Array("btn1", "btn2")

DoCmd.OpenForm "Form1", acDesign
Set frm = Forms("Form1")
sqlStr = "SELECT * FROM Tablo1"

Set db = CurrentDb
Set rs = db.OpenRecordset(sqlStr)
'' On Error Resume Next

With Forms("Form1")
For i = LBound(silinmemesiGerekenler) To UBound(silinmemesiGerekenler)
scr.Add silinmemesiGerekenler(i), ""
Next
x = 0
donguBos = 0
For Each con In .Controls
If Not scr.exists(con.Name) Then
donguBos = 1
ReDim Preserve scrSil(x)
scrSil(x) = con.Name
x = x + 1
End If
Next

If donguBos = 0 Then
MsgBox "silinecek nesne yok"
GoTo 111
End If
For x = LBound(scrSil) To UBound(scrSil)
DeleteControl frm.Name, scrSil(x)
Next x
111
End With
' On Error GoTo 0
'''' Err.Clear
rs.MoveFirst

say = 1

Do Until rs.EOF
If scr.exists(rs(0).Value) Then

toop = 500 + 700 * ((say - 0.6) \ 4)

Set yeni = CreateControl(frm.Name, acCommandButton, Left:=iLft, Top:=toop)

yeni.Caption = rs!aa
yeni.Name = "Button" & say
yeni.Height = 500
Set yeni = Nothing
iLft = 13 + 2085 * (say Mod 4)
say = say + 1
End If
rs.MoveNext
Loop

DoCmd.OpenForm "Form1", acNormal
Forms("Form1").Form.Requery
Set yeni = Nothing
Set frm = Nothing
Set scr = Nothing

End Function
(09/02/2020, 22:09)berduş yazdı: [ -> ]2 mor buton dışında kalan bütün butonları sildirmek değil mi?
evet ve tablo1 deki verileride buton olarak forma eklemek.Yani tablo1 de nekadar veri varsa onların adıyla buton olacak morlar kalacak
Siyah yeri ekleyincede son verdiğiniz kod çalıştı abey teşekkürleri borç bilirim ve daha kafam önceki silme yerinde

Do Until rs.EOF

        If Not scr.exists(rs(0).Value) Then
(09/02/2020, 22:30)feraz yazdı: [ -> ]daha kafam önceki silme yerinde
anlamadım?
Sayfalar: 1 2 3 4