Forum
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 ?
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.
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?
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...
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?
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....
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.
kucuk bi soru daha anket_id ve secenekID identity mi yani otomatik mi artıyor yoksa sizmi elle giriyorsunuz bu değerleri?
evet birincil anahtar. kendileri otomatik artıyor.
MErhaba aagıdaki procedure kullanarak insert edebilirsiniz anket seceneklerinizi. CREATE
@soru varchar(100),
@secenek1
varchar(100),@secenek2
varchar(100),@secenek3
varchar(100),@secenek4
varchar(100)AS
BEGIN
SET NOCOUNT ON;
Declare
@ID intInsert
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