Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Запрос


Автор: kuller 26.4.2008, 17:41
Привет всем. Вобщем у меня такая проблема ... 
у меня есть БД сделанная в ACCESSе ну подключил я ее к С шарпу ... сделал связи все как надо ... суммирующий запросик сделал .. ну вот застрял на запросе в котором надо вывести из таблицы на экран ту информацию которая удовлетворяет условию ... то по чему искать (в данном случае фамилия ) я должен ввести с клавиатуры ... 
Подскажите как это сделать немогу разобраться с этим запросом. Заранее огромное спасибо)

Автор: Drabuna 26.4.2008, 18:14
Сделай допустим текстбокс , и в CommandText напиши:

"Select * From BlaBlaBla Where Familiya="+textbox.text.tostring();

Будешь в текстбокс вводить фамилию и выбирать.

Автор: kuller 26.4.2008, 22:41
Можно по подробней про составление запроса .. я в это не сильно понимаю

Автор: Drabuna 26.4.2008, 23:09
Чтобы получить какие то данные из базы данных и вывести на экран, тебе нужны DataAdapter, DataTable, ну и как правило выводят данные в DataGridView.

Выносишь на форму елемент из тулбокса с именем DataGridView.
Дописываеш в программе код:
Код

using System.Data.OleDb;

если ты работаешь с акссесом.

Далее создаем адаптер и таблицу:
Код

        OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("", "ТЕКСТ СТРОКИ ПОДКЛЮЧЕНИЯ ищи на connectionstrings.com/ ");
        DataTable myDataTable = new DataTable();


Текст команды, это запрос на языке SQL, типа того который я показывал. 
Теперь допустим ты на нажатие кнопки привязываешь следующее действие:

Код

myDataAdapter.SelectCommand.CommandText = "Select * From BlaBlaBla Where Familiya="+textbox.text.tostring();
//Установит комманду на выборку, в зависимости от текста текстбокса.

myDataAdapter.Fill(myDataTable); //Подключится к бд, выполнит команду, и заполнит данными нашу таблицу
 dataGridView1.DataSource = myDataTable; //Привяжет нашу таблицу к контролу, и выведет все данные из неё.




Автор: kuller 27.4.2008, 09:35
Спасибо буду пробывать)

Добавлено через 14 минут и 19 секунд
Я вот такое сделал:

Код

OleDbConnection con = new OleDbConnection();
            con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + @"Poseshaemost.mdb";
            con.Open();
            DataTable myDataTable = new DataTable();
            dataTable1TableAdapter.SelectCommand.CommandText = "SELECT * FROM Poseshaemost WHERE NomerZachetki=" + Convert.ToInt32(textBox1);
            dataTable1TableAdapter.Fill(myDataTable);
            dataGridView2.DataSource=myDataTable;
            con.Close();


но он теперь дико ругается 
1. 'BDpos.PoseshaemostDataSetTableAdapters.DataTable1TableAdapter' does not contain a definition for 'SelectCommand'
2. The best overloaded method match for 'BDpos.PoseshaemostDataSetTableAdapters.DataTable1TableAdapter.Fill(BDpos.PoseshaemostDataSet.DataTable1DataTable)' has some invalid arguments    
3. Argument '1': cannot convert from 'System.Data.DataTable' to 'BDpos.PoseshaemostDataSet.DataTable1DataTable'    

Автор: Drabuna 27.4.2008, 10:53
Если у тебя в проекте уже есть схема данных, то к DataAdapter-у который находится в схеме, ты обращаешься немного иначе:

Код

dataTable1TableAdapter.Adapter.SelectCommand.CommandText = "SELECT * FROM Poseshaemost WHERE NomerZachetki=" + Convert.ToInt32(textBox1);
dataTable1TableAdapter.Adapter.Fill(myDataTable);
dataGridView2.DataSource=myDataTable;


Должно работать.

Автор: kuller 27.4.2008, 11:11
т.е. не нужно делать подключение к БД???
Код

OleDbConnection con = new OleDbConnection();
            con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + @"Poseshaemost.mdb";
            con.Open();

а просто сразу вот так:
Код

DataTable myDataTable = new DataTable();
dataTable1TableAdapter.SelectCommand.CommandText = "SELECT * FROM Poseshaemost WHERE NomerZachetki=" + Convert.ToInt32(textBox1);
            dataTable1TableAdapter.Fill(myDataTable);
            dataGridView2.DataSource=myDataTable;

Автор: Drabuna 27.4.2008, 11:14
Если ты визардом добавил в проект базу данных, то подключение тебе не надо делать.

И не так:
Код

DataTable myDataTable = new DataTable();
dataTable1TableAdapter.SelectCommand.CommandText = "SELECT * FROM Poseshaemost WHERE NomerZachetki=" + Convert.ToInt32(textBox1);
            dataTable1TableAdapter.Fill(myDataTable);
            dataGridView2.DataSource=myDataTable;

А так:
Код

DataTable myDataTable = new DataTable();
dataTable1TableAdapter.Adapter.SelectCommand.CommandText = "SELECT * FROM Poseshaemost WHERE NomerZachetki=" + Convert.ToInt32(textBox1);
            dataTable1TableAdapter.Adapter.Fill(myDataTable);
            dataGridView2.DataSource=myDataTable;

Автор: kuller 27.4.2008, 11:21
Я вот пишу вот так:
dataTable1TableAdapter. когда ставлю точку ни Adapter в том всплывающем списке не вижу 
также нету и вот такой команды .SelectCommand.CommandText  
Может я не все подключил .... я дополнительно подключал только using System.Data.OleDb;

Автор: Drabuna 27.4.2008, 11:35
dataTable1TableAdapter это что? Ты его сам создаешь? Или он создался при использовании визарда?

Автор: kuller 27.4.2008, 11:46
Ну вобщем надо сделать 2 запроса 
1-ый я сделал и вот когда я его делал вот тут PoseshaemostDataSet.xsd через Qerity Builder а ну он короче вот ........dataTable1TableAdapter ........... этоже по ходу он создался тогда когда я с помошью мастере составления запросов сделал 1 запрос СУММИРУЮщий и ГРУППИРУЮЩИЙ ... значит для этого запроса он мне не годиться ... Значит мне надо новый как то создать так ведь???? 

Автор: kuller 27.4.2008, 17:18
Все всем спасибо я нашел выход из этой ситуации нпо другому)))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)