我在Access 2010 ADP到SQL Server 2008中构建了一个包含2个子表单的表单。我已经获得了字段,所有内容都显示为我想要它们并且可以挂接到控件中。但是,当我尝试对记录源进行排序时,我得到的"多部分标识符无法绑定"错误。如果我在访问中的“查询”构建器中运行SQL,则返回记录正常。它只是在表单加载时才会抛出错误。如果我从SQL中删除Order By,表单加载就好了。
记录子表格的来源:
SELECT tblTaskTracker.EmployeeID, tblTaskTracker.ProjectID, tblTaskTracker.ReleaseID, tblTaskTracker.TaskStatusID, tblTaskTracker.TaskPriorityID,
tblTaskTracker.DueDate, tblTaskTracker.Notes, tblTaskTracker.CompDate, tblTaskTracker.QCByID, tblTaskTracker.QCDate, tblProject.ProjectName,
tblTaskCode.TaskCodeAbbr
FROM tblTaskTracker INNER JOIN
tblProject ON tblTaskTracker.ProjectID = tblProject.ProjectID INNER JOIN
tblTaskCode ON tblTaskTracker.TaskCodeID = tblTaskCode.TaskCodeID INNER JOIN
tblTaskStatus ON tblTaskTracker.TaskStatusID = tblTaskStatus.TaskStatusID
WHERE (tblTaskStatus.TaskStatusType = 'A')
如果我添加
ORDER BY tblTaskTracker.TaskPriorityID
最后,我可以单击“运行”,然后返回预期的结果。但是,当我关闭查询构建器并尝试加载表单时,我得到了多部分标识符" tblTaskTracker.TaskPriorityID"无法受约束。我在该消息上单击“确定”,该子表单无法加载。
答案 0 :(得分:0)
我建议您熟悉编写自己的查询而不是查询构建器。然后,您可以开始使用别名,您的查询将更容易维护。
SELECT tt.EmployeeID
, tt.ProjectID
, tt.ReleaseID
, tt.TaskStatusID
, tt.TaskPriorityID
, tt.DueDate
, tt.Notes
, tt.CompDate
, tt.QCByID
, tt.QCDate
, p.ProjectName
, tc.TaskCodeAbbr
FROM tblTaskTracker tt
INNER JOIN tblProject p ON tt.ProjectID = p.ProjectID
INNER JOIN tblTaskCode tc ON tt.TaskCodeID = tc.TaskCodeID
INNER JOIN tblTaskStatus ts ON tt.TaskStatusID = ts.TaskStatusID
WHERE ts.TaskStatusType = 'A'
ORDER BY tt.TaskPriorityID
对于手头的问题,请查看您的表格并确保订单中的列拼写正确并且该表格中存在该列。
答案 1 :(得分:0)
array([[ 0.91687358, 0. , 0. , 0.78320538],
[ 0.91800106, 0. , 0. , 0.26048042],
[ 0.9117634 , 0. , 0. , 0.26153114],
[ 0.12229137, 0. , 0. , 0.27817936],
[ 0.06991369, 0. , 0. , 0.58123194],
[ 0.6772054 , 0. , 0. , 0.3209265 ],
[ 0.57055222, 0. , 0. , 0.83480474],
[ 0.10576611, 0. , 0. , 0.79239497],
[ 0.22635574, 0. , 0. , 0.37224445],
[ 0.15197674, 0. , 0. , 0.40695651]])
让我抓狂的是,无论我是使用SSMS中的ORDER BY子句还是在Access中运行原始SQL,结果都会返回预期的数据。只有在表单加载时才会出现错误。对于它的价值,主表单没有OnLoad事件。两个子表单都具有以下VBA来设置子表格数据表的列宽。
CREATE TABLE tblTaskTracker(
TaskID INT NOT NULL PRIMARY KEY IDENTITY(1,1)
,EmployeeID INT NOT NULL
,ProjectID INT NOT NULL
,ReleaseID INT NOT NULL
,TaskCodeID INT NOT NULL
,TaskStatusID INT NOT NULL
,TaskPriorityID INT NOT NULL
,DueDate DATETIME NOT NULL
,Notes NVARCHAR()
,CompDate DATETIME
,QCByID INT
,QCDate DATETIME
);
INSERT INTO tblTaskTracker(TaskID,EmployeeID,ProjectID,ReleaseID,TaskCodeID,TaskStatusID,TaskPriorityID,DueDate,Notes,CompDate,QCByID,QCDate) VALUES
(1,206,14331,1,1,1,3,'2016-05-04 00:00:00.000',NULL,NULL,NULL,NULL)
,(2,206,14331,1,2,2,3,'2016-05-04 00:00:00.000',NULL,NULL,NULL,NULL);