Yapmak istediğim şey bir mdb dosyasındaki tüm nesneleri aynı ad ve veriyle olduğu gibi boş ve yeni yaratılmış bir başka mdb dosyasına kopyalamak ya da taşımak.
Bununla ilgili hazırda bir araç mevcut mudur? Bu uygulama Access'te hazırlanabilir mi? Yapabilecek varsa lütfen yardımcı olsun.
Eğer tahmin ettiklerim çıkarsa herkes için faydalı bir proje olacak.
21-07-2009, 03:04 (En son düzenleme: 21-07-2009, 04:17 Mehmet Eser.)
Az önce örneğinizi inceledim. Maşallah modül dolusu kodla yapılanları ince yoldan birkaç satırla yapmışsınız.
Benim hep cin fikirliğim tutar. MDB dosyasıyla ne kadar uğraşırsak boyutu da o kadar büyüyor. Ve şunu gördüm bir zaman sonra Access sıkıştır ve onar işlevi de çaresiz kalıyor atıklardan. Ne kadar sıkıştırırsanız sıkıştırın, tüm nesnelerinizi temiz bir mdb dosyasına aktarmak kadar boyutu düşürmüyor. Az önce denedim. Ekte bakınız, 1 MB'dan fazla karım oldu. Hâlbuki denemeden önce sıkıştır onar yaptım asıl dosyaya. Tüm nesneleri yeni mdb'ye aktarınca ise sonuç çok daha iyi.
Bazen çok karıştırılan mdb'lerde atıklardan dolayı işlev sorunları da oldu. Abuk sabuk davranışlar gösterdi Access.
Taruz Bey, kodunuzu tüm nesneler için geliştirebilir misiniz? Bu sayede elimizde daha mükemmel bir sıkıştır onar aracı olacak Taruz farkıyla. İddia ediyorum, mdb sıkıştır onar araçlarının hiçbiri bu kadar boyut küçültemez. Bu aslında büyük bir buluş! Eh zaten bizde maşallah fikir çok zikir yok!
Örneğinizde tablolar tek tek ele alınıyor. Döngü iel ne var ne yoksa alsın şeklinde uyarlayabilir misiniz? Hiçbir şey değişmeden olduğu gibi kopyalansın ne güzel olur?
Saygılar, teşekkürler.
Allah razı olsun sizden, yardımlarınız, emekleriniz, iyi niyetiniz, hoşgörünüz ve de bu dostlarım olan şen şakrak minikler için.
Örneğinizde tablolar tek tek ele alınıyor. Döngü iel ne var ne yoksa alsın şeklinde uyarlayabilir misiniz? Hiçbir şey değişmeden olduğu gibi kopyalansın ne güzel olur?
Geniş vakit bulduğumda üzerinde çalışırım inşallah..
Selamlar..
Bulunamayan yerleri bulmak için önce kaybolmak gerekir.
Daha önce bana bir örnek verdiniz. Nesne penceresi tasarlamıştınız. Orda tüm nesneler liste kutusunda görünüyordu otomatik olarak. Baktım SQL ile aldırmışsınız. Berkant Beyin de bir kodunu gördüm tablo aktarımıyla ilgili ama şu an sonuca götüremem bu haliyle. Sizi heyecanla bekliyorum.
SQL kodu örneğiniz:
SQL
SELECT MsysObjects.Name FROM MsysObjects _
& " WHERE (((Left$([Name],1))<> ""~"") And ((Left$([Name],4))<> ""Msys"") And ((MsysObjects.Type)=1))" _
& " ORDER BY MsysObjects.Name"
VBA kod örneği Berkant Beyin:
Visual Basic
Dim sifreli_VT AsString
Dim bbData As DAO.Database
sifreli_VT = "c:\k\be.accdb"
Set bbData = DBEngine.OpenDatabase(sifreli_VT, _
False,False, ";pwd=n8b5s9f4k0")
DoCmd.TransferDatabase acExport, _
"Microsoft Access", _
sifreli_VT, _
acTable, _
"stok", _
"stocks"
bbData.Close
Set bbData =Nothing
Teşekkürler. Bir de verdiğim form ve rapor araç çubuklarını değiştirme kodu tüm rapor ve formlara gidiyordu. O koddan o kısım alınıp nesne kopyalamaya uyarlanırsa olur sanırım.
23-07-2009, 16:51 (En son düzenleme: 23-07-2009, 16:53 Mehmet Eser.)
Aşağıdaki kodu oluşturdum. Bazen çalıştı bazen çalışmadı. Son olarak ben de taslak halini koydum.
Amacım sırayla tüm nesneleri yeni bir mdb'ye kopyalamaktı. Bir de AllReports, AllForms gibi nesneler de var. Acaba bunları kullanarak daha kısa bir kod yazılabilir mi ? Döngüsüz tek seferde tümü kopyalanamaz mı? Ya da export yöntemini mi kullanmak gerek ? Onu bilmiyorum. Kodları düzeltip, ekleme yapabilir misiniz?
Tüm nesneleri kopyalamak istedim ama sabitler (türler) içinde ilişkiler ne olarak geçiyor çözemedim. Bir de acTable yerine acTableDefs vardı, aynı şey mi?