İkinci Kayıt Kümesinden Liste Kutusunu Doldurma (MFC Veri Erişimi)
Varsayılan olarak, bir kayıt görünümü, alanları kayıt görünümünün denetimlerine eşlenen tek bir kayıt kümesi nesnesiyle ilişkilendirilir. Bazen kayıt görünümünüzde bir liste kutusu veya birleşik giriş kutusu denetimi koymak ve ikinci kayıt kümesi nesnesindeki değerlerle doldurmak isteyebilirsiniz. Kullanıcı, kayıt görünümünde görüntülenecek yeni bir bilgi kategorisi seçmek için liste kutusunu kullanabilir. Bu konu başlığı altında bunun nasıl ve ne zaman yapılacağını açıklanmaktadır.
İpucu
Veri kaynağından birleşik giriş kutusu veya liste kutusu doldurmanın yavaş olabileceğini unutmayın. Kayıt kümesindeki bir denetimi çok sayıda kayıtla doldurmaya çalışırken önlem alın.
Bu konunun modeli formunuzun denetimlerini dolduran birincil kayıt kümesinden, ikincil kayıt kümesi ise liste kutusunu veya birleşik giriş kutusunu doldurur. Liste kutusundan bir dize seçmek, programınızın birincil kayıt kümesini seçilene göre yeniden sorgulamasına neden olur. Aşağıdaki yordamda birleşik giriş kutusu kullanılır, ancak liste kutusuna eşit olarak uygulanır.
İkinci kayıt kümesinden birleşik giriş kutusunu veya liste kutusunu doldurmak için
Kayıt kümesi nesnesini (CRecordset) oluşturun.
Birleşik giriş kutusu denetimi için CComboBox nesnesine yönelik bir işaretçi alın.
Önceki içeriklerin birleşik giriş kutusunu boşaltın.
Birleşik giriş kutusuna eklemek istediğiniz geçerli kayıttan her dize için CComboBox::AddString çağrısı yaparak kayıt kümesindeki tüm kayıtlar arasında ilerleyin.
Birleşik giriş kutusunda seçimi başlatın.
void CSectionForm::OnInitialUpdate()
{
// ...
// Fill the combo box with all of the courses
CENROLLDoc* pDoc = GetDocument();
if (!pDoc->m_courseSet.Open())
return;
// ...
m_ctlCourseList.ResetContent();
if (pDoc->m_courseSet.IsOpen())
{
while (!pDoc->m_courseSet.IsEOF() )
{
m_ctlCourseList.AddString(
pDoc->m_courseSet.m_CourseID);
pDoc->m_courseSet.MoveNext();
}
}
m_ctlCourseList.SetCurSel(0);
}
Bu işlev, m_courseSet
sunulan her kurs için bir kayıt içeren ikinci bir kayıt kümesi ve kayıt görünümü sınıfında depolanan bir CComboBox
denetim m_ctlCourseList
kullanır.
İşlev belgeden alır m_courseSet
ve açar. Ardından boşaltıp m_ctlCourseList
kaydırarak öğesinin üzerinden geçer m_courseSet
. Her kayıt için işlev, kayıttan kurs kimliği değerini eklemek için birleşik giriş kutusunun AddString
üye işlevini çağırır. Son olarak kod, birleşik giriş kutusunun seçimini ayarlar.