Skip to main content

AccessTr.neT


Excel Tablosunda Tekrarlayan Kayıtları Access'e Taşıma

Excel Tablosunda Tekrarlayan Kayıtları Access'e Taşıma

#13
(14/02/2017, 20:19)ozanakkaya yazdı: Merhaba,

Örnek uygulamanıza 3 adet sorgu ekledim.

Formu açıp eklenen "Veri Aktar" isimli butonu tıklayınız.

Sayın Ozan bey,

Göndermiş olduğunuz sorgular için çok teşekkür ederim. Ancak ufak bir sorunum var.

Hamveri tablosuna bakarsanız 1. ve 2. satırdaki aynı hastanın, aynı tarihte, aynı ameliyat koduyla yapılmış 2 ameliyatı var. Aslında bu bir yanlış değil. Bacağının iki farklı yerinden aynı anda iki implant (platin) çıkartılmış. Bu nedenle 2 ameliyat kodu girilmiş.

Dolayısıyla Ameliyatkodu tablosunda bu hastanın her bir ameliyat kodu ve ameliyat adı (aynı olsa da) için ayrı ayrı iki  kod oluşturması gerekli. Bunu nasıl halledebilirim? (En kötü ihtimalle gönderdiğiniz haliyle de kullanabilirim.)

Şimdiden teşekkür ederim.

Bir de sorum olacak. Bu verileri ekledikten ve db kayıtları oluştuktan sonra yine 1-2 ayda bir yeni hasta verilerini Excel olarak alacağım, aynı tablo yapısında. Aynı sorguları kullanarak bunları yine ekleyebilir miyim? Fur
Eklediğim zaman, daha önceden ameliyat olmuş olan aynı hastanın bilgileri üzerine mi yazılır? Yoksa o hastalarda çakışmaya neden olup söz konusu kayıtlar eklenmez mi?

Örneğin şu anda elimdeki Excel tablosunda ozanakkaya hasta olarak eklendi, 2015'te ameliyat oldu
ozanakkaya 2017 Şubat ayında tekrar ameliyat olduğu için Mart ayındaki excelden yapacağım güncellemede veritabanındaki ozanakkaya'yı bulup o hasta için ameliyattarihi tablosuna Şubat 2017 ameliyatı eklemesi ve ameliyatkodu tablosuna Şubat 2017'ye ait ameliyat kodu eklemesi mi yapar?
Son Düzenleme: 14/02/2017, 23:13, Düzenleyen: dralioner. (Sebep: Örnek verilmesi...)
Cevapla
#14
(14/02/2017, 22:37)dralioner yazdı: Sayın Ozan bey,

Göndermiş olduğunuz sorgular için çok teşekkür ederim. Ancak ufak bir sorunum var.

Hamveri tablosuna bakarsanız 1. ve 2. satırdaki aynı hastanın, aynı tarihte, aynı ameliyat koduyla yapılmış 2 ameliyatı var. Aslında bu bir yanlış değil. Bacağının iki farklı yerinden aynı anda iki implant (platin) çıkartılmış. Bu nedenle 2 ameliyat kodu girilmiş.

Dolayısıyla Ameliyatkodu tablosunda bu hastanın her bir ameliyat kodu ve ameliyat adı (aynı olsa da) için ayrı ayrı iki  kod oluşturması gerekli. Bunu nasıl halledebilirim? (En kötü ihtimalle gönderdiğiniz haliyle de kullanabilirim.)

Şimdiden teşekkür ederim.

Merhaba,
3srg_ameliyatkodu isimli sorgunun

INSERT INTO AmeliyatKodu ( AmeliyatTarihID, AmeliyatKodu, AmeliyatAdi )
SELECT AmeliyatTarih.AmeliyatTarihID, HamVeri.AmeliyatKodu, HamVeri.AmeliyatAdi
FROM HamVeri INNER JOIN AmeliyatTarih ON HamVeri.AmeliyatTarihi = AmeliyatTarih.AmeliyatTarihi
GROUP BY AmeliyatTarih.AmeliyatTarihID, HamVeri.AmeliyatKodu, HamVeri.AmeliyatAdi;

