【发布时间】:2016-03-29 06:40:54
【问题描述】:
我正在接手一个用 asp.net VB 编写的项目,我正在使用 mssql。
我有一个文本框,其中包含设施 (FacName) 的文本值
我想做的是当用户单击提交时,程序会获取在文本框中输入的文本,查找设施表,找到设施名称,将设施 ID 与其匹配,然后更新情节设施 ID 列。
这是我的两张桌子:
Episode Facilities
ID__________FacilityID | ID__________FacName
1___________10 | 10__________Beenleigh
2___________14 | 14__________Sunnybank
3___________15 | 15__________Brisbane
用户更新剧集以指向不同的设施 - 假设他们希望 Episode.ID '2' 引用新设施,在本例中为“布里斯班”
他们在文本框中输入布里斯班并点击提交,情节表中的结果变为:
Episode Facilities
ID__________FacilityID | ID__________FacName
1___________10 | 10__________Beenleigh
2___________15 | 14__________Sunnybank
3___________15 | 15__________Brisbane
所以它在设施表中进行查找并返回设施.id 并在 episode.FacilityID 列中使用该值
我的 select 语句运行良好,希望能帮助任何渴望回答我的问题的人!
工作选择语句:
SELECT Episode.ID, Episode.NOCSID, Episode.Disease, Episode.PHUID,
Episode.Status, Episode.Date, Episode.PersonID, Episode.ChangeType,
Episode.ChangeBy, Episode.ChangeDate, Episode.DoctorID,
Episode.FacilityID, Episode.OnsetDate, Episode.CloseDate,
Episode.Duplicate, Episode.OutbreakID, Episode.ClinicalLead,
Episode.NextActionDate, Facilities.FacName, Facilities.ID AS Expr1
FROM Episode
LEFT OUTER JOIN Facilities
ON Episode.FacilityID = Facilities.ID WHERE (Episode.ID = @ID)
不工作的 UPDATE 语句:
UPDATE Episode
SET NOCSID = @NOCSID,
Disease = @Disease,
PHUID = @PHUID,
Status = @Status,
PersonID = @PersonID,
ChangeType = 'Updated',
ChangeBy = @ChangeBy,
ChangeDate = GETDATE(),
DoctorID = @DoctorID,
OnsetDate = @OnsetDate,
CloseDate = @CloseDate,
Duplicate = @Duplicate,
OutbreakID = @OutbreakID,
ClinicalLead = @ClinicalLead,
NextActionDate = @NextActionDate,
FacilityID = @FacilityID
FROM Episode
INNER JOIN Facilities
ON Episode.FacilityID = Facilities.FacName
WHERE (Episode.ID = @original_ID)
AND (Episode.NOCSID = @original_NOCSID
OR Episode.NOCSID IS NULL
AND @original_NOCSID IS NULL)
AND (Episode.Disease = @original_Disease)
AND (Episode.PHUID = @original_PHUID)
AND (Episode.Status = @original_Status)
AND (Episode.PersonID = @original_PersonID
OR Episode.PersonID IS NULL
AND @original_PersonID IS NULL)
AND (Episode.DoctorID = @original_DoctorID
OR Episode.DoctorID IS NULL
AND @original_DoctorID IS NULL)
AND (Episode.FacilityID = @original_FacilityID
OR Episode.FacilityID IS NULL
AND @original_FacilityID IS NULL)
AND (Episode.OnsetDate = @original_OnsetDate
OR Episode.OnsetDate IS NULL
AND @original_OnsetDate IS NULL)
AND (Episode.CloseDate = @original_CloseDate
OR Episode.CloseDate IS NULL
AND @original_CloseDate IS NULL)
AND (Episode.Duplicate = @original_Duplicate
OR Episode.Duplicate IS NULL
AND @original_Duplicate IS NULL)
AND (Episode.OutbreakID = @original_OutbreakID
OR Episode.OutbreakID IS NULL
AND @original_OutbreakID IS NULL)
AND (Episode.ClinicalLead = @original_ClinicalLead
OR Episode.ClinicalLead IS NULL
AND @original_ClinicalLead IS NULL)
AND (Episode.NextActionDate = @original_NextActionDate
OR Episode.NextActionDate IS NULL
AND @original_NextActionDate IS NULL)
【问题讨论】:
-
我仍然不清楚你在问什么。我读这个的方式,听起来你想更新外键(Episode.FacilityID)。这是笔误吗?
-
为什么不直接使用 DropDownList?如果根据用户输入不存在,您是否要创建新设施?
-
Dustin - 我希望它通过 FacName 列搜索 Facility 表,获取匹配的 ID,并更新 Episode 表 FacilityID 列。我实际上有一个基于用户输入的 jquery 下拉列表。以前的版本使用了下拉菜单,但它会提取数千个结果 - 用户无法排序。
-
sqlfiddle.com/#!3/fdb1c/16 对于任何感兴趣的人,我已将查询放在这里。它的工作除了更新 FacilityID 列中的每条记录
-
我仍然对您想要什么感到困惑 - 在您的第一个示例中,您在 select 语句 Episode.FacilityID = Facilities.ID 上有一个连接,而您的更新连接语句显示 Episode.FacilityID = Facilities。姓名。
标签: asp.net sql-server vb.net webforms