更新访问查询中的空白单元格
Posted
技术标签:
【中文标题】更新访问查询中的空白单元格【英文标题】:Updating blank cells in access query 【发布时间】:2015-06-05 14:30:23 【问题描述】:我有大约 40,000 行,我正在尝试更新所有空白单元格
在 _Data table
到 "UNKNOWN"
的标题 Claim_Status
下或在表 "Status"
中输出 Claim_Status
。当我运行选择查询时,行数急剧减少到 20,000。问题是我需要全部 40,000 行。
IIf(IsNull([_DATA]![Claim_Status]),"UNKNOWN",[Status]![Claim_Status])
例如,
我有一行在 _Data 表的 ehading Claim_Status 下有一个空(空)单元格。当我运行查询时,我仍然应该在“Claim_Status”中添加“UNKNOWN”而不是空单元格的这一行。
但是,当我运行查询时,该行消失了,总行数下降到大约 20,000。我猜已经消失的行也有类似的问题。
我正在运行“选择”查询而不是“更新”查询以获取您的信息。
此外,Claim_Status 的输出不是 _Data 表中的值,而是与其链接的值。 _Data 表中的 Claim_Status 列与另一个名为“Status”的表中的 Data_Status_Type 相关联,输出是与 Data_Status_Type 中的值对应的任何内容。
这是造成整个麻烦的原因吗?
已编辑)
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])));
【问题讨论】:
您能给我们提供大约 4 条记录吗?这 4 条记录中哪些本应被选中并没有被选中,以及您的查询? 你也可以给我们整个查询,看看里面有没有什么? 我已经编辑了我的帖子,如果您需要更多信息,请告诉我 我对以下两个语句I am trying to update any blank cells...
和I am running a 'selection' query not 'update' query...
感到非常困惑,你能不能只为你的查询发布整个SQL?
IIf(IsNull([_DATA]![Claim_Status]),"UNKNOWN",[Status]![Claim_Status]) 这行是我在查询设计中为 Criteria 写的
【参考方案1】:
如果我正确理解您的要求,即返回最左侧表[_DATA]
中的所有行,并将[_DATA]![Claim_Status]
中的NULL 替换为“UNKNOWN”,那么您应该删除WHERE
子句,并将该字段添加到 Nz
函数 (http://www.techonthenet.com/access/functions/advanced/nz.php) 内的 SELECT
语句中。下面是示例 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]
为 Null,则返回 Status.Claim_Status
= "UNKNOWN" 的行,否则返回 Status.Claim_Status
等于自身的行。而且,由于您在 WHERE
子句中包含了一个外部连接表,因此您实际上将其转换为 INNER JOIN
。
【讨论】:
以上是关于更新访问查询中的空白单元格的主要内容,如果未能解决你的问题,请参考以下文章