şeklindeki Sql kodunu aşağıdaki ile değiştirerek deneyiniz.

INSERT INTO AmeliyatKodu ( AmeliyatTarihID, AmeliyatKodu, AmeliyatAdi )
SELECT AmeliyatTarih.AmeliyatTarihID, HamVeri.AmeliyatKodu, HamVeri.AmeliyatAdi
FROM HamVeri INNER JOIN AmeliyatTarih ON HamVeri.AmeliyatTarihi = AmeliyatTarih.AmeliyatTarihi;


Yeni veri aktarabilirsiniz, ancak bu kod yapısıyla yeni tabloda eski kayıtlara ait veri var ise üzerine yazacaktır. Uygulamanın düzenlenmesi gerekli. Yeni tablo eklediğinizde, önceki verilerin tamamını silip yeni verileri kaydedebilirsiniz.
Cevapla
#15
(14/02/2017, 23:34)ozanakkaya yazdı:
(14/02/2017, 22:37)dralioner yazdı: Sayın Ozan bey,

Göndermiş olduğunuz sorgular için çok teşekkür ederim. Ancak ufak bir sorunum var.

Hamveri tablosuna bakarsanız 1. ve 2. satırdaki aynı hastanın, aynı tarihte, aynı ameliyat koduyla yapılmış 2 ameliyatı var. Aslında bu bir yanlış değil. Bacağının iki farklı yerinden aynı anda iki implant (platin) çıkartılmış. Bu nedenle 2 ameliyat kodu girilmiş.

Dolayısıyla Ameliyatkodu tablosunda bu hastanın her bir ameliyat kodu ve ameliyat adı (aynı olsa da) için ayrı ayrı iki  kod oluşturması gerekli. Bunu nasıl halledebilirim? (En kötü ihtimalle gönderdiğiniz haliyle de kullanabilirim.)

Şimdiden teşekkür ederim.

Merhaba,
3srg_ameliyatkodu isimli sorgunun

INSERT INTO AmeliyatKodu ( AmeliyatTarihID, AmeliyatKodu, AmeliyatAdi )
SELECT AmeliyatTarih.AmeliyatTarihID, HamVeri.AmeliyatKodu, HamVeri.AmeliyatAdi
FROM HamVeri INNER JOIN AmeliyatTarih ON HamVeri.AmeliyatTarihi = AmeliyatTarih.AmeliyatTarihi
GROUP BY AmeliyatTarih.AmeliyatTarihID, HamVeri.AmeliyatKodu, HamVeri.AmeliyatAdi;

şeklindeki Sql kodunu aşağıdaki ile değiştirerek deneyiniz.

INSERT INTO AmeliyatKodu ( AmeliyatTarihID, AmeliyatKodu, AmeliyatAdi )
SELECT AmeliyatTarih.AmeliyatTarihID, HamVeri.AmeliyatKodu, HamVeri.AmeliyatAdi
FROM HamVeri INNER JOIN AmeliyatTarih ON HamVeri.AmeliyatTarihi = AmeliyatTarih.AmeliyatTarihi;


Yeni veri aktarabilirsiniz, ancak bu kod yapısıyla yeni tabloda eski kayıtlara ait veri var ise üzerine yazacaktır. Uygulamanın düzenlenmesi gerekli. Yeni tablo eklediğinizde, önceki verilerin tamamını silip yeni verileri kaydedebilirsiniz.

Tekrar merhaba,
Yazmış olduğunuz Sql kodu ile HastaBilgi tablosu istediğim gibi verileri ekliyor.
Ancak AmeliyatTarih tablosunda örneğin

1234567890 alioner hastasi 16.02.2017'de 1. Ameliyat Kodu
1234567890 alioner hastasi 16.02.2017'de 2. Ameliyat Kodu
1234567890 alioner hastasi 17.02.2017'de 3. Ameliyat Kodu
1234567890 alioner hastasi 17.02.2017'de 4. Ameliyat Kodu
1234567890 alioner hastasi 17.02.2017'de 5. Ameliyat Kodu

satırları için Ameliyattarihi tablosunda sadece 16.02.2017'den 1 kayıt ve 17.02.2017'den bir kayıt açması (aynı hasta için tekrarlayan ameliyat tarihi kayıtlarının açılmaması) gerekirken 16.02.2017'den 2 kayıt, 17.02.2017'den 3 kayıt oluşturmakta.

Diğer taraftan AmeliyatKodu tablosunda ise
alioner'in 16.02.2017'deki ameliyat tarihi ile ilişkili 2 kayıt, 17.02.2017'deki ameliyat tarihi ile ilişkili 3 kayıt oluşturması beklenirken 16.02.2017 ameliyat tarihinde ameliyat olmuş tüm hastaların ameliyat kodları her bir eklenmekte.

Aşağıdaki resimlerde görebilirsiniz:
[Resim: do.php?imgf=148719962400731.png]

[Resim: do.php?imgf=148719962400731.png]

[Resim: do.php?imgf=1487199624082.png]
Son Düzenleme: 16/02/2017, 02:01, Düzenleyen: dralioner. (Sebep: Resim ekleme)
Cevapla
#16
Merhaba,

Açıklamalarınızı eklediğiniz örnek uygulama üzerinden yapınız.

Eklenen örnek uygulamaya göre tablolara aktarılması gereken verileri belirtiniz.
Cevapla
#17
(16/02/2017, 01:58)dralioner yazdı: satırları için Ameliyattarihi tablosunda sadece 16.02.2017'den 1 kayıt ve 17.02.2017'den bir kayıt açması (aynı hasta için tekrarlayan ameliyat tarihi kayıtlarının açılmaması) gerekirken 16.02.2017'den 2 kayıt, 17.02.2017'den 3 kayıt oluşturmakta.

Merhaba, örnek uygulamanıza göre, her birinden 1 kayıt açılabilmesi için ameliyat tarihlerinin yanında ameliyat saatide önemli, tabloya ameliyat saatide aktarılacağından saati de hesaba katıyor. Örnek uygulamanızdaki verilerde hangi satırda bu sorun var?


(16/02/2017, 01:58)dralioner yazdı: Diğer taraftan AmeliyatKodu tablosunda ise
alioner'in 16.02.2017'deki ameliyat tarihi ile ilişkili 2 kayıt, 17.02.2017'deki ameliyat tarihi ile ilişkili 3 kayıt oluşturması beklenirken 16.02.2017 ameliyat tarihinde ameliyat olmuş tüm hastaların ameliyat kodları her bir eklenmekte.

Bu hatanın düzeltilmesi için 3srg_ameliyatkodu isimli sorgunun Sql kodunu aşağıdaki ile değiştirerek deneyiniz.

INSERT INTO AmeliyatKodu ( AmeliyatKodu, AmeliyatAdi, AmeliyatTarihID )
SELECT HamVeri.AmeliyatKodu, HamVeri.AmeliyatAdi, AmeliyatTarih.AmeliyatTarihID
FROM (HamVeri INNER JOIN HastaBilgi ON HamVeri.TCKimlik = HastaBilgi.TCKimlik) INNER JOIN AmeliyatTarih ON (HamVeri.AmeliyatTarihi = AmeliyatTarih.AmeliyatTarihi) AND (HastaBilgi.ID = AmeliyatTarih.HastaBilgiID);
Cevapla
#18
(16/02/2017, 22:04)ozanakkaya yazdı:
(16/02/2017, 01:58)dralioner yazdı: satırları için Ameliyattarihi tablosunda sadece 16.02.2017'den 1 kayıt ve 17.02.2017'den bir kayıt açması (aynı hasta için tekrarlayan ameliyat tarihi kayıtlarının açılmaması) gerekirken 16.02.2017'den 2 kayıt, 17.02.2017'den 3 kayıt oluşturmakta.

