2014-04-19 17 views
5

MS-Access 2007'de, [DT_REPORT] alanım olduğu [Test_Master] tablosum var. [Size] = "small" alanından [Test_Norm_Due] by 2 months numaralı telefonu güncellemek istiyorum. Alan "Size" = "Med." ise 3 ay sonra. Aşağıdaki sorguyu oluşturuyorum ama Syntax error'u atıyor. Birisi yardım edebilir.Access'teki Güncelleştirme Tablosu

UPDATE Test_Master 
SET Test_Master.Test_Norm_Due = 
    IIF((([Test_Master]![Size]="small")), DateAdd(("m",2,[Test_Master]![DT_REPORT]))), 
     IIF((([Test_Master]![Size]="med.")), DateAdd(("m",3,[Test_Master]![DT_REPORT]))); 
+0

Tek bir UPDATE bildiriminde bulunmaya ihtiyacınız var mı? Onu üç cümlede kırdım, daha sonra okumak ve anlamak çok daha kolay olurdu. Ben böyle bir şey yapsın: 'GÜNCELLEME RBIA_Master SET RBIA_Master.RBI_Norm_Due = DateAdd ("m", 2, [RBIA_Master] [DT_REPORT]!) NEREDE RBIA_Master.Size = "küçük";' – AleAssis

+0

Teşekkür Pravin. Etrafında çalışma önerdiğim yöntemi kullanıyorum. İyi çalışıyor. Makroda birden çok sorguyu sıraladım. Ama yine de tek bir güncelleme sorgusu olmasını tercih ederim. – Shakti

cevap

18

Ben size parantez ile ilgili bir sorun inanıyoruz - daha iyi görüş için (++ not defteri gibi) bir dış Metin editörü kullanarak bunları iç içe deneyin - ayrıca, sen basitleştirilmesi deneyin şekilde aldığınız ekstra parantez kullanırken; ve bir son koşulu kaçırıyorsunuz - Boyut ne "küçük" ne de "med" olduğunda Test_Norm_Due ile ne yapılmalı?

Not IIF için bu sözdizimi şöyledir: Sen IIFs yuvalama

IIF (condition, value if true, value if false). 

, sen böyle bir şey olmalı bu yüzden:

IIF (condition, value if true, IIF(other condition, value if true, value if false)) 

böyle bir şey deneyin (Sadece çoklu hatlarında kırdı Bunu sizin için daha görünür hale getirmeye çalışın).

UPDATE Test_Master SET Test_Master.Test_Norm_Due = 
IIF (([Test_Master]![Size]="small"), 
     DateAdd("m",2,[Test_Master]![DT_REPORT]), 
     IIF (([Test_Master]![Size]="med."), 
       DateAdd("m",3,[Test_Master]![DT_REPORT]), 
       {missing value - What happens if it's neither "small" nor "med."})); 
İlgili konular