İşte durum: Bir Microsoft Access ön ucuna sahip bir SQL Server veritabanı var. SQL Server veritabanında bir tablo VARCHAR (6) NOT NULL (bu tablo için bir bileşik birincil anahtarın parçası olduğu için NULL olmamalıdır) olarak tanımlanan PackID adlı bir sütun var. Boş dizeler PackID sütununda meşrudur. Aslında oldukça sık görülürler. Kullanıcı bu tablo için kullanıcı arabirimindeki verileri girdiğinde ve PackID alanı boyunca sekmeler belirdiğinde bir hata iletisi görüntülenir: "NULL değeri 'PackID' sütununa eklenemiyor; sütun boş değerlere izin vermiyor. INSERT başarısız." işe yaramaz denendiSQL Server'a eklemek için VBA boş dizesi
şeyler:
- '' değerine sahip SQL Server veritabanında bu sütunda varsayılan kısıtlama ekleme - görünüşte varsayılan olarak sadece sütun atlanırsa kullanılır Access'te PackID alanın Varsayılan Değer belirlemek INSERT deyimi
- den "için - kullanıcı (Kayıp Odak olay arayüzünde satır üzerinden kalktıktan sonra aşağıdaki VBA kodunu çağıran bir BOŞ
olan" "sanki davranır")
If IsNull(PackID.Value) Then PackID.Value = "" End If
Boş bir dizeyi Access'e nasıl zorlayacağını bilen biri var mı, bu yüzden SQL Server için boş bir dize olarak yorumlanmış ve NULL değil?
'IsNull (ComponentPackID.Value)' dönüşü doğru mu? – Jens
Muhtemelen eski bir VBA günlerinde NULL değerleri ile başa çıkmak için iyi bir yol olmadığı için, Hayatınızda boş bir dize için NULL'leri göndermek için "daha kolay" yapmak bir şeydir. Bu hacky ama ne kadar tek bir alan, sonra her şeyi yoluna geri döker? – Jeremy
Evet, True döndürüyor. – knot22