Merhaba, örnek uygulamanıza göre, her birinden 1 kayıt açılabilmesi için ameliyat tarihlerinin yanında ameliyat saatide önemli, tabloya ameliyat saatide aktarılacağından saati de hesaba katıyor. Örnek uygulamanızdaki verilerde hangi satırda bu sorun var?


(16/02/2017, 01:58)dralioner yazdı: Diğer taraftan AmeliyatKodu tablosunda ise
alioner'in 16.02.2017'deki ameliyat tarihi ile ilişkili 2 kayıt, 17.02.2017'deki ameliyat tarihi ile ilişkili 3 kayıt oluşturması beklenirken 16.02.2017 ameliyat tarihinde ameliyat olmuş tüm hastaların ameliyat kodları her bir eklenmekte.

Bu hatanın düzeltilmesi için 3srg_ameliyatkodu isimli sorgunun Sql kodunu aşağıdaki ile değiştirerek deneyiniz.

INffSERT INTO AmeliyatKodu ( AmeliyatKodu, AmeliyatAdi, AmeliyatTarihID )
SELECT HamVeri.AmeliyatKodu, HamVeri.AmeliyatAdi, AmeliyatTarih.AmeliyatTarihID
FROM (HamVeri INNER JOIN HastaBilgi ON HamVeri.TCKimlik = HastaBilgi.TCKimlik) INNER JOIN AmeliyatTarih ON (HamVeri.AmeliyatTarihi = AmeliyatTarih.AmeliyatTarihi) AND (HastaBilgi.ID = AmeliyatTarih.HastaBilgiID);


Kod:
INSERT INTO AmeliyatKodu ( AmeliyatTarihID, AmeliyatKodu, AmeliyatAdi, AmeliyatGrubu, Cerrah )
SELECT AmeliyatTarih.AmeliyatTarihID, HamVeri.AmeliyatKodu, HamVeri.AmeliyatAdi, HamVeri.AmeliyatGrubu, HamVeri.Cerrah
FROM HastaBilgi INNER JOIN (HamVeri INNER JOIN AmeliyatTarih ON HamVeri.AmeliyatTarihi = AmeliyatTarih.AmeliyatTarihi) ON (HastaBilgi.ID = AmeliyatTarih.HastaBilgiID) AND (HastaBilgi.TCKimlik = HamVeri.TCKimlik)
GROUP BY AmeliyatTarih.AmeliyatTarihID, HamVeri.AmeliyatKodu, HamVeri.AmeliyatAdi, HamVeri.AmeliyatGrubu, HamVeri.Cerrah;



Bu şekilde kodu yazdım, sanırım böyle oldu. Sizce bu kodda bir sıkıntılı durum var mı?

Anlamadığım bir şekilde AmeliyatTarihi tablosunda sorun düzeldi sanırım. (Excel'den veri aktarımını tekrar düzenledim, ben kendim yeni baştan veritabanı oluşturmak yerine sizin bana ilk gönderdiğiniz tabloda teker teker veri sütunlarını ekleyip, sorun olup olmadığını kontrol ederek ilerledim, düzeldi. Sonuçta yazılı olan aynı kod ama sorun yok. Bir yerde ben yanlış yapıyordum sanırım ama çözemedim bir türlü.)

Not: Sizin yazdığınız kod ile de deneyeceğim. İlginiz için çok teşekkür ederim. Saygılarımla.
Son Düzenleme: 17/02/2017, 01:01, Düzenleyen: dralioner. (Sebep: Kod yazım yerini kullanmak)
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task