Desrhavuzu oluşturma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Desrhavuzu oluşturma

Mesaj gönderen haydarxxx »

Paradox veri tabanı ile yaptığım bir proje var bu proje okul kursuna katılan öğrencilerin kaydını tutuyor.Bunun için vertabanımda adı_soyadı no sınıf gibi alanların yanısıra Türkçe matematik basketbol... type alanı locıcal olan (dbeditchecbox) olan alarımda öğrenci hangi kursa katılmış ise işaretleme yapıyorum ve bu işaretlemeler doğrultusunda da borç hesapltmasını alıyorum.Kısacası çalışır bir projem var bir sorunu yok.

Şimdi gelelim istediğim olaya..

Projeji yaparken dersleri ben belirliyorum Türkçe Matematik Futbol... vb.Eğer kulanıcı şu ders alanında hentbol de olsun dediğinde projeye ekleme yapıp yeniden şekillendiriyorum.Bu olayı ordadan kaldırmak için bir dershavuzu.db diye bir veri tabanına yaparak kişi kendisi istediği dersleri bu vt ye eklese ama..
desrshavuzundaki eklenmiş olan dersleri öğrencilerin kaydını tutuğum tablo ile nasıl ilişkilendireceğim bu ilişkide istediğim öğrenciye nasıl ders ataması yaptırabilirim örneğin

adı_soyadı(kayıt tablom) dersler(havuztablom)
ali türkçe matematik
hasan türkçe fen
...... . ..... ......

gibi.bağımsız iki tablo

şunuda kısaca belirteyim öğrencilere sınıf ataması yapmak kolay.Bir vertabanı sınıfı oluşturup bu sınıfları dbcombobox içine alıp gerekli alanlara sınıf ataması yapabilirim.ama burada tek bir veri ataması ve buna açılmış alan var ,birden fazala dersi nasıl öğrenci ile buluşturacağım.lütfen bir yol gösterin.tablolar nasıl ilişkilendiriliyor.Proje sonunda hangi öğrenci hangi kursa katılıyoru nasıl göreceğiz.İlgilenecek arkadaşlara şimdiden teşekkür ediyorum
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

öncelikle eğer işin başındaysanız FireBird e geçmenizi tavsiye ederim

Kod: Tümünü seç

Öğrenciler
ID      AD_SOYAD ......
1          ali
2           veli


Dersler
ID          DERS_ADI ............
1            Matematik
2            T�rk�e

Havuz
HAVUZ_ID          DERS_ID              OGRENCI_ID
1                          1                               1
2                          1                               2
3                          2                               1
4                          2                               2
gibi bir master-detail yapı oluşturabilirsin.
DeveloperToolKit

..::|YeşilMavi|::..
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

bence 3 tane tablon olsun,
1. tablo da ders isimleri biriksin
2. tabloda öğrenci numaraları ve öğrenci bilgileri olsun
3. tabloda öğrenci numarası ve ders adı olsun

mesela
tablo1
matematik
türkçe
coğrafya
...

tablo2
000401015 bilal konat
000401012 yusuf mete

tablo3
000401015 matematik
000401015 türkçe
000401012 matematik
000401012 coğrafya

böylece 000401015 numaralı öğrencilerin aldığı dersleri tablo3te görebilirsin.
kolay gelsin
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

3 dakika arayla cevap önce @lazio'dan gelmiş. :D
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

sy lazio aslında dilim varmadı ben bunu firebirde yapacağım demeye çünkü firebird de çok acemiyim.firebirde tablo yapabiliyorum forumda okuduğum bilgilerele ıbdataset kullanarak kayıt girebiliyorum.Fakat paradox ile başladık bu işe ona biraz daha hakimim diye yazdım buradan birşeyler öğrenirsek firebirde de uygularım diye düşündüm.Asıl isteğim bu olayı firebirde yapmak aslında.firebird konusunda yardım diyeceğim ama başlığımız sakat :? aynı soruyu firebird başlığında sorsak yetkililer kızarmı bilmiyorum:?: sy lazio dediklerini uygulayacağım hemen.

sy nitrokonat 3 tabloda ikideki bilgiyi nasıl göreceğim bu şekilde.3 tane bağımsız tablo.bu ilişkiyi nasıl kurdunuz anlamadım :cry:
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

tablo 2nin kayıtlarını listeleyen bi dbgrid koy.
yanına da dersleri gösteren bi dbgrid koy.
2. dbgridi bi query'ye bağla.
querynin koduna

Kod: Tümünü seç

'select * from derstablo where ogrencino ='+quotedstr(ogrencitableogrencino.text)
yaz.
böylece hangi öğrenciyi seçersen 2.dbgridde onun seçtiği dersleri gösterecektir.
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

nitrokonat
3 tablo ile yola çıktık 2 tablo örneği verdin.Ben iki tablo yaptım

1.Tablom ogrencı.db tablo alanları adı_soyadı(alpha) ,No (number)
2.tablom dersler.db tablo alanı dersler Alpha

1.girid 1.tablo ile ilişkili
2.girid 2.tablo ile ilişkili ve bu giridi query1 e bağladım ve sql(TStrings) e

verdiğiniz kod a göre;
'select * from dersler where No ='+quotedstr(ogrencıtableNo.text)

olarak giridim ama select hatası alıyorum.

Bir diğer konu ise dersler alanında birden çok ders var biz buradan bir öğrenciye istediğimiz kadar dersi aktaracağız.yani bir öğrenci tek bir derse gelirken bir başkası 2-3 derse yada daha fazla gelebilecek.Ben hala mantık kuramadım :oops:
Her bir öğrenciye tıkladığımızda hangi derslere katılıyorsa o dersler gözükecek diğer açılmış dersler gözükmeyecek.Biraz daha açarsanız sevinirim.
Ottoman

Mesaj gönderen Ottoman »

Slm..Eğer Yanlış Anlamadıysam Ders Kadar DBCombox Koyarak (10 ders varsa 10 tane DBComboBox olacak)yapabilirsin;

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
begin
 Table1.Open;//Tabloyu aç
 DBComboBox1.Items.Add('Matematik');//1.Ders........
 DBComboBox1.Items.Add('Türkçe');
 DBComboBox1.Items.Add('Tarih');
 vs.........................Kaç ders varsa..
 DBComboBox2.Items.Add('Matematik');//1.Ders........
 DBComboBox2.Items.Add('Türkçe');
 DBComboBox2.Items.Add('Tarih');
 vs.........................Kaç ders varsa..
END;
Böylece Hangi öğrenci tablonda aktifse, DBComboBoxlarda seçilmiş dersler o öğrenciyle gelir.
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

S.A.
Aklıma şöyle bir çözüm geldi.
Bir tablo oluşturun ve iki alanı olsun; ders adı ve öğrenci numarası.
Bir öğrencinin girdiği dersleri görmek için, tabloyu öğrenci numarasına göre filtreleyin.

Bir de derlerin yazılı olduğu txt dosyası oluşturun.
Derslerin seçileceği combobox'ların olduğu formların OnCreate'ine
ComboBox1.Items.LoadFromFile('Dersler.txt') yazın.
Ders ekleneceği zaman da, ekle butonuna;

Kod: Tümünü seç

Combobox1.items.add(editYeniDers.text);
Combobox1.items.saveToFile('Dersler.txt');
yazın. Böylelikle dersleri de kaydetmiş olursunuz.

EDİTBunları yazdıktan sonra farkettim ki lazio ve nitrokonat da aynı şeyi söylemişler. :oops:
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

Ottoman
Benim istediğim ders kadar checbox yada ne ise koymak değil ben bunu zaten yaptım.İlk sorumda bunu belirttim.Dersleri kendim açıyorum dbchecboxlarla(dersler) bunlara işaretleme yaparak hangi öğrencinin hangi derse geldiğini buluyorum.

İsteğim bunu kullanıcıya bırakmak yani kullanıcı istediği dersi açacak ve bu açtığı dersleri hangi öğrenci hangi derse gelmek istiyorsa o öğrenciye atayacak yada o öğrencinin geldiği derslerin dbchecboxları yaratılmış olacak ki kullanıcı işaretleme yapabilsin.Yani pogramda eseneklik istiyorum.Kulanıcının yaratmış olduğu dersler her bir öğrenci için de yaratılmış olacak kullanıcı buradan o öğrenci hangi derse katılacaksa işaretleme yapacak.Bırakın projeyi anlatmak bile beni kasıyor :lol: Umarım anlatabilmişimdir :!: İlgilenen tüm arkadalara çok teşekkür ediyorum bu arada yazılanlarıda yabana atmıyorum okuyup birşeyler de çıkarmaya çalışıyorum
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

ulu coder yazdı:Bir de derslerin yazılı olduğu txt dosyası oluşturun.
Derslerin seçileceği combobox'ların olduğu formların OnCreate'ine
ComboBox1.Items.LoadFromFile('Dersler.txt') yazın.
Ders ekleneceği zaman da, ekle butonuna;

Kod: Tümünü seç

Combobox1.items.add(editYeniDers.text);
Combobox1.items.saveToFile('Dersler.txt');
yazın. Böylelikle dersleri de kaydetmiş olursunuz.
istediğinizi bu sağlamıyor mu?
Hangi derslerin olduğunu biliyor oluyorsunuz ve ekleme de yapılabiliyor.
Bir de ÖğrenciNo-DersAdı alanlarından oluşan bir tablo...
Bitti işte :?:
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

ulu coder
Combobox1.items.add(editYeniDers.text);
Combobox1.items.saveToFile('Dersler.txt');

bu verdiğiniz kodlar sadece txt dosyasına girdiğim dersleri 'Dersler.txt' dosyasına kaydediyor ve o kayıtları Combobox1 da gösteriyor.Kurs_No ya göre sorgulama yaptığımda Combobox1 bir değişiklik hali ile olmuyor.orada hep eklediğim dersler gözüküyor.

Tahminim ben olayı anlatamadım.Yada anlatıklarınızı bir yere vardıramıyorum.Tekrar bir deneyeyim :?

derleri yaratcağımız tablomuz olsun ve diyelimki bu tabloda
Havuz Tablosu
Ders_Adi type (A)

kullanıcı bu alandan derleri post metodu ile Ders_Adi alanına isimleri ekledik.Örneğin
Ders_Adi
Türkçe //yartılan1.ders
Matematik //yartılan2.ders
Fen Bilgisi //yartılan3.ders
........... .......

kaç dersimiz oldu diyelimki beş ders i bu yöntemle oluşturduk

Şimdi gelelim asıl tabloya.Oluşturacağımız bu tabloda ise
Kayıt tablosu
Adi_Soyadi type(A)
Kurs_No type(N)
Sinifi type(A)

olsun ve ben buraya dikkat ettiyseniz ders alanı açmadım.İşte olayda bundan sonra başlıyor.Havuz tablosunda dersler zaten var.Kullanıcı Havuz tablosuna ders ekledikce Kayıt tablosu veritabanına yeni bir alan açaçak.veee Kayıt tablosunun yeni alanları şöyle olacak artık

Kayıt tablosu
Adi_Soyadi type(A)
Kurs_No type(N)
Sinifi type(A)
Türkçe type(A)
Matematik type(A)
Fen Bilgisi type(A)
şimdi burada ne oldu her öğrenci için program veri tabanına müdahale ederek ders alanı açtı.böylece her öğrenci tüm derslerle buluşmuş oldu :lol:

tabi bu benim kafamda tasarladığım bir şey illaki böyle olması da şart değil ama bu işi yapabilecek bir yöntem rica ediyorum.

Örneğin okularda kullanılan Öğrenci takip ve kayıt programları var orada ders havuzuna istediğn bir dersi ekliyorsun ve bu dersi istediğin sınıflara atıyorsun artık her öğrenci bu dersle ilişkili olmuş oluyor.Hatta bu yaratılan ders otomatik dbgirid içinde(yada o işi yapan bir bileşen) de checbox olarak çıkıyor yanında da dersin adı işaretleme yaparsan o öğrenci ile ilişkili oluyor vs vs...(belki bir fikir de bu verebilir diye belirttim)
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
arkadaşım kurduğum mantık son hamlede tıkandı.
Bence şöyle olmalı
1.DERSHAVUZU Tablosu
DERSKODU INTEGER
DERSADI KARAKTER

2.KAYIT Tablosu
KAYITNO INTEGER
ADISOYADI
ADRESI
KURS_NO
FALAN
FILAN

3.ALINANDERSLER Tablosun
KAYITNO INTEGER
DERSKODU INTEGER

ÖRNEK KAYITLAR
1.DERS HAVUZU
DERSNO DERSADI

Kod: Tümünü seç

1      MATEMATIK
2      TÜRKÇE
3      FEN
2.KAYIT TABLOSU
KAYITNO ADISOYADI ....

Kod: Tümünü seç

1       AHMET
2       MEHMET
3       SAFFET
3.ALINANDERSLER Tablosu

Kod: Tümünü seç

DERSNO KAYITNO
1       1
1       2
1       3
2       1
3       1
3       3
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

sy aslangeri

ilk iki tablo tamam ama 3 tabloyu da aşağıdaki gibi oluşturduk

3.ALINANDERSLER Tablosu
Kod:
DERSNO KAYITNO
1 1
1 2
1 3
2 1
3 1
3 3

burada 1 tablo ile ikinci tablonun alanları (aynı isimli olarak) belirttik.
2 tabloya öğrenci girişi yapıyoruz diyelim. 1.tablodanda dersleri işledik
Bu 3.tablo diğer iki tablo ile nasıl bağlı çıkartamıyorum :oops:

bir diğer husus da

3.ALINANDERSLER Tablosu
Kod:
DERSNO (ve adı) KAYITNO ADI_SOYADI
1 TÜRKÇE 1 AHMET ÜNLÜ
1 TÜRKÇE 2 ALİ GENÇ
1 TÜRKÇE 3 HASAN BİLİR
2 MATEMETİK 1 AHMET ÜNLÜ
3 FEN 1 AHMET ÜNLÜ
3 FEN 3 HASAN BİLİR

bu şekildemi görünecek yani AHMET ÜNLÜ ismiüç kere girilmiş TüRÇE,MATEMATİK ve FEN kurslarına katılmış şeklindemi gözükecek yoksa


3.ALINANDERSLER Tablosu
Kod:
DERSNO (ve adı) KAYITNO ADI_SOYADI
1 TÜRKÇE +2MATEMETİK +3FEN 1 AHMET ÜNLÜ
1 TÜRKÇE 2 ALİ GENÇ
............. ... ................

şeklinde bir isim karşısında seçtiği derslerimi göreceğiz.ilk iki tablonun 3 tablo ile bağı nedir :?:

Kusura bakmayın ben hala bir şey anlamadım :oops: Herkezin sabrına şimdiden teşekkür ediyorum.Ben üç tabloyuda paradox ta yaratım ve form1 üzerine aldım.Daha ileri gidemiyorum. :?
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
alandersleri tablosunda kim hangi dersleri almış onun kaydı tutuluyor.
kayıt girişinde sadece kayıt numaraları tutulacak.

gösterim şeklide sana kalmış.
master - detail bağlantı sağlayarak istediğin şekilde gösterebilirsin.

kursiyerleri bi gridde listele
aldığı dersleride görmek için başka bir gridde alınan dersler tablosunu kayıt numarasına göre süz.
alınan dersler tablosundan kayıt çekerken ders adınıda join yapman lazım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla