2015-06-05 2 views
0

У меня есть около 40 000 строк, и я пытаюсь обновить все пустые ячейки под заголовком Claim_Status в _Data table к "UNKNOWN" или выходу Claim_Status в таблице "Status". Когда я запускаю запрос выбора, количество строк резко сокращается до 20 000. Проблема в том, что мне нужны все 40 000 строк.Обновления пустых ячеек в запросе доступа

IIf(IsNull([_DATA]![Claim_Status]),"UNKNOWN",[Status]![Claim_Status]) 

Например,

У меня есть строка, которая имеет нулевой (пустой) клетки под ehading Claim_Status в таблице _data. Когда я запускаю запрос, я все равно должен включать эту строку с «UNKNOWN», добавленную в «Claim_Status» вместо пустой ячейки.

Однако, когда я запускаю запрос, строка исчезает, и общее количество строк уменьшается примерно до 20 000. Я предполагаю, что исчезли строки, похожие проблемы.

Я использую запрос «выбор», а не запрос «update» для вашей информации.

Кроме того, выход для Claim_Status не является значением из таблицы _Data, а вместо него является тот, который связан с ним. Столбец Claim_Status в таблице _Data привязан к Data_Status_Type в другой таблице с именем «Статус», а вывод - это то, что соответствует значению из Data_Status_Type.

Это то, что вызывает всю беду?

Edited)

SQL код

SELECT [_DATA].Claimant_Name, [_DATA].Account_ID, [_DATA].Claim_ID, [_DATA].Account_Name, [_DATA].Claim_Type, [_DATA].Coverage, [_DATA].Claim_Level, [_DATA].Claim_Count, [_DATA].File_Date, [_DATA].File_Year, [_DATA].Resolution_Date, [_DATA].Resolution_Year, Status.Claim_Status, [_DATA].Indemnity_Paid, Disease.Disease_Category, State.State_Filed, [_DATA].First_Exposure_Date, [_DATA].Last_Exposure_Date, [_DATA].Claimant_Employee, [_DATA].Claimant_DOB, [_DATA].Claimant_Deceased, [_DATA].Claimant_DOD, [_DATA].Claimant_Diagnosis_Date, [_DATA].Product_Type, [_DATA].Product_Line, [_DATA].[Company/Entity/PC], [Plaintiff Firm].Plaintiff_Law_Firm, [_DATA].Asbestos_Type, [_DATA].Evaluation_Date, [_DATA].Tier, [_DATA].Data_Source, [_DATA].Data_Source_Category, [_DATA].[Jurisdiction/County], [_DATA].Settlement_Demand, [_DATA].Jury_Verdict, [_DATA].Exposure_Site, [_DATA].National_Defendant_Firm, [_DATA].Local_Defendant_Firm, [_DATA].Expense_Amount, [_DATA].NCC_Expense_Amount, [_DATA].Non_NCC_Expense_Amount 
FROM (((_DATA LEFT JOIN Disease ON [_DATA].Disease_Category = Disease.Data_Disease_Type) LEFT JOIN [Plaintiff Firm] ON [_DATA].Plaintiff_Law_Firm = [Plaintiff Firm].Data_Firm) LEFT JOIN State ON [_DATA].State_Filed = State.Data_State) LEFT JOIN Status ON [_DATA].Claim_Status = Status.Data_Status_Type 
WHERE (((Status.Claim_Status)=IIf(IsNull([_DATA]![Claim_Status]),"UNKNOWN",[Status]![Claim_Status]))); 
+0

Можете ли вы дать нам ~ 4 записи и какие записи этих 4 не выбраны, а должны были быть и ваш запрос? –

+0

Также вы можете дать нам весь запрос, просто чтобы увидеть, есть ли что-нибудь там? – hypetech

+0

Я отредактировал свое сообщение, если вам нужна дополнительная информация, пожалуйста, дайте мне знать – BLkrn

ответ

0

Если я правильно понимаю, что вы после этого, что вернуть все строки из левой таблицы наиболее [_DATA], а просто заменить NULLs в [_DATA]![Claim_Status] с «UNKNOWN», тогда вы должны отказаться от предложения WHERE и добавить поле в свой оператор SELECT в функции Nz (http://www.techonthenet.com/access/functions/advanced/nz.php). Вот пример SQL:

SELECT Nz([_DATA]![Claim_Status], "UNKNOWN") As [_DATA_Claim_Status], [_DATA].Claimant_Name, [_DATA].Account_ID, [_DATA].Claim_ID, [_DATA].Account_Name, [_DATA].Claim_Type, [_DATA].Coverage, [_DATA].Claim_Level, [_DATA].Claim_Count, [_DATA].File_Date, [_DATA].File_Year, [_DATA].Resolution_Date, [_DATA].Resolution_Year, Status.Claim_Status, [_DATA].Indemnity_Paid, Disease.Disease_Category, State.State_Filed, [_DATA].First_Exposure_Date, [_DATA].Last_Exposure_Date, [_DATA].Claimant_Employee, [_DATA].Claimant_DOB, [_DATA].Claimant_Deceased, [_DATA].Claimant_DOD, [_DATA].Claimant_Diagnosis_Date, [_DATA].Product_Type, [_DATA].Product_Line, [_DATA].[Company/Entity/PC], [Plaintiff Firm].Plaintiff_Law_Firm, [_DATA].Asbestos_Type, [_DATA].Evaluation_Date, [_DATA].Tier, [_DATA].Data_Source, [_DATA].Data_Source_Category, [_DATA].[Jurisdiction/County], [_DATA].Settlement_Demand, [_DATA].Jury_Verdict, [_DATA].Exposure_Site, [_DATA].National_Defendant_Firm, [_DATA].Local_Defendant_Firm, [_DATA].Expense_Amount, [_DATA].NCC_Expense_Amount, [_DATA].Non_NCC_Expense_Amount 
FROM (((_DATA LEFT JOIN Disease ON [_DATA].Disease_Category = Disease.Data_Disease_Type) LEFT JOIN [Plaintiff Firm] ON [_DATA].Plaintiff_Law_Firm = [Plaintiff Firm].Data_Firm) LEFT JOIN State ON [_DATA].State_Filed = State.Data_State) LEFT JOIN Status ON [_DATA].Claim_Status = Status.Data_Status_Type; 

Это WHERE условие не имея желаемого эффекта, потому что он говорит, если [_DATA]![Claim_Status] Is Null затем возвращать строки, где Status.Claim_Status = «UNKNOWN», в противном случае возвращают строки, где Status.Claim_Status равно самому себе. И поскольку вы включили внешнюю объединенную таблицу в свой пункт WHERE, вы фактически превращаете это в INNER JOIN.

Смежные вопросы