Member 13685517 Ответов: 1

Как отобразить представление SQL в представлении datagrid в приложении


Мне нужно отобразить sql-представление, созданное в datagrid, в передней части приложения, но я постоянно получаю сообщение об ошибке, что объект имеет недопустимое имя.

Метод в переднем конце для отображения данных:
private void EmpMostSales()
        {

            string sqlcmd = "select * from [Doodle_Customers].[dbo].[Empwithmostsales]";
            SqlDataAdapter da1 = new SqlDataAdapter(sqlcmd, con);
            DataTable dt1 = new DataTable();
            da1.Fill(dt1);
            datag.ItemsSource = dt1.DefaultView;

        }



Представление SQL
Create view Empwithmostsales
AS
SELECT TOP(3)
      COUNT (Orders.Emp_ID) AS Top_Sale_Employee,
	   Employees.First_Name
FROM   [Doodle_Customers].[dbo].[Orders] 
INNER JOIN
[Doodle_Customers].[dbo].[Employees] ON Orders.Emp_ID = Employees.ID
GROUP BY Employees.First_Name
ORDER BY COUNT (Orders.Emp_ID) DESC
go

select * from Empwithmostsales
go


Что я уже пробовал:

Попробовал использовать схему в операторе select

1 Ответов

Рейтинг:
9

Wendelius

Вам обязательно нужно использовать имя базы данных. Если ваша текущая база данных верна, то должно быть достаточно следующего

string sqlcmd = "select * from Empwithmostsales";

Однако имейте в виду, что учетная запись пользователя, используемая для подключения, должна иметь права доступа к представлению.


Member 13685517

попробовал и постоянно получаю ошибку--- недопустимое Имя объекта 'Empwithmostsales'

Wendelius

Вы находитесь в правильной базе данных? Взгляните на строку подключения. Правильно ли вы настроили начальный каталог? Видеть Объект sqlconnection.Свойство ConnectionString (System.Data.SqlClient)[^]

[no name]

Эй, большой пост на <а href="http://getamazoncoupons.com/"&ГТ; но это сценарий, правильно?

Member 13685517

мое представление в SQL работает на 100% , когда я выполняю его. единственная проблема, которая у меня есть, - это отобразить его в datagrid

Wendelius

Можете ли вы опубликовать точное сообщение об ошибке, которое вы получаете, и на какой строке оно возникает.

Member 13685517

System.Data.Sqlclient.sqlexception:'недопустимое имя объекта 'Empwithmostsales'.'

он находится на линии da1.fill(dt1);

Wendelius

хорошо, так что вид не может быть найден. В SQL Server, если вы выполните следующий запрос

выберите * из INFORMATION_SCHEMA.VIEWS

Что такое схема и база данных представления?

Member 13685517

Таблица Каталог - Мастер
Таблицы, схемы - ДБО

Wendelius

Это все объясняет. Представление находится не в базе данных Doodle_Customers, а в главной базе данных. С помощью среды SSMS, повторное создание представления в соответствующую базу данных.

Member 13685517

не могли бы вы объяснить, пожалуйста?

Wendelius

Основываясь на результатах запроса, вы случайно создали представление в базе данных Master. Теперь, когда вы подключаетесь к базе данных Doodle_Customers, представление не может быть найдено, так как оно находится в другой базе данных.

Использование SSMS убедитесь, что вы находитесь в правильной базе данных, либо выберите базу данных из выпадающего списка редактора, либо выполните

Используйте Doodle_Customers

После этого создайте представление в базе данных Doodle_Customers

Member 13685517

не берите в голову. спасибо у меня получилось

Wendelius

Пожалуйста

Wendelius

Не совсем понимаю, что вы подразумеваете под сценарием?

Member 13685517

это моя строка подключения, и она установлена правильно.
Источник Данных=.;Начальный Каталог=Doodle_Customers;Интегрированная Безопасность=True