PDA

Tam Sürümünü Görmek İçin : aceess__ vba ile tabloya stun eklemek yada silmek özelliğini belirtmek


realperest
29/01/2003, 11:01
Merhaba,
Access te veritabanı içerisinde bulunan tablolardan istediğimizin stunlarından birini kod ile (yani form üzerinden basacağımız bir buton ile) silebilir yada yeni bir tane ekleyebilirmiyiz ? Tabi yeni bir tane eklemek deyince özelliklerini falan da belirtmek gerekecek


acemi
29/01/2003, 19:06
Yapilabilir. Bunun icin ADOX koleksiyonunu kullanman gerekiyor. Verilere ulasmak icin kullanilan ADO koleksiyonuna benzer bir sey ama bu koleksiyondaki nesneler, veritabaninin yapisini degistirmek icin kullaniliyor.

ADOX konusu oldukca genis bir konu. Bazi ornek kodlar ve baslangic bilgisi icin:
http://www.codeguru.com/mfc_database/ADOX_in_details.html

(Net'te bu konuyla ilgili oldukca fazla kaynak var)

realperest
31/01/2003, 16:47
Merhaba, ADOX falan karıştırmadan önce yapmak istediğimi tam olarak anlatmaya çalışayım.

İşletmede her hizmet önceden ayrı bir tabloda tanımlanmış ve her hizmetin bir fiyatı da hizmet tanımlanırken belirtilmiş ve tanım_hizmetler diye bi tabloda var
bir müşteri geldiğinde bu müşteriye yapılacak işlemler kayıtlanırken otomatik olarak fiyatlarda gelecek, daha sonra bu fiyatlardan ayrıca % belirterek indirim faan yapılabilir bunun şimdilik benim yapmak istediğimle bir alakası yok.
Ama dedim ya müşteri gelecek diye işte bu müşterilerden bazıları anlaşmalı kurumlar aracılığı ile gelebilir. İşte o zaman her anlaşmalı kuruma ayrı bir fiyat listesi yapmam gerekiyor (çünki hepsi aynı şekilde ücretlendirimiyor) Ve bu anlaşmalı kurumlar hep sabit değil mesa daha önce anlaşma yapmadığımız bir kurumla sonradan anlaşma yapabilir ona ait ayrıca bir fiyatlandırma yapabiliriz.
Benim aklıma ilk gelen hizmeti tanımlarken anlaşmalı kurum adını taşıyan bir stun eklemek orayada o anlaşmalı kuruma ait fiyatını kaydetmek idi. Tabi dedim ya bazı anlaşmalar ortadan kalkabilir veya yeni bir kurumla yeni bir anlaşma olabilir diye o yüzden o hizmetlerin tanımlandığı tabloya kod ile stun eklemek yada anlaşma yürürlükten kalktığında o stunu ortadan kaldırmak gerekebilir diye düşünmüştüm.
Ama belkide çok daha kolay bir yöntemi vardır.
Mesela ilişkilendirme ile falan belkide basitçe halledilebilecek bir şey olablir. Ama benim en zayıf olduğum yer ilişkilendirme bir türlü tam manasıyla anlayamadığım için bu şekilde düşünemiyorum.

Biraz karışık oldu ama umarım anlaşılmıştır.
Soru sorarsanız sanırım daha iyi anlaşılır. benim için önemli programın en önemli noktası !!!

acemi
31/01/2003, 18:53
Gelen ve giden musteriye gore veritabani yapisinda degisiklik yapmani gerektiren tasarim, kotu bir tasarimdir. Programin bakimini zorlastiracagi gibi, ilerleyen zamanlarda programa yeni ozellikler eklenmesini, gelistirilmesini de engelleyecektir.

Bence yapman gereken sey, fiyat bilgilerini hizmetler tablondan cikarip baska bir tabloya girmek. Yeni olusturulacak bu tabloda su alanlar olacak:

KayitNo (primary key, autonumber)
HizmetNo (Hizmetler tablosuyla iliskili)
FiyatGrupNo (FiyatGruplari tablosu ile iliskili)
Fiyat (Currency veya double number)

FiyatGruplari tablosunda Normal, A grubu fiyatlandirma, B grubu fiyatlandirma gibi secenekler olacak.

realperest
01/02/2003, 11:34
Merhaba,

Ama benim sorunum tabloyu ayırsamda yine devam edecek. Çünki ben anlaşmalı kuruma göre fiyatlandırma yapmak zorundayım.
Yaklaşık 15-20 tane anlaşmalı kurum var (artabilir/azalabilir) her hizmetin bu kurumlar içinde bir fiyatı olmalı. Yani normal bir fiyatım ve de her anlaşmalı kurum için tek tek bir fiyatım. Bence bunu ayrı tabloda tutsamda aynı tabloda tutsamda yani fiyat yazan stunun yanına bir stun daha koyup YAPIKREDİ MÜŞTERİLERİ, ABC FABRİKASI ÇALIŞANLARI gibi.... olması gerekecek
Ne dersiniz........

realperest
01/02/2003, 11:37
Sonuçta yapmak istediğim............

Müşteri gelecek, buna yapılan hizmetlere ait hizmet fişi kullanıcı tarafından doldurulurken açılan kutudan hizmet adını seçecek bu seçimle aslında fiyatlarını da içeren stunları seçecek. Bu arada eğer formun üstbilgi kısmında ANLAŞMALI KURUM KODU kutusu boş ise NORMAL fiyatı fişteki fiyat stununa yazacak, eğer ANLAŞMAI KURUM KODU herhangi bir seçim ile doldurulmuşsa bu sefer seçimdeki stunlardan ANLAŞMALI KURUM KODU ile eşleşen stundaki fiyatı fişin fiyat stununa yazacak.

acemi
01/02/2003, 13:42
Tabloyu ayirinca sorun devam etmeyecek cunku bu tabloda her grup icin kullanilacak fiyat olacak. Bu tablodaki veriler soyle birsey olacak:

1 - Hizmet01 - Normal - 18.000.000 TL
2 - Hizmet02 - Normal - 17.000.000 TL
3 - Hizmet01 - Kurum A - 15.000.000 TL
4 - Hizmet02 - Kurum A - 13.000.000 TL
5 - Hizmet01 - Kurum B - 14.000.000 TL
6 - Hizmet02 - Kurum B - 12.000.000 TL

realperest
03/02/2003, 13:57
Yani her hizmeti anlaşmalı olduğum kurum sayısı kadar mı gireceğim veritabanına
Yok ya bu bence böyle olmamalı....... Daha basit bi yöntemi olmalı mutlaka ama nasıl
Senin önerdiğin gibi de yapsam bu anlaşmalı kurum ile olan anlaşmam sona erince o kayıtlar veritabanından nasıl ayıklanacak yada daha zoru yeni bir kurum ile anlaşma yapınca nasıl ekleyeceğim bunları veritabanına
Bu işi çözen birileri var yalnız onu biliyorum. Nasıl yapmışlar bilmiyorum ama bu şekilde fiyatlandırmaya izin veriyor programları ama bu program bir DOS tabanlı program ve btrieve veritabanı kullanılmış. Ben de bu veritabanının tablolarının yapısını göremiyorum bir türlü. Onları bir inceleme şansım olsaydı nasıl tablolama yapmışlar yada nasıl ilişkilendirme yapmışlar anlayabilirdik.

acemi
03/02/2003, 15:58
Yani her hizmeti anlaşmalı olduğum kurum sayısı kadar mı gireceğim veritabanına
Yok ya bu bence böyle olmamalı....... Daha basit bi yöntemi olmalı mutlaka ama nasıl

Eger her kurumun fiyat listesi farkli oluyorsa, her hizmetin (sadece) fiyatini, anlasmali oldugun kurum sayisi kadar gireceksin. Her kurumun fiyat listesi, normal fiyatin bir katsayi ile carpimi degilse, baska turlu yapma imkanin zaten yok. Her biri icin fiyati tek tek girmen gerekiyor.

Yalniz veritabaninin yapisi/karmasikligi/kayit adedinin coklugu ayri konu, bu verileri islemenin kolayligi-zorlugu ayri konu... Verilerin kolay islenmesi, kullanici arayuzu ile ilgili bir konu. Veritabaninin yapisiyla dogrudan alakali bir konu degil.

Mesela yeni bir kurum geldiginde, "bu kurum icin, normal fiyatlarin %10 indirimli hali olacak sekilde bir liste hazirla " diyebilir ve sonra bu liste uzerinde tutmayan fiyatlarda manuel olarak oynama yapabilirsin.

Eger ayni fiyat listesini kullanan farkli kurumlar varsa, bunlarin her biri icin yeni fiyat listesi hazirlamana gerek yok.

realperest
04/02/2003, 15:58
Yav abicim sen nasıl adamsın yaavvv ne yapmaya çalıştığımı tam olarak anlamışsın ama ben senin dediğini tam olarak anlamadım. Aslında anladım ama bunları nasıl yapacağımı anlayamadım. Bunlar için bir bire ilişkili iki ayrı aslında iki değil kurum sayısı kadar ve birde normal fiyatlar için tablo yapmak gerekiyor bunların her birini bir ana hizmet tanım tablosuna ilişki kurarak bağlamak gerekiyor heralde ama işte ben bu işi hiç bilmiyorum. Ne tür ilişki, hangi alanlar arasında ilişki işte buralarda takılıyorum.
Bana bunu bi örnekle göstersen (Eğer zamanın varsa tabi) yada ben veritabanını sana göndersem bu dediğimi sen kendine göre yapsan bende senin yaptığına benzeyen bir şeyi sonra rahatlıkla yapabilirim sanıyorum.

acemi
04/02/2003, 17:40
Bunlar için bir bire ilişkili iki ayrı aslında iki değil kurum sayısı kadar ve birde normal fiyatlar için tablo yapmak gerekiyor

Her bir kurum icin ayri tablo olmayacak. Zaten sisteme eklenen bir kurum, yeni tablo eklememizi gerektiriyorsa, bu da kotu tasarim demektir.

Butun kurumlar icin olan fiyatlar (ve normal fiyatlar), yukarida kabaca acikladigim tek bir tablo icinde yer alacak. Bu tablodaki her bir kayitta: bir fiyat, bu fiyatin hangi hizmet icin oldugu ve bu fiyatin hangi kurum icin oldugu yer alacak.


Ne tür ilişki, hangi alanlar arasında ilişki işte buralarda takılıyorum. Bana bunu bi örnekle göstersen...
Su an kullandigin tablolar ve alanlar hakkinda bilgi verirsen, senin proje uzerinde nasil olmasi gerektigini yazabilirim. Ozellikle su an kullandigin hizmetler, musteriler tablolarinin alanlari hakkinda...


yada ben veritabanını sana göndersem bu dediğimi sen kendine göre yapsan bende senin yaptığına benzeyen bir şeyi sonra rahatlıkla yapabilirim sanıyorum.
Mevcut veritabaninin bir ornegini Internet'ten download edebilecegim bir yere koyabilirsen, uygun bir anda bakabilirim. Bunun icin www.kolaymail.com 'u kullanabilirsin.

(Veritabaninda ozel bilgiler varsa, silmeyi unutma)

realperest
05/02/2003, 18:00
Dosya çok ufak bi şey (yaklaşık 800 kb)

o yüzden mail@e.....com adresine göndersem olurmu

acemi
05/02/2003, 18:24
Benzer sorunlari olanlarin da yararlanabilmeleri cin yapilanlarin, herkesin takip edebilecegi sekilde yapilmasi bence onemli. O nedenle "Internet'ten download edilebilecek bir yere koyabilirsin" demistim.

Dosyayi aldim. Inceledikten sonra tablo yapisinin nasil olmasi gerektigini buraya yazarim.

acemi
05/02/2003, 18:52

acemi
05/02/2003, 18:55
Konuyla dogrudan alakasi olmasa da gorduklerimi buraya yaziyorum:

Hata : Hasta bilgilerinin yer aldigi TANIM_HASTA tablosunda HASTAADI, DOGUMTARIHI ve BABAADI alanlari primary key (anahtar alan) yapilmis.

Sanirim yapmak istedigin, bu 3 bilgisi ayni olan ikinci bir hasta kaydinin kabul edilmesini engellemek. Bunun icin primary key (anahtar alan) degil, index kullanman daha dogru.

TANIM_HASTA tablosunda primary key (anahtar alan), autonumber tipindeki SIRA adli alan olmali.

3 alandan degil de, 1 alandan olusan primary key kullanilmasi, tablo baglantilarini ve dolayisi ile tasarimi kolaylastiracaktir.

3'lu index icin menuden:
* Views -> Indexes'i ac.
* Siradaki ilk bos satirin Index Name bolumune AD_DT_BABAADI yaz.
* Field Name bolumu icin HASTAADI alanini sec.
* Alt satira gec. Index Name bolumunu bos birakip Field Name bolumu icin DOGUMTARIHI alanini sec.
* Alt satira gec. Index Name bolumunu bos birakip Field Name bolumu icin BABAADI alanini sec.
* Index Name bolumune AD_DT_BABAADI yazdigin satira tikla ve altta beliren Unique secenegini Yes yap.

acemi
05/02/2003, 19:09
Hata : TANIM_HIZMETLER tablosunda KDVli ve KDVsiz fiyat icin iki ayri alan kullanilmis. Bir de KDV oranini gosteren ayri bir alan var.

Birbirinden turetilebilecek veriler icin ayri alan acmaman gerekir. Bu, gereksiz yere dosyanin buyumesine, islemlerin uzamasina, daha fazla hafiza kullanilmasina neden olur.

Tabloda sadece KDVli fiyat ve (eger her hizmet icin KDV orani degisiyorsa) KDV orani icin alan olustur. KDVli fiyat gerektigi zaman, gerekli matematiksel islemleri yapip veriyi turetebilirsin.

Eger KDV orani, hizmete bagli degilse (ornegin calisilan kuruma bagliysa) veya butun hizmetler icin degeri ayniysa, bu alanin da, TANIIM_HIZMETLER tablosunda olmamasi gerekiyor.

acemi
05/02/2003, 19:21
Tavsiye : TANIM_LAB tablosunda 50 karakter uzunlugunda ve text tipindeki LABADI alanini primary key (anahtar alan) yapma. O tabloda, autonumber tipindeki SIRA adli alani, primary key (anahtar alan) yap.

LABADI sutununda tekrari onlemek icin index kullan.

Primary key'ler tablolari iliskilendirmek icin de kullanildigi icin iliski kurulacak tabloda da ayni tipte bir alan olmasi gerekiyor. Autonumber alanlar aslinda long integer (uzun tamsayi) tipinde olduklari icin 4 byte yer kaplarlar. Eger iliski, autonumber alan uzerinden yapilirsa, diger tabloda 4 byte'lik long tipinde bir alan yaratmamiz yeterli olacaktir. Diger turlu, 50 byte uzunlugunda bir text alan yaratmamiz gerekecek ki bu da gereksiz yere tabloyu buyutmemize neden olacak.

Ayrica sayisal alan uzerinden yapilan iliskilendirmelerde, islemler daha hizli gerceklesir.

acemi
05/02/2003, 20:38
Tavsiye : Tablolara, formlara, alanlara v.b. ad verirken daha iyi bir sistem kullanmalisin. Su an kullandigin yontem, ozellikle kod yazmaya basladiginda cok karisikliga neden olur.

Ornegin farkli tablolarda ayni adli alanlar var (SIRA gibi...). Iliskilendirmelerde, birkac tabloyu kapsayan sorgularda ve kod yazarken bu, karisikliga neden olabilir.


Ornegin hasta bilgilerinin yer aldigi tablo icin tbl_hasta adini kullanabilirsin. Bu tabloya ait alanlar (field) icin fld_hasta_sira, fld_hasta_ad, fld_hasta_dogumtarihi gibi adlar kullanabilirsin.

Ornegin kan gurubuna gore hastalari sorgulayan sorgu (query) icin qry_hasta_kangrubu gibi bir sorgu adi kullanabilirsin.

Yeni gelen hastalari kaydeden form icin frm_hasta_kayit gibi bir ad kullanabilirsin.

acemi
05/02/2003, 22:04
Sadece ilgili tablolarin yer aldigi bir ornegi buradan download (http://acemi17.kolayweb.com/realperest.mdb) edebilirsin.

realperest
06/02/2003, 10:53
Evet dediğin gibi ADSOYAD benzerliğine karşı bu şekilde 3 lü anahtar yapmıştım. Tabii ben index lemeyi kullanmayı bilmiyordum. Şimdi sayende öğreneceğim.

Dediklerini uyguluyorum.

Teşekkürler.....

realperest
06/02/2003, 14:50
Çok teşekür ediyorum. Evet Kurum fiyatlandırma konusunu halletmiş bulunuyoruz.

Ancak hem senin örnek tablonda gördüğüm hemde tavsiyelerinin içine yazdığın ilişkilendirme için kullanılacak alanın sayısal özellikte olması. çok hayati ve önemli bir tercihmidir. Yoksa olmasa da olur. Çünki sayısal alanları ilişkilendirince tablolardan bu işin takibi biraz zorlaşıyor. Mesela anlaşmalı kurum adı değilde kodu görünüyor tabloda. bu sefer bir de adını gösteren bir alan koysam tablo genişleyecek. Sadece anlaşmalı kurum adını bulundursam tabloda bu sefer ilişkilendirme de senin dediğin gibi sayısal alanları kullanmamış olacağım.
SEN YİNE DE SAYISAL ALAN OLSUN DA TAKİBİ BİRAZ ZORMU OLSUN DERSİN, YOKSA İSTEDİĞİN GİBİ YAP O KADAR DA PERFORMANS VARKI OLMAZ MI DERSİN

acemi
06/02/2003, 15:40
Ancak hem senin örnek tablonda gördüğüm hemde tavsiyelerinin içine yazdığın ilişkilendirme için kullanılacak alanın sayısal özellikte olması. çok hayati ve önemli bir tercihmidir.
Evet, cok onemli bir tercihtir. Kesinlikle ornekte oldugu gibi yap.


Çünki sayısal alanları ilişkilendirince tablolardan bu işin takibi biraz zorlaşıyor. Mesela anlaşmalı kurum adı değilde kodu görünüyor tabloda.
"Tablolarin tasarimi" ve "verilerin islenmesinin zorlugu-kolayligi" birbirinden bagimsiz iki ayri konu... Tablolarin bu sekilde tasarlanmis olmasi, kullanici arayuzlerinin kullanissiz olmasini gerektirmiyor.

Dosyaya ornek bir form da eklemistim. Ona baktin mi?


Mesela anlaşmalı kurum adı değilde kodu görünüyor tabloda. bu sefer bir de adını gösteren bir alan koysam tablo genişleyecek.
Eger iliskilendirilmis tabloya, kurum adini da gosteren bir alan eklersen buyuk bir suc islemis olursun. Cezasi cok agirdir.

Iliskili veritabani sistemleri, zaten bu tip gereksiz tekrarlari yapmayalim diye cikmis. Bu sistemi dogru kullandiginda, zaten bu tip seyler yapma geregi hissetmeyeceksin. Iliskili tablolari, elimizde sadece bir tablo varmis gibi kullanabilecegini unutma.

SEN YİNE DE SAYISAL ALAN OLSUN DA TAKİBİ BİRAZ ZORMU OLSUN DERSİN, YOKSA İSTEDİĞİN GİBİ YAP O KADAR DA PERFORMANS VARKI OLMAZ MI DERSİN
"Sayisal alan olsun" derim. Zaten bu sekilde takip etmesi zor da degil. Iliskilendirmeyi fazla kullanmamis oldugun icin sana oyle geliyor.

realperest
06/02/2003, 17:02
Tamamdır öyleyse

daha önceden test edilip onaylanmış bir şeyden korkmama gerek yok.
Dediğin gibi yapacağım. Zaten ilişkilendirmeyi daha sık kullanınca mantığınıda iyice anlarım.

İlgi ve yardımın için çok teşekkür ederim.

realperest
07/02/2003, 11:17
Son olarak bu konuyla ilgili iki şey daha soracağım.

Ben demiştim ya tablodan sadece sayıları görmek istimiyorum bu zor oluyor diye galiba bunun da bi kolayını buldum. Senin yaptığın gibi iki stunlu yapıyorum ama ilk sutunun genişliğini 0 (sıfır) olarak giriyorum böylece ilk stundaki değer o alanın değeri olmasına rağmen görünmüyor. onun yerine ikinci stundaki o değerin karşılığı görülüyor. Bu bi problem yaratmaz değilmi ?

Birde senin gönderdiğin örnek tabloları inceleyince hiç birisinde primary key belirlemediğini farkettim. Ve bunu merak ediyorum. Bunun özel bi nedeni varmı ?
Bir tabloya anahtar alan eklemezsek ne olur, eklersek ne olur ?

acemi
07/02/2003, 12:05
Ben demiştim ya tablodan sadece sayıları görmek istimiyorum bu zor oluyor diye galiba bunun da bi kolayını buldum. Senin yaptığın gibi iki stunlu yapıyorum ama ilk sutunun genişliğini 0 (sıfır) olarak giriyorum böylece ilk stundaki değer o alanın değeri olmasına rağmen görünmüyor. onun yerine ikinci stundaki o değerin karşılığı görülüyor. Bu bi problem yaratmaz değilmi ?

Bu bir problem yaratmaz. Tersine, cok sik kullanilan bir yontemdir.

Birde senin gönderdiğin örnek tabloları inceleyince hiç birisinde primary key belirlemediğini farkettim. Ve bunu merak ediyorum. Bunun özel bi nedeni varmı ?

Tekrar bendeki ornegi kontrol ettim, gonderdigim butun tablolarda primary key (anahtar alan) var. Senin neden bunlari goremedigini anlayamadim.

Iliskiler (relationship) sayfasina baktiginda, tablo baglantilarini gorebiliyor musun peki?

Bir tabloya anahtar alan eklemezsek ne olur, eklersek ne olur ?
Her tablonun mutlaka anahtar alani olmalidir. Bu, o kadar onemlidir ki bazi veritabani sistemleri, anahtar alani olmayan tablo yaratmamiza bile izin vermez.

Anahtar alani olmayan bir tabloyu, iliskilendirmelerde ana tablo olarak kullanamayiz.

Her kaydin/satirin (record) tek olmasini saglayan bir alan olmazsa (ki buna zaten anahtar alan deniyor), tablo icinde birbirinin tamamiyla ayni kayitlar olabilir. Bu da, tablo ile yapilacak bazi islemlerde SQL komutlarindan faydalanamamamiza ve daha karisik/uzun kodlar yazmak zorunda kalmamiza neden olur.

Eger tablomuzdaki hicbir alan, anahtar alan olmak icin gerekli ozelliklere sahip degilse, autonumber bir alan ekleyip onu anahtar alan yapmamiz dogru olur.

realperest
07/02/2003, 13:51
Evet yaa ben de bakıyorum şimdi bende görüyorum , ilişkileri zaten deminde görüyordum.

Neden demin göremedim ki yada kafa karışıklığı ile başka bi yere bakmış falan da olabilirim.

realperest
10/02/2003, 09:27
Tekrar merhaba, Acemi bi sorum daha olacak bu konuyla ilgili bir sorum daha var senin gönderdiğin veritabanını kendime göre uyarlayarak oluşturduğum formları veritabanına ekleyerek

http://realperest.kolayweb.com/realperest.mdb
adresine koydum. ( Bu formda link vermek nasıl oluyor bi ara onuda öğrenmeliyim)
TBL_TANIM_ANLKURUM formuna bakarsan orada alt form olarak o anlaşmalı kuruma uygulanacak fiyatları belirleyebiliyorum. ama orada eğer daha önce bu alana bir hizmet karşılığı bir fiyat girdiysem görülüyor. Bunun yerine o alt formun içinde o ana kadar tanımlanmış bulunan bütün hizmetlerin alt alta sıralanmasını ve gerekli görülenlerin karşısındaki fiyatı hanesinin doldurulmasını sağlayabilirmiyim.

Aynı şey TBL_TANIM_HIZMET tablosunda da var orada da alt formda listelenen anlaşmalı kurumların sadece o hizmete fiyatı belirlenmiş olanlarının değilde, bütün anlaşmalı fiyatların listelenmesini sağlayıp gerekenlerin fiyatı hanesine giriş yapabilirmiyim.

realperest
17/02/2003, 13:50
Biraz fazla şey istedim gibi bi his oluştu.......

acemi
17/02/2003, 15:39
Bu ikisini de yapmak mumkun ama olay basit SQL komutlarinin kapasitesini biraz asti. Cesitli asamalarda calisacak fonksiyonlari yazmak gerekiyor.

Ornegin yeni hizmet eklendiginde, butun kurumlar icin otomatik olarak bir kaydin olusturulmasi; bir kurum eklendiginde, mevcut hizmetlerin bir listesini alip bu kurum icin gerekli kayitlarin eklenmesi gerekiyor. Yani VBA ile kod yazmak, biraz daha karmasik SQL komutlariyla calismak gerekiyor.

Eger bunlarla ugrasmaya hazirsan, neler yapilacagini tarif edebilirim. Ama fazla karisiksa hic baslamayalim diyorsan, baska cozum bakalim.

realperest
17/02/2003, 16:31
Merhaba,

Bu projenin en önemli yeri işte burası yani burada anlaşmalı kurumlarda kullanıcının hata yapmamasını sağlamalıyım. Senin önerdiğin olay çok güzel ve aslında korktuğumdan çok ta anlaşılır bi şey ama burada eminim ki kullanıcı bazı anlaşmalı kurumlara bazı hizmet fiyatlarını atamayı unutacak oradan tek tek anlaşmalı kurumları seçerken atlayacağı bi kaç kurum mutlaka olacak diye düşünüyorum.
Ben bu gün çapraz sorguyu sihirbazı kullanarak denedim o sorgu işte tam bu benim dediğim gibi netice veriyor. Bu iki tablonun bir çapraz sorgusunu yapıp bunu alt form olarak ana forma eklediğimde anlaşmalı kurumların hepsi görünüyor. Ama bir problem var ki BU BİR SORGU yani bu sorguyu tabloya dönüştürebilsem neredeyse meseleyi halletmiş olacağım. Bunun için tablo yaratma sihirbazı var ama bu işlemi de her kayıttan sonra yenilemek gerekiyo ve bu işlem için kullanıcıya 3-4 tane soru soruyor. Bu soruları ortadan kaldırıp, otomatik olarak (yani kod ile bir olaya bağlayarak) bu işlemi yaptırırsak bu bile sorunumu çözer. İstersen önce benim el yordamı ile buldurmaya çalıştığım bu işleme bi usta gözüyle bir bak. Ama olmayacak bir şeyle uğraşıyorsam. Sen olacak çözümü söylersin zaten. İstersen binem uğraşılarımı gösteren bir veritabanı dosyasını göndereyim.

Yeni şeylere başlamak, öğrenmek benim reddedemeyeceğim bi şey ama bunun için sana biraz zahmet vereceğim yine. Daha kolay çözümleri varsa onlarda olur. Ama yeni bir şeyler tarif edecek birisini bulmuşken hiç reddetmem.

bu arada bu forma giriş yapmadan mesaj yazıp sonra hemen alttaki kutulara ismimi ve şifremi girip gönder tuşuna basınca bu mesajı göndermiyor. Bir arıza olabilir diye bildiriyim dedim.

acemi
17/02/2003, 17:47
Bu projenin en önemli yeri işte burası yani burada anlaşmalı kurumlarda kullanıcının hata yapmamasını sağlamalıyım ..... ama burada eminim ki kullanıcı bazı anlaşmalı kurumlara bazı hizmet fiyatlarını atamayı unutacak oradan tek tek anlaşmalı kurumları seçerken atlayacağı bi kaç kurum mutlaka olacak diye düşünüyorum.
Oyleyse yeni bir kurum eklendiginde, mevcut hizmetler bu kurum icin otomatik olarak yaratilmali. Ayni sekilde yeni bir hizmet eklendiginde, bu hizmet butun kurum listelerine eklenmeli.

Bir de her hizmet ve kurum formuna "listede yer almayan/unutulmus olan kayitlari goster" butonu eklenebilir. Cesitli asamalarda bazi uyari mesajlari ile kullanici uyarilabilir.


Ben bu gün çapraz sorguyu sihirbazı kullanarak denedim o sorgu işte tam bu benim dediğim gibi netice veriyor. Bu iki tablonun bir çapraz sorgusunu yapıp bunu alt form olarak ana forma eklediğimde anlaşmalı kurumların hepsi görünüyor. Ama bir problem var ki BU BİR SORGU yani bu sorguyu tabloya dönüştürebilsem neredeyse meseleyi halletmiş olacağım.
Zaten sana onerdigim fiyatlar tablosu, bu capraz sorgunun tablo karsiligi oluyor.


İstersen önce benim el yordamı ile buldurmaya çalıştığım bu işleme bi usta gözüyle bir bak. Ama olmayacak bir şeyle uğraşıyorsam. Sen olacak çözümü söylersin zaten. İstersen binem uğraşılarımı gösteren bir veritabanı dosyasını göndereyim.
Veritabani icin link verirsen iyi olur.


Daha kolay çözümleri varsa onlarda olur.
Bence en dogru cozum, su an uzerinde calistigimiz. Daha kolay cozumler, ileride sorun cikarabilir. Ornegin uygulama esnekligini kaybeder, yeni gelismelere uyum saglamasi zorlasir.




Once calistigin ornege bakip sonra somut seyler yazacagim.

realperest
18/02/2003, 14:22
Merhaba,

Evet işte yeni bir kurum eklendiğinde OTOMATIK olarak o yeni eklenen kuruma ait hizmetler listesi, yeni bir hizmet eklendiğinde kurumların hizmetler listesine yine OTOMATIK olarak eklenmesi o listede görünsün de rakamsal bir değeri hemen atamak zorunda değiliz ama ilk fiyat güncellemesi yaparken yada bi kaç gün sonra yapılacak rastgele incelemede farkedilip fiyat eklenebilsin. Ama ilk örnekte gösterdiğin yöntemle işte bu hiç bir zaman farkedilmeyebilir.

http://realperest.kolayweb.com/realperest.mdb adresinde duruyor dosya. "_" ile başlayan formlar sorguyu altform olarak içeren formlardır.



Evet aslında senin dediğin gibi fiyatlartablosu bu sorgunun aynısı oluyor. Ama tek sorun orada bu sorguda olduğu gibi hepsi listelenmiyor. Fakat sorgu da da , Veri giriş problemi oluyor (altformu kullanarak veri girişi yapamıyorum çünkü altform bir sorguya bağlı). Birde yeni kayıt girişi yapacağım zaman sorgu olduğu için ve bu kayda göre sorgulayacağı veri henüz olmadığı için altform yine bomboş görünüyo oysaki tamda orada lazım. Bu sorguyu bir olaya bağlayarak yada otomatik olarak kullanıcıya hiç bir soru sormadan tablo haline getirip bu tabloyuda altforma bağlayabilirsek tahmin ediyorum problem çözülmüş olur...

realperest
26/02/2003, 11:38
merhaba,

acemi senden bi cevap alamadım.
Heralde işlerin yoğundur diye düşündüm ama dosyayı indirememiş olabileceğin aklıma geldi sonradan.

acemi
26/02/2003, 15:59
"Cevap yazarim" deyip sonra da beklettigim icin ozur dilerim. Forumdan hemen yazip bitmeyecek isleri, usengeclikten dolayi genelde salliyorum :)

Senin dosyayi inceledim ama benim ilk gonderdigim dosyada eklemeleri yapmak daha rahat geldigi icin istediklerini onda yaptim. Yapilan seyleri kisaca ozetleyeyim.

* Modul bolumune mdl_hizmetfiyat adli modul eklendi. Bu modulun icinde iki tane fonksiyonun kodu var: HizmetEkle() ve KurumEkle()

* HizmetEkle() adli fonksiyon hizmet_no ve kdv olmak uzere iki tane parametre aliyor. Bu fonksiyon, yeni bir hizmet eklendiginde kullaniliyor. hizmet_no'su verilen hizmetin hangi kurumlar icin tanimlanmadigini buluyor ve bu eksikleri tamamliyor. Yani her kurum icin bu hizmeti ekliyor. Eger bir kurum icin bu hizmet zaten tanimlanmissa, onun icin ikinci bir kayit eklemiyor.

* KurumEkle() adli fonksiyon kurum_no ve kdv olmak uzere iki tane parametre aliyor. Bu fonksiyon, yeni kurum eklendiginde veya bir kurumun, eksik hizmet kayitlarini tamamlamak icin kullaniliyor.kurum_no'su verilen kurum icin hangi hizmetlerin tanimlanmadigini buluyor ve bu eksikleri tamamliyor. Yani bu kurum icin butun hizmetleri ekliyor. Eger bir hizmet, bu kurum icin zaten tanimlanmissa, onun icin ikinci bir kayit eklenmiyor.

* Queries (sorgular) bolumunde bazi yeni sorgular var. Asil isi yapan sorgular qry_hizmetfiyat_X_hizmetini_butun_kurumlar_icin_ek le ve qry_hizmetfiyat_Y_kurumu_icin_butun_hizmetleri_ekl e adli sorgular. Diger 4 adet sorgu, bu ana sorgularin alt sorgulari. Yani bu sorgularin duzgun calismasi icin gerekli.

* Modulde yer alan fonksiyonlar, bu sorgulari kullaniyor. O nedenle fonksiyonlarin duzgun calismasi icin bu sorgularin olmasi gerekiyor.

* Fonksiyonlarin nasil kullanilacagini frm_hizmet_detay adli formda yaptigim bir degisiklikle gosterdim. Bu formun After Insert (ekleme sonrasinda) olayi icin HizmetEkle() fonksiyonu kullanildi. kurum_no parametresi olarak o an kaydi eklenen hizmetin numarasi (Screen.activeform![fld_hizmet_no]) giriliyor. kdv parametresi icin simdilik sabit olarak 18 giriliyor. (Ileride bu bilginin bir konfigrasyon tablosundan alinip KDV degisikliklerinde programin rahatca ayarlanmasi saglanabilir). Yani fonksiyon su sekilde kullanilmis oluyor:
=HizmetEkle(Screen.activeform![fld_hizmet_no];18)

* Benzer islemin, kurumlarin eklendigi form icin de yapilmasi lazim. Yani kurumlar formunun After Insert olayinda =KurumEkle(Screen.activeform![fld_kurum_no];18) seklinde fonksiyon kullanilmali.

* Bu iki fonksiyon, sadece yeni hizmet veya kurum eklendiginde degil, mevcut kurum ve hizmetler icin eksik kayitlarin tamamlanmasi icin de kullanilabilir. Ornegin kurum bilgileri formuna kurumun eksik hizmetlerini tamamla gibi bir button konur ve bu button'un On click (tiklanildiginda) olayi icin =KurumEkle(Screen.activeform![fld_kurum_no];18) yazilir.

* Son degisiklikleri iceren dosyayi buradan download edebilirsin (http://acemi17.kolayweb.com/realperest2.mdb)

acemi
26/02/2003, 21:16
...

realperest
27/02/2003, 12:03
Selam,

acemi şimdi gördüm hemen indiriyorum örneği okuyarak kavramaya çalışacağım.
Şimdilik çok teşekkür ederim.

realperest
27/02/2003, 12:06
Ama sanki senin yazından anladığım,
bu işlemler neticesinde HİZMET tanımlarken KURUMLARIN bütün listesini yada KURUM tanımlarken HİZMETLERİN bütün listesini altformda görmemi sağlayacak bir düzenleme değil.
Öyle anladım ama bir bakayım.

acemi
27/02/2003, 13:06
bir bak :)

realperest
28/02/2003, 17:02
Evet acemi
çok teşekkürler, ne demek istediğimi çok iyi anladığın için çok iyi bir çözüm bulmuşsun.

Gerçi ben hizmetin normal fiyatını hizmet ile ilgili tabloda saklayacağım çünki kurum işlemi söz konusu olmadığı durumlarda (genelde böyle) karışıklık ve uzun yola girmemeyi düşünüyorum.
Birde kdv oranı nı da yine hizmetin tablosunda saklamayı düşünüyorum. çünki hizmette kullanılacak kdv oranı zaten bütün firmalar için kullanılacak kdv oranıdır.
birde kurum tanım tablosunun içine indirim oranı diye bir tablo alan ekleyeceğim daha sonra fiyat ayarlamaları yaparken (senede iki kere) otomatikliği sağlamak için önce normal fiyatı oluşturacağım sonra kurumun iskonto oranına göre iskontosunu uygulayarak kurum fiyatını oluşturacağım daha sonra bazı hizmetlerde "biz şu hizmet için bu fiyatın üstünde ödeme yapmayız abi" diyenler içinde elle girişi mümkün kılan bir form hazırlayacağım ama onlar sonraki işler.
Şu anda senin gösterdiğin örnekte kurum tanım formu da oluşturdum o da çalışıyor. sadece kdv oranını ortadan kaldırmak istiyorum onu da artık el yordamı ile elimdeki hazır örnekte deneme yanılma ile yapabilirim sanıyorum.
İlgi ve yardımların için çok teşekkür ederim.

ACCEESS RAPORLARINDA STANDARDİZASYON NASIL SAĞLANIR başlıklı konumu bir okurmusun.