这是一个关于MS Access的新手问题.所以新手,我不知道如何正确地提出有关MS Access的问题.所以请原谅任何违法行为.
假设我有一个包含以下字段的数据库:
现在高度是以厘米为单位的度量.说出我们的高度测量值出了问题,对于某些日期和组,而不是厘米,英寸输入数据库.假设有太多的值实际上在数据库中更改它们.所以我需要使用MS Access工具来应用它.为简单起见,假设将英寸值除以0.4会将单位转换为厘米.
除了2013年10月4日和2013年10月5日正确输入之外,2012年和2013年的A组都错误输入了高度.
所以问题是,我如何(我的想法是在查询的设计视图中使用条件字段)使用上面指定的日期条件(包括10月例外)将高度从英寸转换为厘米?
即使把我指向正确的方向也会非常有帮助.我习惯了不同的编程语言,这使我难以从哪里开始.
更新
我急于开发一个简单的例子,我省略了我试图将此功能添加到现有查询.@winghei的答案可能很完美.但是我不清楚sql在我的查询中将它添加到我的exisitng 代码的位置.这是已经存在的代码:
SELECT LAKE.NAME_TXT AS [Group], TRAWL_TRIP.TRAWL_TRIP_DAT AS Trawl_Date, Year([TRAWL_TRIP_DAT]) AS [Year], SAMPLE.WEIGHT_NUM AS Height
FROM (((LAKE INNER JOIN STATION ON LAKE.LAKE_ID = STATION.LAKE_ID) INNER JOIN (NET_TYPE RIGHT JOIN (TRAWL_TYPE RIGHT JOIN TRAWL_TRIP ON TRAWL_TYPE.TRAWL_TYPE_ID = TRAWL_TRIP.TRAWL_TYPE_ID) ON NET_TYPE.NET_TYPE_ID = TRAWL_TRIP.NET_TYPE_ID) ON STATION.STATION_ID = TRAWL_TRIP.STATION_ID) INNER JOIN TRAWL ON TRAWL_TRIP.TRAWL_TRIP_ID = TRAWL.TRAWL_TRIP_ID) INNER JOIN (MATURITY_TYPE RIGHT JOIN (SPECIES_TYPE INNER JOIN SAMPLE ON SPECIES_TYPE.SPECIES_TYPE_ID = SAMPLE.SPECIES_TYPE_ID) ON MATURITY_TYPE.MATURITY_TYPE_ID = SAMPLE.MATURITY_TYPE_ID) ON TRAWL.TRAWL_ID = SAMPLE.TRAWL_ID
WHERE (((TRAWL_TRIP.TRAWL_TRIP_DAT)>=Nz([Forms]![frmReport]![txtTrawlDateFrom],[TRAWL_TRIP_DAT]) And (TRAWL_TRIP.TRAWL_TRIP_DAT)<=Nz([Forms]![frmReport]![txtTrawlDateTo],[TRAWL_TRIP_DAT])));
Run Code Online (Sandbox Code Playgroud)
所以现在的问题是,我在哪里添加@winghei的代码?
更新2 所以我仍然无法添加此查询.
SELECT LAKE.NAME_TXT AS [Group], TRAWL_TRIP.TRAWL_TRIP_DAT AS Trawl_Date, Year([TRAWL_TRIP_DAT]) AS [Year], SAMPLE.WEIGHT_NUM AS Height
FROM (((LAKE INNER JOIN STATION ON LAKE.LAKE_ID = STATION.LAKE_ID) INNER JOIN (NET_TYPE RIGHT JOIN (TRAWL_TYPE RIGHT JOIN TRAWL_TRIP ON TRAWL_TYPE.TRAWL_TYPE_ID = TRAWL_TRIP.TRAWL_TYPE_ID) ON NET_TYPE.NET_TYPE_ID = TRAWL_TRIP.NET_TYPE_ID) ON STATION.STATION_ID = TRAWL_TRIP.STATION_ID) INNER JOIN TRAWL ON TRAWL_TRIP.TRAWL_TRIP_ID = TRAWL.TRAWL_TRIP_ID) INNER JOIN (MATURITY_TYPE RIGHT JOIN (SPECIES_TYPE INNER JOIN SAMPLE ON SPECIES_TYPE.SPECIES_TYPE_ID = SAMPLE.SPECIES_TYPE_ID) ON MATURITY_TYPE.MATURITY_TYPE_ID = SAMPLE.MATURITY_TYPE_ID) ON TRAWL.TRAWL_ID = SAMPLE.TRAWL_ID
WHERE (((TRAWL_TRIP.TRAWL_TRIP_DAT)>=Nz([Forms]![frmReport]![txtTrawlDateFrom],[TRAWL_TRIP_DAT]) And (TRAWL_TRIP.TRAWL_TRIP_DAT)<=Nz([Forms]![frmReport]![txtTrawlDateTo],[TRAWL_TRIP_DAT])));
UPDATE(SELECT LAKE.NAME_TXT AS [Group], TRAWL_TRIP.TRAWL_TRIP_DAT AS Trawl_Date, Year([TRAWL_TRIP_DAT]) AS [Year], SAMPLE.WEIGHT_NUM AS Height
FROM (((LAKE INNER JOIN STATION ON LAKE.LAKE_ID = STATION.LAKE_ID) INNER JOIN (NET_TYPE RIGHT JOIN (TRAWL_TYPE RIGHT JOIN TRAWL_TRIP ON TRAWL_TYPE.TRAWL_TYPE_ID = TRAWL_TRIP.TRAWL_TYPE_ID) ON NET_TYPE.NET_TYPE_ID = TRAWL_TRIP.NET_TYPE_ID) ON STATION.STATION_ID = TRAWL_TRIP.STATION_ID) INNER JOIN TRAWL ON TRAWL_TRIP.TRAWL_TRIP_ID = TRAWL.TRAWL_TRIP_ID) INNER JOIN (MATURITY_TYPE RIGHT JOIN (SPECIES_TYPE INNER JOIN SAMPLE ON SPECIES_TYPE.SPECIES_TYPE_ID = SAMPLE.SPECIES_TYPE_ID) ON MATURITY_TYPE.MATURITY_TYPE_ID = SAMPLE.MATURITY_TYPE_ID) ON TRAWL.TRAWL_ID = SAMPLE.TRAWL_ID
WHERE (((TRAWL_TRIP.TRAWL_TRIP_DAT)>=Nz([Forms]![frmReport]![txtTrawlDateFrom],[TRAWL_TRIP_DAT]) And (TRAWL_TRIP.TRAWL_TRIP_DAT)<=Nz([Forms]![frmReport]![txtTrawlDateTo],[TRAWL_TRIP_DAT])));)
SET `Heightcm`=`Height`/.4
WHERE `Trawl_Date` <> #10/4/2013# AND `Trawl_Date` <> #10/5/2013# AND `GROUP` = "A" AND Year(`Trawl_Date`) = 2012 AND Year(`Trawl_Date`) = 2013
Run Code Online (Sandbox Code Playgroud)
这会导致此错误:
SQL语句结束后找到的字符
那么我命名上面的查询Temp_Query,保存它然后试过这个:
UPDATE(Temp_Query)
SET `Heightcm`=`Height`/.4
WHERE `Trawl_Date` <> #10/4/2013# AND `Trawl_Date` <> #10/5/2013# AND `GROUP` = "A" AND Year(`Trawl_Date`) = 2012 AND Year(`Trawl_Date`) = 2013
Run Code Online (Sandbox Code Playgroud)
这个处理过.但是,在数据表视图中查看此尝试时,仅Heightcm生成一列,而我想要做的是将修改后的列作为列添加到整个数据中.
这里有什么想法?
更新3 根据@krish KM的要求发布了表定义(SAMPLE)
Table: SAMPLE Page: 1
Properties
AlternateBackShade: 100 AlternateBackThemeC -1
AlternateBackTint: 100 BackShade: 100
BackTint: 100 DatasheetForeTheme -1
DatasheetGridlinesTh -1 DateCreated: 2013-02-27 8:14:59 PM
DefaultView: 2 DisplayViewsOnShare 1
FilterOnLoad: False GUID: {guid {9ADCA5B5-
DCFF-49DB-BBC2-
HideNewField: False LastUpdated: 2016-10-12 9:39:47 AM
NameMap: Long binary data OrderByOn: False
OrderByOnLoad: True Orientation: Left-to-Right
PublishToWeb: 1 ReadOnlyWhenDiscon False
RecordCount: 55907 ThemeFontIndex: -1
TotalsRow: False Updatable: True
Run Code Online (Sandbox Code Playgroud)
如果没有您的表定义,很难为您提供“好的”解决方案。
如果您的以下查询显示了正确的行。您可以使用它来更新示例表。
**
SELECT
LAKE.NAME_TXT AS [Group],
TRAWL_TRIP.TRAWL_TRIP_DAT AS Trawl_Date,
Year([TRAWL_TRIP_DAT]) AS [Year],
SAMPLE.WEIGHT_NUM AS Height
SAMPLE.its_unique_identifier
FROM (((LAKE INNER JOIN STATION ON LAKE.LAKE_ID = STATION.LAKE_ID) INNER JOIN (NET_TYPE RIGHT JOIN (TRAWL_TYPE RIGHT JOIN TRAWL_TRIP ON TRAWL_TYPE.TRAWL_TYPE_ID = TRAWL_TRIP.TRAWL_TYPE_ID) ON NET_TYPE.NET_TYPE_ID = TRAWL_TRIP.NET_TYPE_ID) ON STATION.STATION_ID = TRAWL_TRIP.STATION_ID) INNER JOIN TRAWL ON TRAWL_TRIP.TRAWL_TRIP_ID = TRAWL.TRAWL_TRIP_ID) INNER JOIN (MATURITY_TYPE RIGHT JOIN (SPECIES_TYPE INNER JOIN SAMPLE ON SPECIES_TYPE.SPECIES_TYPE_ID = SAMPLE.SPECIES_TYPE_ID) ON MATURITY_TYPE.MATURITY_TYPE_ID = SAMPLE.MATURITY_TYPE_ID) ON TRAWL.TRAWL_ID = SAMPLE.TRAWL_ID
WHERE (((TRAWL_TRIP.TRAWL_TRIP_DAT)>=Nz([Forms]![frmReport]![txtTrawlDateFrom],[TRAWL_TRIP_DAT]) And (TRAWL_TRIP.TRAWL_TRIP_DAT)<=Nz([Forms]![frmReport]![txtTrawlDateTo],[TRAWL_TRIP_DAT])));
Run Code Online (Sandbox Code Playgroud)
您的更新查询应如下所示: 编辑
UPDATE SAMPLE
inner join qry_exp_sampledata2 on sample.sample_id = qry_exp_sampledata2.sample_id
SET sample.new_WEIGHT_NUM = (WEIGHT_NUM / 0.4)
Run Code Online (Sandbox Code Playgroud)
不需要where条件,因为您的above_query仅包含您感兴趣更新的行。更新后检查值是否正确,最好进行二次更新以使用正确的值更正 WEIGHT_NUM 字段。
更正值后,您可以删除 new_num_weight 列,因为无论如何这都是“临时”列。
发布您的表格定义,以便我们更多地了解您正在寻找的内容。