SORU
11 AĞUSTOS 2011, PERŞEMBE


Kısıtlamaları etkinleştirmek için başarısız oldu. Bir veya daha fazla satır değerleri boş olmayan, benzersiz veya yabancı anahtar kısıtlamalarını ihlal içerir

Bir dış ve başarıyla informix veritabanındaki katılın idam yapıyorum ama benim kod: aşağıdaki özel durum alıyorum

DataTable dt = TeachingLoadDAL.GetCoursesWithEvalState(i, bat);

Kısıtlamaları etkinleştirmek için başarısız oldu. Bir veya daha fazla satır değerleri içerir boş olmayan, benzersiz veya yabancı anahtar kısıtlamalarını ihlal.

Sorunu biliyorum ama nasıl düzelteceğimi bilmiyorum.

Dış birleştirme yapıyorum bu tablo, önceki dış birleştirme sorguda boş olan bileşik bir birincil anahtar içerir.

DÜZENLEME:

    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 cc1assiscrseval olur. Birincil anahtar (batch_no, crsnum, lect_code).

Bu sorunu gidermek için nasıl?

DÜZENLEME:

@Göre PaulStock tavsiye: Ben ne dedi, ve ben alabilirim:

? dt.() GetErrors[0] {Sistem.Veri.DataRow} HasErrors: gerçek ItemArray: {object[10]} RowError: "Sütun '' DBNull izin vermiyor.eval Değer."

I e.eval, NVL (e.eval,'') evaldeğiştirerek sorunumu çözmek.ve bu sorunu çözer. Çok teşekkürler.

CEVAP
11 AĞUSTOS 2011, PERŞEMBE


Bu sorun, genellikle aşağıdakilerden biri nedeniyle oluşur

  • null değerleri sütun AllowDBNull ayarlamak için iade ediliyor
  • satır birincil anahtar aynı ile iade edilen yinelenen.
  • veritabanı ve veri kümesi arasında sütun tanımı (char alanlar örneğin boyutu) ile uyuşmuyor

Sorgunuza yerel olarak çalışan ve eğer resultset çok büyük değil sonuca bakın, deneyin. Null değerleri ortadan kaldırmış olduk, o zaman benim tahminim birincil anahtar sütunlarını yineleniyor.

Ya da, tam hatayı görmek, el ile özel durum ortaya çıktığında ve daha sonra kırma gibi oluşturulan kodu için bir Try/Catch bloğu ekleyin:

enter image description here

Komut penceresi içinde, masaya GetErrors yöntem hatası alıyorum Ara.
C# komut ? dataTable.GetErrors() olurdu
VB için komut ? dataTable.GetErrors

enter image description here

Bu size bir hata var tüm datarow gösterecektir. Sorunu ile birlikte geçersiz olan sütun söylemeli ki sonra bunların her biri için RowError bak. Yani, komut hata ilk datarow hata görmek için:
? dataTable.GetErrors(0).RowError
ya da C# ? dataTable.GetErrors()[0].RowError olurdu

enter image description here

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EEVblog2

    EEVblog2

    2 HAZİRAN 2014
  • HTC Tutorials

    HTC Tutorial

    21 EYLÜL 2010
  • Sams Page :D

    Sams Page :D

    15 Mart 2009