Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
starter
0 / 0 / 0
Регистрация: 13.07.2009
Сообщений: 3
#1

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

13.07.2009, 16:36. Просмотров 2705. Ответов 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
Здравствуйте. У меня возникла ситуация когда необходимо передать данные из...

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

Заполнение DataSet данными из другого DataSet
Здравствуйте. Есть DataSet (назовем его ds1) с 2 связанными таблицами( Table1...

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

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

8
Sergei
1449 / 716 / 103
Регистрация: 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
1449 / 716 / 103
Регистрация: 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 / 2
Регистрация: 22.08.2009
Сообщений: 34
22.08.2009, 23:42 #6
Sergei - ты не подскажешь, как после запроса, в случае если поля с таким значением нет, вместо того что бы выводились пустые поля таблицы появлялось сообщение что такого слова нет и возращалось обратно в режим поиск?
0
Green
1919 / 424 / 40
Регистрация: 12.07.2007
Сообщений: 2,062
Завершенные тесты: 2
23.08.2009, 13:44 #7
Цитата Сообщение от Your_Feelings Посмотреть сообщение
Sergei - ты не подскажешь, как после запроса, в случае если поля с таким значением нет, вместо того что бы выводились пустые поля таблицы появлялось сообщение что такого слова нет и возращалось обратно в режим поиск?
О чем это?
Поставте правильно вопрос.
0
Your_Feelings
0 / 0 / 2
Регистрация: 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 / 104
Регистрация: 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

Обновление одного значения в Базе без DataGrid и DataSet
Доброго времени. Работаю в WinForms. У меня есть метод который возвращает...

Зависание при заполнении dataset 400 000 записей. Как поместить это в отдельный поток
Всем добрый день, такой вопрос: Заполняю dataset таким образом: ds = new...

Dataset
Доброго времени суток! Не могли бы подсказать как использовать датасет в такой...


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

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

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