Konu Araçları | Konu Seçenekleri | Gösterim Stili
Tarih
26/12/2009 03:56
Konu Sahibi
Hayri16
Yorumlar
8
Okunma
4185
Konuyu Oyla:
  • Derecelendirme: 2/5 - 1 oy
  • 5
  • 4
  • 3
  • 2
  • 1

Derecelendirme: 2/5 - 1 oy
Kullanici Avatari

Hayri16

Aktif Üye
 58
 1.010
 56
 12/11/2009
294
 Bursa
 
 Ofis 2007
 10/04/2018,10:30
Çözüldü 
Değerli Arkadaşlar;
Burada öğrendiklerimle kişisel bir eczane programı yapmaya çalışıyorum. Programda takıldığım bir yer var. Kısaca anlatmaya çalışayım.
SGK provizyon programının b.sayarımıza bıraktığı *.csv dosyayı(74 alan içeriyor) access'e alıp , işlemlerden geçirerek oluşturduğum tablolara aktarıyorum.
Bunun için hazırladığım formda "FRM_AKTARMA" önce ham kayıtların bazı alanlarını seçerek listeye aktarıyorum.
Tıklayınca gerekli alanları dolduruyor. Bu arada hastayı sorguluyor. Eğer TBL_HASTA_BILGI veritabanında yoksa kullanıcıya ekleyeyim mi diye soruyor. Kullanıcı ekle derse "FRM_HASTA" formu açılarak yeni hasta kaydedilmesi sağlanıyor.
1- Yeni hasta kaydedilince formdaki bilgilerde karışıklık oluyor. Yeni hasta kaydedilirken (normalde bilgilerinin bazı alanları boştur.) FRM_AKTARMA formunda başka hastaların bilgileri çıkıyor.
2- Eğer işlem yapmadan çıkış seçeneği kullanılırsa bu kez "kaynakliste" adındaki listede (formu tasarım görünümünde açıp tekrar çalıştırıldığında) son hasta kaydımızın birebir kopyası üretiliyor.
Sonuçta bu formlar arası veri aktarımında "garip işler" dönüyor Fur
İlgilenecek arkadaşlarımıza şimdiden teşekkürler. Saygılarımla...
Not: Kullanılan veriler(TC no, adres, soyad,telefon) uydurmadır. İlaç bilgileri, firma ve barkodlar gerçektir.


Ek Dosyalar
.rar   RECETE2003-3.rar(Dosya Boyutu: 485,8 KB / İndirme Sayısı: 24)
Hayri16, 12-11-2009 tarihinden beri AccessTr.neT üyesidir.

Kullanici Avatari

ozanakkaya

Kurucu
OZ.... AK....
 39
 11.603
 469
 29/01/2008
 Denizli
 Memur
 Ofis 2010 32 Bit
 Dün,22:49
Çözüldü 
Daha önce yazılan mesajları konuyu okuyacakların kafasını karıştırmaması için sildim.

hgetir = Dlookup ("last(kimlik)", "TBL_HASTA_BILGI")

kodu ile TBL_HASTA_BILGI tablosundan son kaydı alıyorsunuz ve devamındaki kodlarla bu kimlik numarasına göre forma son kayıttaki verileri aktarıyorsunuz.

devamında da KAYNAK tablosundaki ilk kayıt değiştiriliyor,
Private Sub hasta_kontrol()

kodunu

Kod:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    If IsNull(hgetir) Or hgetir = 0 Or hgetir = "" Or hgetir = Empty Then  'yoksa yeni hasta kayıt formunu açıp hastayı ekleyeceğiz
        mesaj = MsgBox("Bu isimli kişi Hasta veritabanında kayıtlı değil." & Chr(13) & "Şimdi Eklemek ister misiniz?", _
        vbCritical + vbYesNo, _
        "<<HASTA BULUNAMADI>>")
             If mesaj = vbYes Then
             DoCmd.OpenForm "FRM_HASTA"

strSQL = "SELECT * FROM TBL_HASTA_BILGI "
Set rstkayit = New ADODB.Recordset
rstkayit.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
With rstkayit
.AddNew
.Fields("adi") = Me.Alan4
.Fields("soyadi") = Me.Alan5
End With
             Else
             Exit Sub
             End If
    Else
    End If


FROM TBL_HASTA_BILGI tablosuna yeni kayıt açtırıp adı ve soyadını kaydedilmesini sağla. (tc kimlik no alanı gerekli değil olarak değiştir)

FRM_HASTA formundaki

Private Sub yenikayit()

koduna yazdığın
.addnew

kodunu
.movelast
(az önce yeni kayıt ekledik, movelast ile son kaydı düzenliyoruz)
olarak değiştir.

ayrıca

FRM_AKTARMA formunun kayıt kaynağı KAYNAK tablosu, yapılan her işlem 1. kayıt üzerinden gerçekleştiriliyor, bu yüzden aynı veriden 2 tane oluşuyor.

yazılan bir koddan dolayı KAYNAK tablosundaki ilk kayıt değiştiriliyor.


