Değerli arkadaşlar
frm_personelbilgiformu nu ,frm_secenek formu için uyarlamaya çalıştım. secenek sorgusuna göre frm_secenek formu oluşturdum.form satır kaynağını secenek sorgusundan alacak şekilde ayarlamaya çalıştım.
Formu açtığımda rakamsal değer girmem gerekiyor.Örneğimde Değeri 1 veya 4 olanlar, vcard gönderisi olarak çalışıyor. Ama 2 ve 3 girildiğinde çalışmıyor. Nerede bir eksiklik var yardımcı olursanız sevinirim.Saygılar
(24/09/2018, 12:02)access acemisi yazdı: Değerli arkadaşlar
frm_personelbilgiformu nu ,frm_secenek formu için uyarlamaya çalıştım. secenek sorgusuna göre frm_secenek formu oluşturdum.form satır kaynağını secenek sorgusundan alacak şekilde ayarlamaya çalıştım.
Formu açtığımda rakamsal değer girmem gerekiyor.Örneğimde Değeri 1 veya 4 olanlar, vcard gönderisi olarak çalışıyor. Ama 2 ve 3 girildiğinde çalışmıyor. Nerede bir eksiklik var yardımcı olursanız sevinirim.Saygılar
personelbilgiformu'nda "kisi_id"ye göre geliyor, frm_seçenek formunda seçenek kısmında aynı numaraya sahip kayıtlar var. Sorun bundan kaynaklanıyor olabilir. Mükerrer kayıt oluşmasını engellerseniz sorgunuz çalışıyor...
şöyle bir ikaz veriyor
Her iki form üzerinde deneme çalışmalarımı sürdürdüm.
Amacım seçenek alanında örneğin 1 numarayı temsil eden arkadaşlarımın Vcard hazırlamasını istedim …tbl_kisiler tablosunda 100 kişinin olduğunu varsayalım. Bunlar içerisinde arkadaşlar olarak , id sırasına göre 5 -73 ve 94 nolu 3 kişinin arkadaşlar seçeneğinde bulunduğunu yine varsayalım. Sürekli yaptığım denemeler sonrasında, her iki formda ,Vcard hazırlığı için, her iki formda da , tablodaki tüm kişileri taradığını anladım. Zira formun en altında mavi alanda aktarılan kişileri görebiliyorum ve buda yaklaşık 10-15 dakika kadar sürüyor..5 nolu kişiyi aktardıktan sonra 73. Kişiyi buluncaya kadar 5 nolu kişinin ismi daima sürekli formda beliriyor..Bu da zaman alıyor..Bir ara form çalışmıyor galiba zannına vardım.
Bir de şöyle denedim…. tbl_kisiler alnında, seçenek alanında 1 rakamının haricindeki diğer kişilerin kayıtları sildim ve formda ilgili butona (Vcard) tıklayınca ,5-10 sn ' de 3 kişinin kaydını hemen hazırladı…
Sayın üstadlarımdan şunu talep ediyorum …Ben seçenekte bulunan değerlere göre ,Vcard süzme yapsın.Bu süzmeye göre, zaman geçirmeden ilgili kayıtları hazırlasın…Aslında frm_secenek diye 2. Bir formu da bu amaçla hazırlamıştım.Sorgudan direk alır diye.
Sorunun iyi anlaşılabilmesi için böyle uzun bir açıklama yapma ihtiyacı hissettim…Yardımızı bekliyorum Saygılar
(25/09/2018, 07:20)access acemisi yazdı: il alanına rakamsal değerler girince düzeldi.Şimdilik denemelerim devam ediyor.Teşekkürler
Bu mevzu ile ilgili ilk sorunuzda "Dlookup komutunu inceleyiniz" dediğimi hatırlıyorum.
objStream.WriteText "CATEGORIES:" & Dlookup ("id_il", "il", "[id_il]= " & rst!sehir) & vbCrLf
kodunu aşağıdaki gibi değiştirmeniz gerekli ki, tablodaki sehir alanında veri yok ise yerine 0 yazdırsın.
objStream.WriteText "CATEGORIES:" & Dlookup ("id_il", "il", "[id_il]= " & Nz(rst!sehir, 0)) & vbCrLf
Butonun tıklandığında olayındaki kodu aşağıdaki ile değiştirerek deneyiniz. Sadece secenek olarak belirlediğiniz kayıtları sorgulayacaktır.
Dim objStream
Dim VcardAdi, FileName, File, encode As String
Dim rst As DAO.Recordset
Dim image_bin() As Byte
Dim GSayi As Integer
VcardAdi = Format(Date, "ddmmyyyy") & "TumKayitlar.vcf"
FileName = CurrentProject.path & "\" & VcardAdi
Set objStream = CreateObject("ADODB.Stream")
objStream.Charset = "utf-8"
objStream.Open
GSorgum = "SELECT tbl_kisiler.secenek, * FROM tbl_kisiler WHERE (((tbl_kisiler.secenek)='" & Me.secenek & "'));"
Set rst = CurrentDb.OpenRecordset(GSorgum)
rst.MoveFirst
Me.etk_ilerle.Visible = True
GSayi = 0
Do Until rst.EOF
objStream.WriteText "BEGIN:VCARD" & vbCrLf
objStream.WriteText "VERSION:4.0" & vbCrLf
objStream.WriteText "N:" & rst!soyadi & ";" & rst!adisoyadi & ";" & rst!ikinciadi & ";" & rst!unvani & vbCrLf
objStream.WriteText "FN:" & rst!adisoyadi & " " & rst!soyadi & vbCrLf
objStream.WriteText "ORG:" & rst!sirketbilgisi & vbCrLf
objStream.WriteText "TITLE:" & rst!isunvani & vbCrLf
File = CurrentProject.path & "\resimler\" & rst!fotograf
If FileExists(File) = True Then
Open File For Binary Access Read As #1
ReDim image_bin(LOF(1) - 1)
Get #1, , image_bin
Close #1
encode = Replace(EncodeBase64(image_bin), vbLf, vbCrLf & Space(1))
objStream.WriteText "PHOTO;TYPE=JPEG;ENCODING=B:" & encode & vbCrLf
End If
objStream.WriteText "TEL;WORK;VOICE:" & rst!istelefonu & vbCrLf
objStream.WriteText "TEL;HOME;VOICE:" & rst!evtelefonu & vbCrLf
objStream.WriteText "TEL;CELL;VOICE:" & rst!ceptelefonu & vbCrLf
objStream.WriteText "ADR;WORK:" & rst!isadresi & ";" & rst!issehir & ";" & rst!ispostakodu & ";" & rst!isulke & vbCrLf
objStream.WriteText "ADR;HOME:" & rst!evadresi & ";" & rst!sehir & ";" & rst!evpostakodu & ";" & rst!evulke & vbCrLf
objStream.WriteText "CATEGORIES:" & Dlookup ("id_il", "il", "[id_il]= " & Nz(rst!sehir, 0)) & vbCrLf
objStream.WriteText "X-MS-OL-DEFAULT-POSTAL-ADDRESS:1" & vbCrLf
objStream.WriteText "EMAIL;PREF;INTERNET:" & rst!epostaadresi & vbCrLf
objStream.WriteText "URL;WORK:" & rst!websayfasi & vbCrLf
objStream.WriteText "NOTE:" & rst!Notlar & vbCrLf
objStream.WriteText "BDAY:" & Format(rst!dogumtarihi, "yyyy-mm-dd") & vbCrLf
objStream.WriteText "REV:" & Format(Date, "yyyymmdd") & "T" & Format(Now(), "hhnnss") & "Z" & vbCrLf
objStream.WriteText "CATEGORIES:" & Dlookup ("grupadi", "grup", "[id_grup]= " & Nz(rst!secenek, 0)) & vbCrLf
objStream.WriteText "END:VCARD" & vbCrLf
Me.etk_ilerle.Caption = rst!adisoyadi & " " & rst!soyadi
GSayi = GSayi + 1
rst.MoveNext
Loop
Me.etk_ilerle.Visible = False
objStream.SaveToFile FileName, 2
Me.etk_ilerle.Visible = False
MsgBox (GSayi & " adet veri " & VcardAdi & " isimli dosyaya kaydedildi")
rst.Close
objStream.Close
Çok teşekkür ederim ederim Sn ozanakkaya
(26/09/2018, 22:40)ozanakkaya yazdı: Bu mevzu ile ilgili ilk sorunuzda "Dlookup komutunu inceleyiniz" dediğimi hatırlıyorum.
Konuları birden kavrayamıyoruz.Kusura bakmayın.. Denemelere devam ettiğimiz sürece sizlerden çok şey öğreneceğiz.
Tam istediğim gibi olmuş Sağolasınız