Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# и базы данных, ADO.NET

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.85
starter
0 / 0 / 0
Регистрация: 13.07.2009
Сообщений: 3
#1

Отбор записей из одного DataSet в другой DataSet - C#

13.07.2009, 16:36. Просмотров 2681. Ответов 8
Метки нет (Все метки)

Совсем недавно работаю под VS2008 C#.
Имеется подключение к базе mdb. Примерная структура таблицы MAIN (поля): SURNAME (text), NAME (text), LIST (text), LICO (text), DATA (date/time).
Оттуда DataAdapter1 переливает в DataSet1 из которого отображается инфа в DataGridView1. Все это лежит на frmMain. При нажатии кнопки вызывается frm2, в которой лежит DateTimePicker1, DateTimePicker2 и кнопка ОК.
Мне необходимо, чтобы, задав требуемый интервал дат в DateTimePicker1 и DateTimePicker2 и нажав ОК, произошел отбор данных, соответствующих интервалу этих дат (либо из DataSet1, либо из DataGridView1), который будет помещен в DataSet2 (все поля таблицы MAIN).
Сижу и ломаю голову, каким образом все это реализовать, что-то не клеится никак. Помогите кодом, пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2009, 16:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Отбор записей из одного DataSet в другой DataSet (C#):

Передача данных из таблицы одной dataSet в таблицу другой dataSet - C#
Здравствуйте. У меня возникла ситуация когда необходимо передать данные из таблицы одной dataset в таблицу другой dataset, которая хранит...

Перенос записей из оного Dataset в другой и внесение изменений в БД? - C#
Зтравствуйте. Извените за возможно изъезженный вопрос, просто я только начал изучать ADO.NET и мне трудно орентироваться. Почитал...

Заполнение DataSet данными из другого DataSet - C#
Здравствуйте. Есть DataSet (назовем его ds1) с 2 связанными таблицами( Table1 и Table2, связаны по полю ID). Необходимо выбрать часть...

DataSet vs миллион записей - C#
Народ, подскажите пожайлуста, что делать... В общем есть табличка на MSSQL server, в ней больше миллиона записей. В C# надо написать...

Обновление DataSet в другой форме - C#
Ситуация следующая: При добавлении записи в таблицу необходимо обновить dataSet на другой форме, пишу следующее: private void...

Обновление одного значения в Базе без DataGrid и DataSet - C#
Доброго времени. Работаю в WinForms. У меня есть метод который возвращает DataTable (таблица из 2х столбиков : цена, название). Затем...

8
Sergei
1446 / 713 / 41
Регистрация: 22.04.2008
Сообщений: 1,610
13.07.2009, 17:11 #2
Попробуйте вот так
C#
1
2
3
4
5
oleAdapter.SelectCommand.CommandText = "SELECT * FROM MAIN WHERE DATA < '"+ dtPiker2.Value.ToShortDateString() +"' AND DATA >= '" +dtPiker2.Value.ToShortDateString()+"'";
oleAdapter.Fill(dataSet2);
//Или вот так
oleAdapter.SelectCommand.CommandText = "SELECT * FROM MAIN WHERE DATA Between '"+ dtPiker2.Value.ToShortDateString() +"' AND '" +dtPiker2.Value.ToShortDateString()+"'";
oleAdapter.Fill(dataSet2);
2
starter
0 / 0 / 0
Регистрация: 13.07.2009
Сообщений: 3
13.07.2009, 21:39  [ТС] #3
Спасибо огромное за подсказку. Теперь все заработало.
0
Sergei
1446 / 713 / 41
Регистрация: 22.04.2008
Сообщений: 1,610
15.07.2009, 09:57 #4
Будут еще вопросы спрашивайте поможем!

Добавлено через 12 часов 28 минут 48 секунд
Вы написали..
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace X
{
    public partial class frm2 : Form
    {
        public frm2()
        {
            InitializeComponent();
        }
             private void frm2_Load(object sender, EventArgs e)
        {            
            this.mAINTableAdapter.Fill(this.sHTABDataSet1.MAIN);
           }
        private void button1_Click(object sender, EventArgs e)
        {
            mAINTableAdapter.SelectCommand.CommandText = "SELECT * FROM MAIN WHERE DATA Between '" + dateTimePicker1.Value.ToShortDateString() + "' AND '" + dateTimePicker2.Value.ToShortDateString() + "'";
            mAINTableAdapter.Fill(sHTABDataSet1.MAIN);
            frm3 fr = new frm3();
            fr.Show();
        }
        private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {
        }
        private void dateTimePicker2_ValueChanged(object sender, EventArgs e)
        {
        }
    }
}
Передалайте Ваш код согласно следующему коду
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System.Data.OleDb;//Вот это надо для работы с БД
OleDbConnection conn = new OleDbConnection();//Создаем объект соединения
            conn.ConnectionString = ConnectionString;//Строка соединения
            conn.Open();
            OleDbCommand myCommand = new OleDbCommand();//Создаем объект комманды
            myCommand.Connection = conn;//Связываем с соединением
//Задаем строку комманды
            myCommand.CommandText = "SELECT * FROM MAIN WHERE DATA Between '" + dateTimePicker1.Value.ToShortDateString() + "' AND '" + dateTimePicker2.Value.ToShortDateString() + "'";
//Создаем объект адаптера данных
            OleDbDataAdapter myAdapeter = new OleDbDataAdapter();
//Задаем адаптеру объект комманды
            myAdapeter.SelectCommand = myCommand;
//Создаем объект DataSet
            DataSet myDs = new DataSet();
//Наполняем DataSet данными
            myAdapeter.Fill(myDs);
   //Связываем DataGridView с данными
            dataGridView1.DataSource = myDs;
            dataGridView1.DataMember = "MAIN";
//Или же можно так
        dataGridView1.DataSource = myDs.Tables[0];
Должно все работать

Добавлено через 3 часа 9 минут 31 секунду
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System.Data.OleDb;//Вот это надо для работы с БД
OleDbConnection conn = new OleDbConnection();//Создаем объект соединения
            conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathDB//Строка соединения где pathDB указывайте путь к файлу БД
            conn.Open();
            OleDbCommand myCommand = new OleDbCommand();//Создаем объект комманды
            myCommand.Connection = conn;//Связываем с соединением
//Задаем строку комманды
            myCommand.CommandText = "SELECT * FROM MAIN WHERE DATA Between '" + dateTimePicker1.Value.ToShortDateString() + "' AND '" + dateTimePicker2.Value.ToShortDateString() + "'";
//Создаем объект адаптера данных
            OleDbDataAdapter myAdapeter = new OleDbDataAdapter();
//Задаем адаптеру объект комманды
            myAdapeter.SelectCommand = myCommand;
//Создаем объект DataSet
            DataSet myDs = new DataSet();
//Наполняем DataSet данными
            myAdapeter.Fill(myDs);
   //Связываем DataGridView с данными
            dataGridView1.DataSource = myDs;
            dataGridView1.DataMember = "MAIN";
//Или же можно так
        dataGridView1.DataSource = myDs.Tables[0];
Добавлено через 20 часов 14 минут 33 секунды
Я ВАм напислал в личку!
2
Лилик
0 / 0 / 0
Регистрация: 22.05.2009
Сообщений: 3
15.07.2009, 15:42 #5
Спасибо за примеры.
0
Your_Feelings
0 / 0 / 1
Регистрация: 22.08.2009
Сообщений: 34
22.08.2009, 23:42 #6
Sergei - ты не подскажешь, как после запроса, в случае если поля с таким значением нет, вместо того что бы выводились пустые поля таблицы появлялось сообщение что такого слова нет и возращалось обратно в режим поиск?
0
Green
1919 / 424 / 11
Регистрация: 12.07.2007
Сообщений: 2,062
Завершенные тесты: 2
23.08.2009, 13:44 #7
Цитата Сообщение от Your_Feelings Посмотреть сообщение
Sergei - ты не подскажешь, как после запроса, в случае если поля с таким значением нет, вместо того что бы выводились пустые поля таблицы появлялось сообщение что такого слова нет и возращалось обратно в режим поиск?
О чем это?
Поставте правильно вопрос.
0
Your_Feelings
0 / 0 / 1
Регистрация: 22.08.2009
Сообщений: 34
23.08.2009, 22:07 #8
Попробую на примере. Допустим мне надо найти человека в справочнике. я ввожу в текст бокс его фамилию, инициалы. Если таковой имееться выводиться в таблице все данные о нем(адресс, телефон и проч), а если человека такого в БД нет то появляеться просто пустая таблица. как программно указать что по запросу не найдено данных?
в Делфи это работало таким образом:
Delphi
1
2
3
4
5
6
7
if ADOQuery.RecordCount<>0 then
DataSource.DataSet:=ADOQuery
else
begin
ShowMessage('Такого номера нет ');
abort();
end;
0
Rififi
2363 / 1056 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
23.08.2009, 23:06 #9
C#
1
2
if (myAdapeter.Fill(myDs) == 0)
   MessageBox.Show("Такого номера нет, насяльника!");
1
23.08.2009, 23:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2009, 23:06
Привет! Вот еще темы с ответами:

Зависание при заполнении dataset 400 000 записей. Как поместить это в отдельный поток - C#
Всем добрый день, такой вопрос: Заполняю dataset таким образом: ds = new DataSet(); dataReader.Fill(ds, &quot;моятаблица&quot;); таблицей на 400...

Dataset - C#
Доброго времени суток! Не могли бы подсказать как использовать датасет в такой ситуации. Есть таблица, в ней первое поле id - это...

Подключение к DataSet - C#
Здравствуйте. У меня есть приложение WinForm, работающее с БД MS SQL Server. Т.е. при работе происходило подключение к серверу SQL. Теперь...

Обновление DataSet в БД - C#
Беру данные из xml файла и заполняю в dataset. Затем из dataset их необходимо занести в БД(обновить данные). Вот код: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru