Forum

ms sql server ile a...
 
Bildirimler
Hepsini Temizle

ms sql server ile anket yapımı? ilişkisel veri tabanı?

10 Yazılar
3 Üyeler
0 Likes
3,146 Görüntüleme
(@abdullahkac)
Gönderiler: 80
Estimable Member
Konu başlatıcı
 

merhaba;

ms sql kullanarak bir anket yazmak istiyorum. ancak tam bir anket yani yönetim panelinden anket sorusu seçenekler eklenecek ziyaretçi anketi oylayacak sonuçları görecek.

 şimdi anket oluştururken anket sorusunu farklı tabloda seçeneklerini ise farklı tabloda belirtmişler bu şekilde daha verimli olacağını anladım. iki tabloyu ilişkilendirip bir anda soruyu birine seçenekleri birine ekliyorlar sanırım. ancak takıldığım nokta şurası. tamam anket sorusu textbox ını anket sorusu tablosunun ilgili satırına bağladık. ancak misalen 5 seçenek eklenecek olan bir ankette seçenekler için seçenek tablosuna nasıl tek bir olay da 5 farklı satır ekleyeceğiz? üstelik satırların tamamı diğer tablodaki id ye sahip olacak. yani bu ilişkisel tablolara veri girme olayını çözemedim? anket oluşturma işini daha önce yapmış yada bu konuda bilgisi olan arkadaşlarımız varsa yardımcı olabilirlermi ? 

 
Gönderildi : 21/03/2010 04:30

(@cozumpark)
Gönderiler: 16309
Illustrious Member Yönetici
 

Başkalarının modellerini örnek almak tabii ki gerekli ancak zorunluluk değil. Siz uygulamanıza özel geliştirmeyi yapabilirsiniz [:)]


İki tablo ilişkilendirilirken üst tablonun id'sinin bağlanacağı bir alt tablo alanı oluşturulur. Örneğin;


tbUst: id, ustveri
tbAlt: id, ustid, altveri


tbAlt'tan ustid ile tbUst'ten id'yi ilişkilendirirsiniz.


Veri girme işine gelince; programlama alt yapıları artık sundukları bileşenlerle hiç kod yazmadan, sadece bileşenlerin özelliklerini doğru yapılandırmak suretiyle bahsettiğiniz ilişkili verilerin veri tabanına yazımını kendileri üstleniyorlar. Ancak siz elle manuel olarak tabloya üst tablo ilişkili veri girmeyi (belki de öğrenmeyi) istiyorsanız o zaman işinizi görecek olan sql komutu insert into. sorunun id'si oluştuktan sonra alt tabloya veri yazarken sorgunuzun içine sorunun id'sini girerek istediğiniz verileri yazabilirsiniz. Tablodan geri okurken de select * from tbSecenekler where soruid=5 -ki buradaki 5'in biz o sırada programda açık olan soru olfuğunu varsayıyoruz- gibi bir sorguyla da alt tablo verilerinden istemiş olduğunuz kısmı alabilirsiniz.


İyi çalışmalar.

 
Gönderildi : 21/03/2010 11:57

(@abdullahkac)
Gönderiler: 80
Estimable Member
Konu başlatıcı
 

Merhaba. öncelikle teşekkür ederim.

 evet kodu manuel olarak yazmak istiyorum ancak sormak istediğimi daha net sormak isterim.  

 

şimdi yukarıdaki gibi bir sistem olacak. ben yönetim panelinden textboxlara soru ve seçeneklerini gireceğim. bunların birbiri ile ilişkilendirilmesini biliyorum. yani birbirine bağlamayı. anlayamadığım nokta şu.

yukarıdaki resimden esinlenerek soruyorum;

anket sorusunu girince anket tablosuna veriyi kaydedebiliyorum bunda sorun yok sıradan insert işlemi. ancak seçenekler tablosuna forma girilen üç seçenek giriliyor. ve tek buton cliclinde üç satır veri girilmiş oluyor. hemde hepsinin id si aynı. siz id 5 demişsiniz ama id nin 5 olduğunu bilmiyoruz ki 10. soruyuda giriyor olabiliriz. 

 

benim sizden veya bilen arkadaşlardan ricam şudur. diyelimki anket oluştur sayfamızdaki textbox isimleri şu şekilde.

txtSoru

txtSecenek1 

txtSecenek2 

txtSecenek3

txtSecenek4 

txtSecenek5

 

bunlar... Bunları biz yukarıdaki tabloya nasıl kaydettireceğiz. bu kayıt içn gereken sql command ı eksiksiz yazarmısınız?

teşekkür ederim? 

 
Gönderildi : 21/03/2010 15:06

(@ismailadar)
Gönderiler: 134
Estimable Member
 

Merhaba bu dediğiniz gibi dinamik anket biçimini ben asp.net ile daha once kodladım eger secenekleri Textboxlarda değilde tek secimlilikler için RadiobuttonList coktan secmeliler içinde Checkbox list kullanırsanız cozebilirsiniz soyleki databaseden aldıgınız sorgu sonucuna gore Radiobuttonlist veya checkboxlisti bind edeceksiniz yani datasource ozelliğine sizin databaseden gelen verileri gireceksiniz dikkat etmeniz gereken nokta: Bu neslerlerin Value Propertyleri Databasedeki Id ye Text Propertyleride Soru acıklamasına karsılık geliyor.


Ayrıca secimleri databasede tutma konusunda secilen değerler 1 secilmeyenleri 0 olarak tutabilirsin ona gorede daha sonra SQL de like ile arama ve gruplama yapabilirsin...

 
Gönderildi : 21/03/2010 22:03

(@abdullahkac)
Gönderiler: 80
Estimable Member
Konu başlatıcı
 

sanırım siz tabloya soru ve şıkları girilmiş bir anketi db den çekerek ziyaretçilere gösterme aşamasını anlatmaya çalıştınız. ancak ben anketi oluşturma yani soru ve şıkları insert etme kısmında takılıyorum. Bu kısmı nasıl yapacağız?

 
Gönderildi : 21/03/2010 23:00

(@ismailadar)
Gönderiler: 134
Estimable Member
 

Bunu iki sekilde yapabilirsin birinci yontem :Son anketID yi bir değişkene alıp onu bir artırıp yeni anket ıd yi olusturmak(identity ise gerekmez)


daha sonra bu id ile txtsoruyu insert etmek daha sonra Sqlcommand in bir instanceini daha olusturup ona secenek tablosuna gereken insert cunlecigini ve sqlconnection nesnesini parametre wereceksin bir kac tane sql comman nesnesi ile yapabilirsin fakat burada dikkat etme gereken nokta connection string için MARS multiple active result set i enable etmendir yada bu kadar ugrasmazsın bir tane Stored procedure ile bunları hepsinin insert edebilirsin stored procedure içinde kayıt edilen anket ıd yi @@Scope_ıdentity ile alabilrsin hangi veritabanı kullanıyorsun alanların turleri ne belirtirsen kucuk bir procedure yapabilirim senin için....


 


 

 
Gönderildi : 21/03/2010 23:58

(@abdullahkac)
Gönderiler: 80
Estimable Member
Konu başlatıcı
 

ms sql server kullanıyorum. alan adları ve tablolar aynen bukarıdaki gibi sadece oylar tablosundaki user_id yok oylar tablosu var da içindeki o sütun yok sadece. 

 bu konuda yardımcı olursanız çok minnettar olurum. şimdiden teşekkür ederim. 

 
Gönderildi : 22/03/2010 00:48

(@ismailadar)
Gönderiler: 134
Estimable Member
 

kucuk bi soru daha anket_id ve secenekID identity mi yani otomatik mi artıyor yoksa sizmi elle giriyorsunuz bu değerleri?

 
Gönderildi : 22/03/2010 01:00

(@abdullahkac)
Gönderiler: 80
Estimable Member
Konu başlatıcı
 

evet birincil anahtar. kendileri otomatik artıyor.

 
Gönderildi : 22/03/2010 01:07

(@ismailadar)
Gönderiler: 134
Estimable Member
 


 


MErhaba aagıdaki procedure kullanarak insert edebilirsiniz anket seceneklerinizi.


CREATE PROCEDURE sp_insertAnket


@soru varchar(100),


@secenek1 varchar(100),


@secenek2 varchar(100),


@secenek3 varchar(100),


@secenek4 varchar(100)


AS


BEGIN


SET NOCOUNT ON;


Declare @ID int


Insert into Anket(Soru) values(@Soru)


Select @ID=SCOPE_IDENTITY()


insert into secenekler(Anket_ID,Secenek) values(@ID,@secenek1)


insert into secenekler(Anket_ID,Secenek) values(@ID,@secenek2)


insert into secenekler(Anket_ID,Secenek) values(@ID,@secenek3)


insert into secenekler(Anket_ID,Secenek) values(@ID,@secenek4)


END

 
Gönderildi : 22/03/2010 16:23

Paylaş: