
07-28-2010, 02:28
|
|
Üye
|
|
Üyelik tarihi: May 2010
Mesajlar: 49
|
|
Dtpicker ile kayıtları çağırmak?
Merhaba Arkadaşlar;
Userformda oluşturduğum üç adet Dtpicker ve bir adet command button mevcut.
1)Yapmak istediğim klasör içinde tarih olarak kaydedilmiş bulunan excel sayfalarının içindeki verileri, spreadsheet1'e buton yardımı ile göstermek.
1 nci dtpicker gün bazında çağırmak.
2 nci ve 3 ncü dt pickerlar ise iki tarih arasında verileri getirmek.
2) Yine farklı bir klasörde tarih olarak kaydedilmiş excel verilerini dtpicker ile word yada pdf dosyasında gösterebiliyor muyuz?
İlgi ve emeğinize şimdiden teşekkür ederim.
Saygılarımla.
|

07-28-2010, 06:21
|
|
Kıdemli Üye
|
|
Üyelik tarihi: Apr 2004
Mesajlar: 508
|
|
Alıntı:
winpa Nickli Üyeden Alıntı
Merhaba Arkadaşlar;
Userformda oluşturduğum üç adet Dtpicker ve bir adet command button mevcut.
1)Yapmak istediğim klasör içinde tarih olarak kaydedilmiş bulunan excel sayfalarının içindeki verileri, spreadsheet1'e buton yardımı ile göstermek.
1 nci dtpicker gün bazında çağırmak.
2 nci ve 3 ncü dt pickerlar ise iki tarih arasında verileri getirmek.
2) Yine farklı bir klasörde tarih olarak kaydedilmiş excel verilerini dtpicker ile word yada pdf dosyasında gösterebiliyor muyuz?
İlgi ve emeğinize şimdiden teşekkür ederim.
Saygılarımla.
|
1-Klasör içinde kaydedilmiş tüm excel dosyalarımı,yoksa Sadece adı tarih olan excel dosyalarımı?Yoksa tüm excel dosyaları ,ama içindeki sayfaları tarih isminde olanlarmı?
dtpicker1 hangi sütundaki tarihleri sorgulayacak
gün bazında derken atıyorum bütün pazartesilerimi,veya salı larımı,yoksa sadece seçili olan tarihimi?
2 dtpicker2 ve dtpicker3 hangi sütunları sorgulayacak?
falan,falan,falan.
|

07-28-2010, 07:13
|
|
Üye
|
|
Üyelik tarihi: May 2010
Mesajlar: 49
|
|
Merhaba Evren Bey;
Öncelikle belirtmek isterim ki ikinci seçenek konusu biraz sıkıntılı olduğundan çok zamanınızı alacak ise, değerli zamanınızı kaybetmenizi istemem.
İlgi ve emeğinize şimdiden teşekkür ederim.
1)Örnek olarak Dtpicker'da 27.07.2010 tarihi seçeceğim ve bana stok klasörün içindeki (27.07.2010) isimli excel dosyasını gösterecek. Yani hangi tarihi seçersem bana o tarih isimli excel dosyasını klasörün içinde bulacak ve verileri Spreadsheet1 sayfasında gösterecek. (Gösterilmesi gereken sütunlar B ve M aralığı)
2) En zor kısmı olan dtpicker2 ve dtpicker3
Örnek olarak:
Dtpicker2:20.07.2010 Dtpicker3:27.07.2010 tarih aralığında seçtiğimizi farz edersek, klasörün içinde bulunan,
20,21,22,23,24,25,26 ve 27.07.2010 tarihli olarak kaydedilmiş excel dosyalarını bulacak ve içindeki verilerin
B,C,D,E, stünlarını olduğu gibi gösterecek değişiklik olmayacak,
F sütununa G sütunun bu tarih aralığındaki verileri toplanarak yazılacak,
G,H,I sütunları bu tarih aralığındaki verileri toplanarak yazılacak,
j sütunu bu tarih aralığındaki F sütunun toplamından I sütunun toplamı çıkartılarak yazılacak,(=sum(F2-I2) )
K sütunu J sütununda bulunan sonucundan H sütunu çıkartılarak yazılacak. ( =H2-J2 )
L sütunu =sum(D2*J2)+(D2*K2) formülünde uyguandığı gibi yazılacak,
M sütunu =L2*E2 formülünde uygulandığı gibi yazılacak.
Veriler b2,c2,d2 vs.. olarak başlamaktadır.
Saygılarımla.
|

07-28-2010, 07:50
|
|
Kıdemli Üye
|
|
Üyelik tarihi: Apr 2004
Mesajlar: 508
|
|
Yanıtı yine tam olarak alamadım.Daha önceden aşağıda sorduklarıma yanıt vermediniz. 
Dtpicker1 hangi sütunu,Dtpicker2 hangi sütunu,dtpicker3 hangi sütunu
sorgulayacak?
|

07-28-2010, 08:21
|
|
Üye
|
|
Üyelik tarihi: May 2010
Mesajlar: 49
|
|
Evren Bey;
Dtpicker1 sütun sorgulamayacak,dosya ismi sorgulayacak.Klasörün içindeki excel dosyaların isimleri tarih ile kayıtlı. Dtpicker1 tarih girildiğinde ve ben butona bastığımda klasörün içindeki aynı tarihli dosyayının verilerini gösterecek. Eğer bu şekilde olmaz diyorsanız, Dtpicker1 tüm klasördeki kayıtlı excel dosyalarının (a2) hücrelerine bakacak.
Aynı şekilde Dtpicker2 ve Dtpicker3 içinde geçerli olacak. Sütun sorgulamaları butonla yapılacak.
Saygılarımla.
|

07-28-2010, 09:41
|
|
Kıdemli Üye
|
|
Üyelik tarihi: Apr 2004
Mesajlar: 508
|
|
Alıntı:
winpa Nickli Üyeden Alıntı
Evren Bey;
Dtpicker1 sütun sorgulamayacak,dosya ismi sorgulayacak.Klasörün içindeki excel dosyaların isimleri tarih ile kayıtlı. Dtpicker1 tarih girildiğinde ve ben butona bastığımda klasörün içindeki aynı tarihli dosyayının verilerini gösterecek. Eğer bu şekilde olmaz diyorsanız, Dtpicker1 tüm klasördeki kayıtlı excel dosyalarının (a2) hücrelerine bakacak.
Aynı şekilde Dtpicker2 ve Dtpicker3 içinde geçerli olacak. Sütun sorgulamaları butonla yapılacak.
Saygılarımla.
|
Aşağıdaki kodalar ilk soru için.
Dosyanız tools==refernce den microsoft dataobject activex 2.x library eklemelisiniz.
Verileri ado ile alıyoruz.
Dosyanın yolunu C:\Stok olarak yazdım.
Siz dosya nerede ise yol değişkenine o yolu yazınız.
Kodlar aşağıdadır.
Not test ettim gayet güzel çalışıyor.
Buna bakın sonra 2nci soruya gececez. 
'Tools referneceden Microso9ft data object 2.8 library eklendi
Kod:
Dim conn As ADODB.Connection, rs As ADODB.Recordset
Dim dosya As String, yol As String
yol = "C:\Stok\"
dosya = Format(Me.DTPicker1, "dd.mm.yyyy") & ".xls"
Me.Spreadsheet1.Sheets(1).Range("A1:Z262144").Clear
If Dir(yol & dosya) = "" Then
MsgBox yol & dosya & " Bulunamdı.", vbCritical, "UYARI"
Exit Sub
End If
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.Open "provider=microsoft.jet.oledb.4.0;data source=" & yol & dosya _
& ";extended properties=""excel 8.0;hdr=no;"""
rs.Open "select * from [Sayfa1$B1:M65536];", conn, adOpenKeyset, adLockReadOnly
Me.Spreadsheet1.Sheets(1).Select
If rs.RecordCount > 0 Then
Me.Spreadsheet1.ActiveSheet.Range("A1:L" & rs.RecordCount).Value _
= Application.Transpose(rs.GetRows)
End If
rs.Close: conn.Close
Set rs = Nothing: Set conn = Nothing
MsgBox "Veriler Akatarıldı." & vbLf & _
"evrengizlen@hotmail.com", vbOKOnly + vbInformation, "E V R E N"
|

07-30-2010, 12:31
|
|
Üye
|
|
Üyelik tarihi: May 2010
Mesajlar: 49
|
|
Evren Bey;
İş yoğunluğundan dolayı ancak müsait olabildim. Geç cevabımdan dolayı ayrıca özür dilerim.
Kodları denedim.
Me.Spreadsheet1.ActiveSheet.Range("A1:L" & rs.RecordCount).Value _
= Application.Transpose(rs.GetRows)
satırlarında "type mismatch" hatası vermektedir.
İlgi ve emeğinize çok teşekkür ederim.
Saygılarımla.
|

07-30-2010, 11:02
|
|
Kıdemli Üye
|
|
Üyelik tarihi: Apr 2004
Mesajlar: 508
|
|
Alıntı:
winpa Nickli Üyeden Alıntı
Evren Bey;
İş yoğunluğundan dolayı ancak müsait olabildim. Geç cevabımdan dolayı ayrıca özür dilerim.
Kodları denedim.
Me.Spreadsheet1.ActiveSheet.Range("A1:L" & rs.RecordCount).Value _
= Application.Transpose(rs.GetRows)
satırlarında "type mismatch" hatası vermektedir.
İlgi ve emeğinize çok teşekkür ederim.
Saygılarımla.
|
Ben denedim sorunsuz çalışmıştı.
Siz daha önceden o sayfaya veri aldınızmı veya o syafayı biçimlendirdinizmi.
O sayfa boşken deneyin.Tür uyuşmazlığı hatası vermiş.Yani değişkenler uyuşmuyor diyor.Sayfada ham hali ile alıyordu.
Daha olmadı dosyanızı evrengizlen@hotmail.com adresine yollayın.
|

07-30-2010, 04:15
|
|
Üye
|
|
Üyelik tarihi: May 2010
Mesajlar: 49
|
|
Evren Bey;
Dosyayı mail aresinize gönderdim.
Saygılarımla.
|

07-30-2010, 06:10
|
|
Kıdemli Üye
|
|
Üyelik tarihi: Apr 2004
Mesajlar: 508
|
|
Alıntı:
winpa Nickli Üyeden Alıntı
Evren Bey;
Dosyayı mail aresinize gönderdim.
Saygılarımla.
|
Dosyanızı email adresinize yapıp yolladım.Hem 2 tarih sorgulamasını hemde sadece 1 tarih sorgulamasınız yaptım.
Bu sefer döngüye girpte yaptım.
Diğer yöntem daha hızlı çalışırdı aslında ama siz satır silmişsiniz sayfada.
ADO excelde satır silmeyi kabul etmiyor bu yüzden bende çalışan kod sizde çalışmadı.Bende bir manevra ile döngü yöntemine döndüm.Şimdi çalışıyor.
Yalnız A sütunundaki tarih diye girmiş olduğunuz değerler excelde metin olarak algılanmıyor.Çünkü onlar metin olarak girilmiş.
Nerdenmi anladım.Hücre ortalamayı kaldırın .Göreceksiniz ki dğerler sola yanaşık.Excelde sola yanaşık dğerler metin,sağa yanaşık değerler ise sayı ve tarihtir.Ne zararı var derseniz,oda tarih görüntüsü veriyor derseniz işlem yapmaya kalktığınızda bu durum karşınıza çıkar.Yapacağını toplama işlemine bu sayı biçiminde görünümleri toplamaya sokmaz.Ben sokarım da,normalde olmaması lazım.Tarihleride sorguya almaz.Eğer bir usefromadan textboxtan atıyorsanız sayıları cdbl fonksişyonunu kullanarak,tarih atıyorsanız cdate fonksiyonu ile birlekte kullanarak atınız.Bu fonksiyonları hakkında bilgi almak için forumda araştırm ayapınız.Kolay gelsin.
|

07-30-2010, 07:13
|
|
Üye
|
|
Üyelik tarihi: May 2010
Mesajlar: 49
|
|
Evren Bey;
Tarih konusunda düzenlemeyi sizin belirttiğinz gibi yapacağım.
Dtpicker1 sorunsuz şekilde çalışıyor. Ellerinize, emeğinize sağlık.
2 tarih arasında yaptığımda aşağıdaki satırda hata vermektedir.
rs.Open "select * from [STOK$A1:M65536] where TARİH >=" & CDbl(DTPicker2.Value) _
& " and TARİH <=" & CDbl(DTPicker3.Value) & ";", conn, adOpenKeyset, adLockReadOnly
Ve Dtpicker1 : 30.07.2010 tarihli olarak gösterdirdiğini farz edelim.
Dtpicker2 : 21.07.2010 Dtpicker3 : 29.07.2010 tarihleri arasında verileri getirmek istediğimde. Kod Dtpicker1 tarihinde görülen 30.07.2010 tarihli kayıt bulunamadığını belirtmektedir.
Son olarak da iki tarih arasında verileri getirirken, aşağıdaki verilere göre yapabiliyor muyuz.
20,21,22,23,24,25,26 ve 27.07.2010 tarihli olarak kaydedilmiş excel dosyalarını bulacak ve içindeki verilerin
B,C,D,E, stünlarını olduğu gibi gösterecek değişiklik olmayacak,
F sütununa G sütunun bu tarih aralığındaki verileri toplanarak yazılacak,
G,H,I sütunları bu tarih aralığındaki verileri toplanarak yazılacak,
j sütunu bu tarih aralığındaki F sütunun toplamından I sütunun toplamı çıkartılarak yazılacak,(=sum(F2-I2) )
K sütunu J sütununda bulunan sonucundan H sütunu çıkartılarak yazılacak. ( =H2-J2 )
L sütunu =sum(D2*J2)+(D2*K2) formülünde uyguandığı gibi yazılacak,
M sütunu =L2*E2 formülünde uygulandığı gibi yazılacak.
Saygılarımla.
Konu winpa tarafından (07-30-2010 Saat 07:43 ) değiştirilmiştir.
|

07-30-2010, 08:36
|
|
Kıdemli Üye
|
|
Üyelik tarihi: Apr 2004
Mesajlar: 508
|
|
Evet orada bir belirsizlik var.dtpicker2 ve dtpicker3 teki tarih aralğındaki veriler hangi dosyadan alınacak?
Şu anda benim yazdığım kodlarda 2 tarih aralğı sorgulamak için sorgulanacak dosyayı önce dtpicker1 ile seçip sonra o dosyada sorgulama yapıyorsunuz.Mantıklı değilmi?
Not.Son söylediğiniz yapmak mümkündür.
|

07-30-2010, 09:08
|
|
Üye
|
|
Üyelik tarihi: May 2010
Mesajlar: 49
|
|
Değerli Evren Bey;
Amatörce yapacak olduğum programda, girilen her stok sayımında gün, gün olarak kaydetmesi, çünkü programın bir özelliğine şunu da ekleyeceğim. "Günü Bitir" bu butona bastığında gün içerisinde yapılan tüm işlemler kaydedilip sıfırlanacak. Ve elde kalan tüm ürünler bir sonraki güne devredecek.
Bu sebepten dolayı gün bittiğinde o tarih isimli dosya "stok" klasörün içinde bilgi amaçlı duracak olup içine bir veri eklenmeyecek?
Dtpicker2 ve Dtpicker3 kullanım amacı ise bu ayrı,ayrı tarih olarak kaydedilen excel dosyalarını, belirtilen tarih arasında bir nevi toplam olarak görülmesini sağlayabilmek olacak.
Saygılarımla.
|

07-30-2010, 10:37
|
|
Kıdemli Üye
|
|
Üyelik tarihi: Apr 2004
Mesajlar: 508
|
|
Son söylediğiniz bağlamında.
Mesela 27.07.2010 ve 28.07.2010 tarih aralağındaki xls dosyalarını sorguladık.Örnek 27.07.2010 tarihli dosyayı açaacaığız orada tavukların ürünleri teke indireceğiz,sonra onun toplamını yazacağız.Mesela 27.07.2010 dosyasında 10 tane tavuk varsa bu bir satıra inecek ve onun söylediğiniz sütunlarındaki tutarları ayni satıra yazılacak.Sonra ayni işlem sıfırdan 28.07.2010 dosyası için uygulanacak.Böyle olursa 2 tavuk yine olacak.Hayır böyle değil diyorsanız bütün dosyalardaki tavuklar tek bir satırda olacak hepsinin toplamıda ayni satırda olacak.
Hangisi olacak.Veya bu dediğimin dışında bir şeymi olacak?Ne olacak?
|

07-30-2010, 11:02
|
|
Üye
|
|
Üyelik tarihi: May 2010
Mesajlar: 49
|
|
Evren Bey;
Bütün dosyalardaki tavuklar bir satırda olacak. Toplamlarıda aynı satırda olacak. İşlemler tek sayfa üzerinde gösterilecek.
Saygılarımla.
|

07-30-2010, 11:03
|
|
Kıdemli Üye
|
|
Üyelik tarihi: Apr 2004
Mesajlar: 508
|
|
Aslında veri tabanı olarak mdb dosyası kullansanız daha iyi olacak.vt nin imkanlarından yararlanabaileceksiniz.Kayıt excel vba ile kayıt girip güncelleme yapıp silme olayınıda yapacaksınız.2 gb kapasitesi olduğu söyleniyor.Verielriniz orada tutabilirsiniz.İsterseniz 4 gb kapasiteli daha hızlı çalışan ms compact 3,5 sql server dosyası sdf uzantılı kullnabilirsiniz.Bu dahada hızlı çalışıyor.Yalnızca excelin çalışabilmesi için o makinede runtime dosyasını kullanıyorsunuz o kadar.
|

07-30-2010, 11:11
|
|
Üye
|
|
Üyelik tarihi: May 2010
Mesajlar: 49
|
|
Evren Bey;
Bu konuda çok haklısınız. Zaten son olarak programın raporlama kısmı kaldı. Ve bazı düzeltmeler.
Düşünüyorum yapılan her kayıtlarda excel şişmeye başlıyor ve bu da benim işime gelmiyor. Kayıtlar 1000 üzerine çıkmaya başladığında mb olarak yükselmeye ve program kasmaya başlamaktadır.
Fakat yaptığım çalışma sonucunda tüm eksik kısımları görüp kağıda döküyorum. Ve bunun ileri düzey olarak taslağını yapıp access mdb veritabanı ile yapacağım.
Şuanda tamamen bunu bitirmeye şartlandım.
Saygılarımla.
|

07-31-2010, 01:21
|
|
Kıdemli Üye
|
|
Üyelik tarihi: Apr 2004
Mesajlar: 508
|
|
Dosyanızı yaptım.
email adresine yoladım.
Yalnız şunu itiraf etmeliyim ki beni çok uğraştırdı.
Bazı sütunlara veri girmemişsiniz bende girmedim.Sizin gibi ona üşendim,null olması sebebi ile hata verdi kodlar.Sonında hallettim.
Yalnız son 4 sütunu şüpheliyim.
Onu ya tam siz anlatamadınız yada ben anlamadım.
O son 4 sütunu kontrol ediniz.
Olmamışsa daha detaylı anlatınız.
Kolay gelsin.
|

07-31-2010, 01:31
|
|
Üye
|
|
Üyelik tarihi: May 2010
Mesajlar: 49
|
|
Evren Bey;
Açıkcası mailinizi sabah yada öğlen bekliyordum.. Bu saate kadar uğraşmanız ve cevap yazmanız inanın ne yazacağımı bilemedim.
Maili birazdan kontrol edeceğim. Açıkca belirtmem gerekirse bunun olma ihtimalini bile düşünemiyordum. Sonucu hakkında bilgi veririm.
Hakkınızı helal edin.
Hayırlı geceler.
Saygılarımla.
|

07-31-2010, 03:25
|
|
Üye
|
|
Üyelik tarihi: May 2010
Mesajlar: 49
|
|
Evren Bey;
Hayırlı geceler.
Göndermiş olduğunuz dosyayı inceledim. Son dört sütun kısımlarında ki sorunu sizin yazmış olduğunuz kodlarda değişiklik yaparak hallettim.
myarr(9, z.Item(rs(0).Value)) = myarr(5, z.Item(rs(0).Value)) - myarr(8, z.Item(rs(0).Value))
myarr(10, z.Item(rs(0).Value)) = myarr(7, z.Item(rs(0).Value)) - myarr(9, z.Item(rs(0).Value))
myarr(11, z.Item(rs(0).Value)) = (myarr(3, x) * myarr(9, z.Item(rs(0).Value))) + _
(myarr(3, x) * myarr(10, z.Item(rs(0).Value)))
myarr(12, z.Item(rs(0).Value)) = myarr(11, z.Item(rs(0).Value)) * myarr(4, x)
Son olarak;
F sütununda yanlış hesaplama yapılmaktadır.
Başlangıç (F sütunu) = Elimdeki mevcut ürün + ilk gelen mal olarak düşünürsek. Bir sonraki gün gelen malı toplayarak göstermesi gerekiyor.
Örnek olarak verecek olursak.
27.07.2010 tarihli "Başlangıcımız tavuk (F sütunu)" , Gelen mal (G sütunu) ile toplam 50 kg.
Yani elimizde tavuk 41 kg mevcut + 9 kg daha mal gelmiştir.
28.07.2010 tarihinde tavuk 10 kg daha geldiğini farz edersek.
Toplam iki günlük başlangıç malımız 41+9+10 =60 kg olacak.
Yazılan kodda 50+50=100 kg olarak göstermekte. F+F toplamı yapmaktadır.
Saygılarımla.
Konu winpa tarafından (07-31-2010 Saat 03:33 ) değiştirilmiştir.
|
|
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
|
|
|
| Seçenekler |
Arama |
|
|
|
| Stil |
Normal
|
Yetkileriniz
|
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok
HTML-Kodu Açık
Forum Şartları
|
|
|
Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 01:15.
|