Kayıt Tarihi: 17.05.2008
Toplam 368 konu açtı.
Toplam 1.571 yorum yaptı.
Toplam
7
puanı bulunmakta.
Mevcut Office Sürümü:
Office 2010 TR,
Beğeniler: 0 / 2
20-04-2012, 14:15
(En son düzenleme: 20-04-2012, 14:25 Mehmet Eser .)
Merhaba, yine bana acayip gelen bir konuyla soruyorum.
VT bölme bolca var ama ben tablo bölmek istiyorum. Şöyle ki: Kalıcı ya da geçici tablolara ihtiyacım var. Access altında geçici tablo hafızada oluşturulup nasıl kapatılır? bu işlem için özel komut var mı yoksa önce yaratılıp sonra silme yöntemi mi kulanılır?
Kalıcı olarak ise diyelim 48 kayıtlı bir tablom var. Bunu aynı yapıya sahip üç farklı tabloya verilerini dağıtma k istiyorum. Nasıl bir ekleme sorgusu ya da başak bir şey lazım?
Verileri dağıtırken ana tablo diyelim alfabetik oalrak sıralanmışsa tablolara sırayla verileri gödnermesi lazım. Yani önce birinci tabloya 16 tane atıp ikinci 16 taneyi 2. tabloya atmayacak. Teker teker göndermesi gerekiyor. Her birine ardışık sayılarla veri eklemeli. birinci tabloya 1.-4.-7.-10.-13.-16. kayıt gibi. İkinci tabloda ise 2-5-8-11. üçüncü tabloda ise 3-6-9-12-15. gibi kayıtlar olmalı. İStenen sayıda atlayıp N. kaydı eklmeli.
Teşekkürler.
Eklenti Dosyaları
TabloBolmeEklemeME.zip (Boyut: 47,55 KB / İndirilme: 151)
Kayıt Tarihi: 04.03.2008
Toplam 371 konu açtı.
Toplam 7.540 yorum yaptı.
Toplam
133
puanı bulunmakta.
Mevcut Office Sürümü:
Office 2010,
Office 2019,
Beğeniler: 53 / 55
Merhaba Mehmet bey..
Son zamanlarda denk geldiğim güzel sorulardan biri..
Alttaki prosedür..:
Tablonun bölünüp bölünmeyeceğini sorar.
Geçici tablolarda veri varsa silinip silinmeyeceğini sorar.
Kaç kayıt aralığında dağıtma k istediğiniz sorar.
Aralık dışında kalmış, dağıtılmayan kayıt varsa uyarır.
Bu kayıtları eğer isterseniz hangi geçici tabloya aktarmak istediğiniz sorar.
Ve vaat ettiklerinin hepsini yapar..
Formda bir düğmede kullanınız..:
Visual Basic
'Ado refranıs ekleyin..
If MsgBox( "Ana tablo bölünecek.. Evet mi?", vbYesNo) = vbYes Then
If MsgBox( "Geçici tablolarda veri varsa silinsin mi?", vbYesNo) = vbYes Then
CurrentDb . Execute "delete from anatablo1"
CurrentDb . Execute "delete from anatablo2"
CurrentDb . Execute "delete from anatablo3"
End If
Dim rs As New ADODB . Recordset
Dim aa, bb, ff, ZiplamaSayisi As Integer
ZiplamaSayisi = InputBox( "Kayıtların bölünme aralığı nedir?", , 3)
'AnaTablo1
rs. Open "AnaTablo", CurrentProject. Connection, 1, 3
aa = 0
bb = ZiplamaSayisi
CurrentDb . Execute "insert into AnaTablo1 ( KisiAd, KisiSoyad, KisiBirim ) " _
& " select " & "'" & rs(1) & " ' , '" & rs(2) & " ', '" & rs(3) & " ' "
For i = 1 To DCount ( "* ", "anatablo")
If aa / bb = 1 Then
CurrentDb . Execute "insert into AnaTablo1 ( KisiAd, KisiSoyad, KisiBirim ) " _
& " select " & "'" & rs(1) & " ' , '" & rs(2) & " ', '" & rs(3) & " ' "
bb = bb + ZiplamaSayisi
End If
aa = aa + 1
rs. MoveNext
Next
rs. Close
Set rs = Nothing
'AnaTablo2
rs. Open "AnaTablo", CurrentProject. Connection, 1, 3
aa = 0
bb = ZiplamaSayisi + 1
For i = 1 To DCount ( "* ", "anatablo")
If aa = 1 Then CurrentDb . Execute "insert into AnaTablo2 ( KisiAd, KisiSoyad, KisiBirim ) " _
& " select " & "'" & rs(1) & " ' , '" & rs(2) & " ', '" & rs(3) & " ' "
If aa / bb = 1 Then
CurrentDb . Execute "insert into AnaTablo2 ( KisiAd, KisiSoyad, KisiBirim ) " _
& " select " & "'" & rs(1) & " ' , '" & rs(2) & " ', '" & rs(3) & " ' "
bb = bb + ZiplamaSayisi
End If
aa = aa + 1
rs. MoveNext
Next
rs. Close
Set rs = Nothing
'AnaTablo3
rs. Open "AnaTablo", CurrentProject. Connection, 1, 3
aa = 0
bb = ZiplamaSayisi + 2
For i = 1 To DCount ( "* ", "anatablo")
If aa = 2 Then CurrentDb . Execute "insert into AnaTablo3 ( KisiAd, KisiSoyad, KisiBirim ) " _
& " select " & "'" & rs(1) & " ' , '" & rs(2) & " ', '" & rs(3) & " ' "
If aa / bb = 1 Then
CurrentDb . Execute "insert into AnaTablo3 ( KisiAd, KisiSoyad, KisiBirim ) " _
& " select " & "'" & rs(1) & " ' , '" & rs(2) & " ', '" & rs(3) & " ' "
bb = bb + ZiplamaSayisi
End If
aa = aa + 1
rs. MoveNext
Next
rs. Close
Set rs = Nothing
End If
'boşta kalan kayıtlar..
srg = "select AnaTablo. KisiAd, AnaTablo. KisiSoyad, AnaTablo. KisiBirim " _
& "from AnaTablo left join ( select KisiAd , KisiSoyad from AnaTablo1 " _
& "union select KisiAd, KisiSoyad from AnaTablo2 union " _
& "select KisiAd, KisiSoyad from AnaTablo3) as Sorgu1 " _
& "on ( AnaTablo. KisiAd = Sorgu1. KisiAd) AND ( AnaTablo. KisiSoyad = Sorgu1. KisiSoyad) " _
& "where Sorgu1. KisiAd Is Null and Sorgu1. KisiSoyad Is Null "
rs. Open srg, CurrentProject. Connection, 1, 3
If rs. RecordCount > 0 Then
If MsgBox( rs. RecordCount & " kayıt boşta kaldı.. Bunları bir tabloya atayım mı?", vbYesNo) = vbYes Then
ff = InputBox( "Hangi tabloya atayım?" & vbCrLf & "1) AnaTablo1" _
& vbCrLf & "2) AnaTablo2" & vbCrLf & "3) AnaTablo3", , 1)
Select Case ff
Case 1
tbl = "AnaTablo1"
Case 2
tbl = "AnaTablo2"
Case 3
tbl = "AnaTablo3"
End Select
For i = 1 To rs. RecordCount
CurrentDb . Execute "insert into " & tbl & " ( KisiAd, KisiSoyad, KisiBirim ) " _
& " select " & "'" & rs(0) & " ' , '" & rs(1) & " ', '" & rs(2) & " ' "
rs. MoveNext
Next
rs. Close
Set rs = Nothing
End If
End If
Kayıt Tarihi: 05.03.2008
Toplam 252 konu açtı.
Toplam 3.103 yorum yaptı.
Toplam
124
puanı bulunmakta.
Mevcut Office Sürümü:
Office 2013,
Beğeniler: 9 / 23
Taruz, hangi aralık yaptın sen bunu? !!!!
Bravo!!
Javascript
this .setState ( { sign: "Here comes the sun...." } )
Kayıt Tarihi: 17.05.2008
Toplam 368 konu açtı.
Toplam 1.571 yorum yaptı.
Toplam
7
puanı bulunmakta.
Mevcut Office Sürümü:
Office 2010 TR,
Beğeniler: 0 / 2
merhaba,
boşta kayıt kalmıyor aslında istediğimde zaten. diyelim iki kayıt arttıysa ilkini birinci geçici tabloya diğerini üçüncü tabloya eklmesi gerekiyor. eğer tek kayıt kaldıysa ilk tabloya atamalı. ,
farzedelim 5 tabloya bölecekse bu sefer de 4 artsın eşit dağılım sonucu. Birinciden dördüncüye kadar dağıtıyor ve sonuncusu boş kalıyor. Ona göre ayarlayabilirseniz çok memnun olurum.
Çok fazla gelebilir istek ama hepsini tek fonksiyonda parametreli yapılsa sorun çıkar mı mantık yapısında? Örneğin TabloBol(3,tablo1,tablo2,tablo3)
Eve dönünce tadına bakacağım, çok sağolun.
Kayıt Tarihi: 04.03.2008
Toplam 371 konu açtı.
Toplam 7.540 yorum yaptı.
Toplam
133
puanı bulunmakta.
Mevcut Office Sürümü:
Office 2010,
Office 2019,
Beğeniler: 53 / 55
Olayı dediğiniz şekilde geliştirdim.. Şöyle ki..:
Eğer isterseniz kalanlar seçeceğiniz tek bir tabloya aktarılır.. Yok eğer istemezseniz kalan kayıtlar sırayla diğer tablolara aktarılır..
Prosedürü fonksiyona aldım.. 5 parametre var.. Atlama sayısı, Ana tablo, 1. geçici tablo, 2. geçici tablo ve 3. geçici tablo..:
Visual Basic
Call TabloBol( 5, "anatablo", "anatablo1", "anatablo2", "anatablo3")
Fonksiyonda kullandığım tablo adları, alan adları vb. (sorgular dahil) tanımlamaları bu değişkenlerden alınıyor.. (Sadece bu yapı için bile güzel bir örnek)
Visual Basic
'Referanslardan Ado gerekli.. Taruz..
Public Function TabloBol( ZiplamaSayisi As Integer , tablo, tablo1 As String _
, tablo2 As String , tablo3 As String )
On Error GoTo Komut0_Click_Error
If ZiplamaSayisi = 2 Then
MsgBox "3'ün altına bu iş yapılmaz.."
Exit Function
End If
If MsgBox( "Ana tablo bölünecek.. Evet mi?", vbYesNo) = vbYes Then
If MsgBox( "Geçici tablolarda veri varsa silinsin mi?", vbYesNo) = vbYes Then
CurrentDb . Execute "delete from " & tablo1 & ""
CurrentDb . Execute "delete from " & tablo2 & ""
CurrentDb . Execute "delete from " & tablo3 & ""
End If
Dim rs As New ADODB . Recordset
Dim aa, bb, ff As Integer
'AnaTablo1
rs. Open tablo, CurrentProject. Connection, 1, 3
aa = 0
bb = ZiplamaSayisi
CurrentDb . Execute "insert into " & tablo1 & " ( " & rs. Fields( 1). Name & "" _
& ", " & rs. Fields( 2). Name & ", " & rs. Fields( 3). Name & " ) " _
& " select " & "'" & rs(1) & " ' , '" & rs(2) & " ', '" & rs(3) & " ' "
For i = 1 To DCount ( "* ", "" & tablo & "")
If aa / bb = 1 Then
CurrentDb . Execute "insert into " & tablo1 & " ( " & rs. Fields( 1). Name & "" _
& ", " & rs. Fields( 2). Name & ", " & rs. Fields( 3). Name & " ) " _
& " select " & "'" & rs(1) & " ' , '" & rs(2) & " ', '" & rs(3) & " ' "
bb = bb + ZiplamaSayisi
End If
aa = aa + 1
rs. MoveNext
Next
rs. Close
Set rs = Nothing
'AnaTablo2
rs. Open tablo, CurrentProject. Connection, 1, 3
aa = 0
bb = ZiplamaSayisi + 1
For i = 1 To DCount ( "* ", tablo)
If aa = 1 Then CurrentDb . Execute "insert into " & tablo2 & " ( " & rs. Fields( 1). Name & "" _
& ", " & rs. Fields( 2). Name & ", " & rs. Fields( 3). Name & " ) " _
& " select " & "'" & rs(1) & " ' , '" & rs(2) & " ', '" & rs(3) & " ' "
If aa / bb = 1 Then
CurrentDb . Execute "insert into " & tablo2 & " ( " & rs. Fields( 1). Name & "" _
& ", " & rs. Fields( 2). Name & ", " & rs. Fields( 3). Name & " ) " _
& " select " & "'" & rs(1) & " ' , '" & rs(2) & " ', '" & rs(3) & " ' "
bb = bb + ZiplamaSayisi
End If
aa = aa + 1
rs. MoveNext
Next
rs. Close
Set rs = Nothing
'AnaTablo3
rs. Open tablo, CurrentProject. Connection, 1, 3
aa = 0
bb = ZiplamaSayisi + 2
For i = 1 To DCount ( "* ", tablo)
If aa = 2 Then CurrentDb . Execute "insert into " & tablo3 & " ( " & rs. Fields( 1). Name & "" _
& ", " & rs. Fields( 2). Name & ", " & rs. Fields( 3). Name & " ) " _
& " select " & "'" & rs(1) & " ' , '" & rs(2) & " ', '" & rs(3) & " ' "
If aa / bb = 1 Then
CurrentDb . Execute "insert into " & tablo3 & " ( " & rs. Fields( 1). Name & "" _
& ", " & rs. Fields( 2). Name & ", " & rs. Fields( 3). Name & " ) " _
& " select " & "'" & rs(1) & " ' , '" & rs(2) & " ', '" & rs(3) & " ' "
bb = bb + ZiplamaSayisi
End If
aa = aa + 1
rs. MoveNext
Next
End If
'boşta kalan kayıtlar..
srg = "select " & tablo & ". " & rs. Fields( 1). Name & ", " & tablo & ". " & rs. Fields( 2). Name & "" _
& ", " & tablo & ". " & rs. Fields( 3). Name & " " _
& "from " & tablo & " left join ( select " & rs. Fields( 1). Name & "" _
& ", " & rs. Fields( 2). Name & " from " & tablo1 & " " _
& "union select " & rs. Fields( 1). Name & ", " & rs. Fields( 2). Name & " from " & tablo2 & " union " _
& "select " & rs. Fields( 1). Name & ", " & rs. Fields( 2). Name & " from " & tablo3 & ") as trz " _
& "on ( " & tablo & ". " & rs. Fields( 1). Name & " = trz . " & rs. Fields( 1). Name & ") " _
& "and ( " & tablo & ". " & rs. Fields( 2). Name & " = trz . " & rs. Fields( 2). Name & ") " _
& "where trz . " & rs. Fields( 1). Name & " Is Null and trz . " & rs. Fields( 2). Name & " Is Null "
rs. Close
Set rs = Nothing
rs. Open srg, CurrentProject. Connection, 1, 3
If rs. RecordCount > 0 Then
If MsgBox( rs. RecordCount & " kayıt boşta kaldı.. Bunları bir tabloya atayım mı?", vbYesNo) = vbYes Then
ff = InputBox( "Hangi tabloya atayım?" & vbCrLf & "1) " & tablo1 & "" _
& vbCrLf & "2) " & tablo2 & "" & vbCrLf & "3) " & tablo3 & "", , 1)
Select Case ff
Case 1
tbl = tablo1
Case 2
tbl = tablo2
Case 3
tbl = tablo3
End Select
For i = 1 To rs. RecordCount
CurrentDb . Execute "insert into " & tbl & " ( " & rs. Fields( 0). Name & ", " _
& rs. Fields( 1). Name & ", " & rs. Fields( 2). Name & " ) " _
& " select " & "'" & rs(0) & " ' , '" & rs(1) & " ', '" & rs(2) & " ' "
rs. MoveNext
Next
rs. Close
Set rs = Nothing
ElseIf MsgBox( "Peki, tablolalara paylaştırayım mı?", vbYesNo) = vbYes Then
kk = 0
For i = 1 To rs. RecordCount
kk = kk + 1
If kk > 3 Then kk = 1
tt = Array( tablo1, tablo2, tablo3)
tbl = tt( kk - 1)
CurrentDb . Execute "insert into " & tbl & " ( " & rs. Fields( 0). Name & ", " _
& rs. Fields( 1). Name & ", " & rs. Fields( 2). Name & " ) " _
& " select " & "'" & rs(0) & " ' , '" & rs(1) & " ', '" & rs(2) & " ' "
rs. MoveNext
Next
rs. Close
Set rs = Nothing
End If
End If
On Error GoTo 0
Exit Function
Komut0_Click_Error:
MsgBox "Error " & Err. Number & " ( " & Err. Description & ") "
End Function
Kayıt Tarihi: 21.03.2008
Toplam 154 konu açtı.
Toplam 2.119 yorum yaptı.
Toplam
11
puanı bulunmakta.
Mevcut Office Sürümü:
Office 2019,
Beğeniler: 0 / 3
Sayın Mehmet Eser;
İyi akşamlar.
Sayın Taruz'un eklediği, sizin ve sayın Berkant Öztürk'ün övgüsünü kazanan yukarıdaki kodun, dosyaya eklenmiş son şeklini rica etsem siteye ekleyebilir misiniz?
Sorunuz ve güzel yanıtı veren üstadıma teşekkürler.
Sevgi ve saygılar.