2015-06-22 2 views
0

я создал следующий запрос в MS ACCESS:коробки остаться пустым после UPDATE SQL запроса в MS-Access

"UPDATE dbo_PricingFutures 
SET dbo_PricingFutures.ttm = 
DateDiff('m',dbo_PricingFutures.PricingDate,DateSerial(dbo_PricingFutures.PricingYear,dbo_PricingFutures.PricingMonth,14));" 

При запуске запроса, который должен вычислить разницу между датами. Он говорит, что собирается обновить записи:

updating rows

Однако поля в столбце оставаться пустым. Я не понимаю, почему?

+0

Я думаю, что вы видите SELECT запроса, который всегда будет пустым. Чтобы увидеть, действительно ли запрос вызвал эффект, вам нужно проверить таблицу, которую вы обновляете. – PaulFrancis

+0

Я проверил стол, и он по-прежнему пуст –

+0

Curios. Когда вы нажимаете «Да» в указанное выше сообщение, появляется ли сообщение с предупреждением или сообщением об ошибке? – PaulFrancis

ответ

0

С ошибкой в ​​столбце pricetingdate было пусто. Я побежал следующий код: Vba

Sub ttm() 
    Dim db As Database, rs As DAO.Recordset, strsql As String 
    Dim startdate As Date, maturity As Date, maturity_month As Double 
    Dim maturity_year As Double 

    Set db = CurrentDb() 
    strsql = "SELECT * FROM dbo_PricingFutures ORDER BY PricingDate;" 
    Set rs = db.OpenRecordset(strsql, dbOpenDynaset) 
    rs.MoveFirst 
    While (Not rs.EOF()) 
     rs.Edit 
     startdate = rs.Fields("PricingDate") 
     maturity_month = rs.Fields("PricingMonth") 
     maturity_year = rs.Fields("PricingYear") 
     maturity = DateSerial(maturity_year, maturity_month, 14) 
     rs.Fields("ttm") = DateDiff("d", startdate, maturity) 
     rs.Update 
rs.MoveNext 
    Wend 

    rs.Close 
    db.Close 
End Sub 

Тогда я получил ошибку на следующей строке:

startdate = rs.Fields("PricingDate") 

Он показал, что колонна PricingDate была пуста. Затем я взял данные из старой резервной копии, скопировав/вставив в колонку PricingDate, и она отлично работала.

Код SQL работал без ошибки.