C# 新查询返回的架构与基本查询不同(C/SQL-VS 2012)

C# 新查询返回的架构与基本查询不同(C/SQL-VS 2012),c#,sql,datagridview,C#,Sql,Datagridview,对于家庭作业任务,我必须开发一个C应用程序来与SQLServer数据库文件.mdf接口,提供一个dataGridView来浏览内容,并提供几个按钮来执行查询 我一直进展顺利,发现了如何向我的表适配器添加查询,如何调用它们等等 现在我在查询返回最高小时支付率时遇到问题 我有一个包含以下属性的数据库employeeID、name、position、hourlyPayRate 我的问题是 SELECT MAX(hourlyPayRate) FROM employee 我右键单击employeeTa

对于家庭作业任务,我必须开发一个C应用程序来与SQLServer数据库文件.mdf接口,提供一个dataGridView来浏览内容,并提供几个按钮来执行查询

我一直进展顺利,发现了如何向我的表适配器添加查询,如何调用它们等等

现在我在查询返回最高小时支付率时遇到问题

我有一个包含以下属性的数据库employeeID、name、position、hourlyPayRate

我的问题是

SELECT MAX(hourlyPayRate) 
FROM employee
我右键单击employeeTableAdapter,单击添加查询…,将其命名为Max并放入查询。单击“确定”时,我会收到以下错误消息:

新查询返回的架构与基本查询不同

查询在查询生成器中正确执行,只有在单击“确定”保存查询时,我才会收到错误

环顾SE,这个问题没有明确的答案


谢谢你,迈克尔。

对于所有想知道的人来说,解决方案已经找到了

问题是查询返回的表与数据库中的列数不同

通常在大多数数据库管理系统中,这不是一个问题,但由于某种原因,VisualStudio没有这些问题

解决方案是通过以下查询:

选择员工ID、姓名、职位、小时工资率 来自员工 小时工资在哪里= 选择MAXhourlyPayRate作为MaxRate 来自员工的建议很诱人


然后根据您的喜好修剪结果中不需要的部分。对我来说,这就像有一个仅从hourlyPayRate属性派生其数据的标签一样简单。

实际原因是基本查询返回的列比您添加的查询多或少。VisualStudio关心这一点;毕竟,这是一个新的查询

注意:我们谈论的是查询列,而不是数据库表列。该错误与基本查询有关-例如,填充,可能您希望使用“填充方式”并隐藏外来查询的字段-因为基本查询输出该列,而添加的查询不输出该列-新查询与基本查询的不同之处在于列不相同。我认为这样做是为了确保绑定对象被正确绑定;但我真的不知道该怎么想datagridview

比如说

Fill() Query
SELECT        Id, Name, FKtblThing_ID
FROM            ITEMS
添加此查询有效

FillByID() Query
SELECT        Id, Name, FKtblThing_ID
FROM            ITEMS
WHERE        (FKtblThing_ID = @FKtbl_ThingID)
相反,如果你尝试这个,它将不起作用

FillByID() Query
SELECT        Id, Name
FROM            ITEMS
WHERE        (FKtblThing_ID = @FKtbl_ThingID)
这是您将收到的错误:

The schema returned by the new query differs from the base query.

这里每个人都错了,您不在表适配器中编辑sql,而是在数据集中编辑sql

您是否尝试过在查询中使用列别名?例如:从employee中选择MAXhourlyPayRate作为MaxPayRate是一种延伸,但dataGridView可能在未命名的列上遇到阻碍。我尝试从employee中选择MAXhourlyPayRate作为Expr1,但没有任何改进。当我尝试通过单击dataGridView任务弹出按钮从dataGridView添加查询时,我收到相同的错误。但是,如果使用TableAdapter上的弹出按钮添加查询,则可以成功添加第二个查询。您是否尝试过以这种方式添加查询?