"Boş Örnek Eklerim, Yapıp Verirler" demeyin, örneğinizi hazırlayın.
Komplike kod talebiniz var ise İletişim bağlantısından bize ulaşın. 
Cebelleşmezsen Öğrenemezsin. 

Kullanici Avatari

Hayri16

Aktif Üye
 58
 1.010
 56
 12/11/2009
294
 Bursa
 
 Ofis 2007
 10/04/2018,10:30
Çözüldü 
Sayın sledgeab;
Gecenin o saatinde ben bile dayanamayıp yatmak zorunda kaldım. Siz ise devam edip çözüm üretmeye çalışmışsınız. Çok sağolun. Önerilerinizi uygulamaya çalışıyorum. Denedikten sonra bilgi vereceğim. Saygılarımla


Hayri16, 12-11-2009 tarihinden beri AccessTr.neT üyesidir.

Kullanici Avatari

ozanakkaya

Kurucu
OZ.... AK....
 39
 11.603
 469
 29/01/2008
 Denizli
 Memur
 Ofis 2010 32 Bit
 Dün,22:49
Çözüldü 
dlookupu çok yanlış kullanmışsın, tablonun kayıt kaynağı hasta tablosu, Dlookup ile hasta tablosundan veri almışsın. Kodların neredeyse tamamı Dlookup .
ekteki örneği incele


Ek Dosyalar
.rar   sled_RECETE2003.rar(Dosya Boyutu: 491,35 KB / İndirme Sayısı: 60)
"Boş Örnek Eklerim, Yapıp Verirler" demeyin, örneğinizi hazırlayın.
Komplike kod talebiniz var ise İletişim bağlantısından bize ulaşın. 
Cebelleşmezsen Öğrenemezsin. 

Kullanici Avatari

Hayri16

Aktif Üye
 58
 1.010
 56
 12/11/2009
294
 Bursa
 
 Ofis 2007
 10/04/2018,10:30
Çözüldü 
Sayın sledgeab;
Öncelikle çok teşekkür ederim.Programı baştan aşağı gözden geçirmiş , mantığını kavramaya çalışmışsınız.
Evet haklısınız çok Dlookup fonksiyonu kulandım. Çünkü programı yazmaya başladığımda başka türlü nasıl yapılır bilmiyordum. Şimdi Ado ile de yapılabileceğini biliyorum. Program genel hatlarıyla bitince onları ve diğer bazı kodları değiştirmeyi düşünüyorum.
Sizin değitirdiğiniz örneğe gelince;
1- Listeye clicklediğimizde liste kutusu geçici olarak kayboluyor
2- Listede gezinirken hasta veritanabında kayıtlı olmayan hastanın (bilgilerini kaynaktan almayan ) alanları başka kayıtlardan geliyor. Tüm alanlar dolu gözüküyor.
3- Öğrenmek amacıyla aşağıda eklediğiniz kodun ne iş yaptığını sorabilir miyim?

Kod:
1
2
3
4
5
6
7
8
9
10
Private Sub kaynakliste_AfterUpdate()
On Error GoTo hata:
  ' Denetime uyan kaydı bul.
    Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Kimlik] = " & Str(Nz(Me![kaynakliste], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
hata:     Exit Sub
End Sub

bu kodu neden clicke değil de afterUpdateye koyduk.
Zahmet verdiğimin farkındayım. Bu kadar çabanız bile şükran duymama için yeterli. Saygılarımla kalın sağlıcakla.


Hayri16, 12-11-2009 tarihinden beri AccessTr.neT üyesidir.

Kullanici Avatari

Hayri16

Aktif Üye
 58
 1.010
 56
 12/11/2009
294
 Bursa
 
 Ofis 2007
 10/04/2018,10:30
Çözüldü 
Sayın sledgeab;
Sorunu şimdilik erteledim. Şöyle geçici bir çözüm buldum. Bir form daha yaptım. Eğer hasta yoksa sadece yeni kayıt yapılabilen forma, eğer varsa ve bilgileri eksikse sadece güncelleme yapılabilen forma gönderdim. İleride tekrar dönüp üzerinde değerlendirme yapacağım. Her şey için sonsuz teşekkürler.


Hayri16, 12-11-2009 tarihinden beri AccessTr.neT üyesidir.


Konuyu Okuyanlar: 1 Ziyaretçi

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Çözüldü Bir Veri Kutusunun Değerini, Başka Bir Veri Kutusuna Bağımlı Yapabilir Miyim ? A_day 10 194 18/11/2018, 22:24
Son Yorum: A_day
Çözüldü Kimlik Aktarımı Hakkında notrino 1 95 22/10/2018, 20:39
Son Yorum: ozanakkaya
Çözüldü Alanlar Arası Veri Aktarma kübrashn 8 342 30/07/2018, 18:14
Son Yorum: kübrashn
Çözüldü İki Tarih Arası Rapor Almak m_demir 6 405 22/07/2018, 21:00
Son Yorum: m_demir
Çözüldü Formlar Arası Belirli Bilgilerin Aktarımı ALTANs 1 251 01/07/2018, 03:36
Son Yorum: myAccess

Türkçe Çeviri: MCTR, Yazılım: MyBB, © 2002-2018 MyBB Group.