Bir dış birleştirme yapmak ve başarıyla informix
veritabanında idam ama benim kod aşağıdaki istisna olsun:
DataTable dt = TeachingLoadDAL.GetCoursesWithEvalState(i, bat);
Kısıtlamalar etkinleştirilemedi. Bir veya daha fazla satır, boş olmayan, benzersiz veya yabancı anahtar kısıtlamalarını ihlal eden değerler içeriyor.
Sorunu biliyorum, ama nasıl düzelteceğimi bilmiyorum.
Dış birleşimi yaptığım ikinci tablo, bir önceki dış birleşim sorgusunda null olan bir bileşik birincil anahtar içerir.
DÜZENLE:
SELECT UNIQUE a.crs_e, a.crs_e || '/ ' || a.crst crs_name, b.period,
b.crscls, c.crsday, c.from_lect, c.to_lect,
c.to_lect - c.from_lect + 1 Subtraction, c.lect_kind, e.eval, e.batch_no,
e.crsnum, e.lect_code, e.prof_course
FROM rlm1course a, rfc14crsgrp b, ckj1table c, mnltablelectev d,
OUTER(cc1assiscrseval e)
WHERE a.crsnum = b.crsnum
AND b.crsnum = c.crsnum
AND b.crscls = c.crscls
AND b.batch_no = c.batch_no
AND c.serial_key = d.serial_key
AND c.crsnum = e.crsnum
AND c.batch_no = e.batch_no
AND d.lect_code= e.lect_code
AND d.lect_code = ....
AND b.batch_no = ....
Sorun tablo ile olur cc1assiscrseval
. Birincil anahtar (batch_no, crsnum, lect_code) şeklindedir.
Bu sorun nasıl çözülür?
DÜZENLE:
Tavsiyeye göre @PaulStock
: Söylediklerini yapıyorum ve şunu elde ediyorum:
? dt.GetErrors () [0] {System.Data.DataRow} HasErrors: true ItemArray: {object [10]} RowError: "Column 'eval' DBNull.Value öğesine izin vermiyor."
Ben değiştirerek benim sorunu çözmek Yani e.eval
için, NVL (e.eval,'') eval
sorunumu .ve bu çözer. Çok teşekkürler.
,e.eval,e.batch_no,e.crsnum,e.lect_code,e.prof_course
her şey yolunda gidiyor. sorun ne lütfen.