powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нужен совет.по DataSet
15 сообщений из 15, страница 1 из 1
Нужен совет.по DataSet
    #32563340
chess
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Хотел посоветоватся по данному вопросу.
Есть форма на которой рисуются всякие графические фигуры.
Данные по графической фигуре сохраняется в DataSet.
У каждой фигуры есть куча свойств. Для заполнения этих свойств (так же хранятся в DataSet) был создан Мастер свойств, т.е. Появляется форма и предлогается ввести информацию и т.д. всего пришлось создать 20 форм.
Все данные вводимые в эти формы сохраняются во временных таблицах DataSet. В последней форме данные из временных таблиц передаются в действующие.
Проблема в том, что пришлось каждый раз из одной формы в другую передавать в качестве параметра DataSet. Когда графических фигур не много, то работает нормально, но при увеличении их числа ужастно тормазит. Посоветуйте как можно упростить.
...
Рейтинг: 0 / 0
Нужен совет.по DataSet
    #32563402
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в том, что пришлось каждый раз из одной формы в другую передавать в качестве параметра DataSet. Когда графических фигур не много, то работает нормально, но при увеличении их числа ужастно тормазит. Посоветуйте как можно упростить.


Этож сколько у вас графических фигур?

А вообще на все приложение можно использовать один DataSet.
Например, объявив его в mainForm с модификатором internal (видимость на solution). Тогда обращаться можно к нему из любой формы примерно так:
Код: plaintext
1.
MessageBox.Show(mainForm.myDataSet.DataSetName); ' где mainForm ваша главная форма 


Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Нужен совет.по DataSet
    #32563439
viper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант могу предложить выделить специальный класс для работы с датасетом, или его хранения... Плюс, уменьшаеться кол-во писанины так как все специфические функции выносяться в один класс, как вариант его можна сделать статическим...
_________________________________________________
Легче написать не правильную программу чем понять правильную (С) Alan Perlis
...
Рейтинг: 0 / 0
Нужен совет.по DataSet
    #32563503
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Sa
>MessageBox.Show(mainForm.myDataSet.DataSetName);

Я не очень много работал с C#, но по моему такая конструкция будет работать, если myDataSet еще вдобавок и статический член класса mainForm.........
...
Рейтинг: 0 / 0
Нужен совет.по DataSet
    #32563538
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vooo
>MessageBox.Show(mainForm.myDataSet.DataSetName);
Я не очень много работал с C#, но по моему такая конструкция будет работать, если myDataSet еще вдобавок и статический член класса mainForm.........

Ну я думал что будет понятно из правила именования объектов о то что mainForm это экземпляр класса MainForm. Пример привел утрированный, лишь бы подчерпнуть что используем один DataSet из главной формы.

Как вернуть mainForm уже другой вопрос так как дополнительных разъяснений по этой задаче пока нет.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Нужен совет.по DataSet
    #32563635
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все таки хотелось узнать, как более грамотно реализовать возможность обратиться к "единому" DataSet из любой формы solution. Вариантов много - от передачи в параметрах самого DataSet,
свойствам таблицы/строки / вьюхи и тд и тп (DataTable.DataSet,DataRow.Table.DataSet,DataView.Table.DataSet) принадлежащей DataSet, объявлением DataSet статическим членом основной формы до работы с отдельным классом.
Если я правильно понимаю, то при работе с DataSet, как отдельным классом, возникнут ограничения в работе с визуальной средой разработки (через xsd схему) - хотя на самом деле в подавляющем большинстве случаев создавать в датасет таблицы (соостветствующие DataAdapter), Relations и тд и тп наглядней в коде программы, нежели использовать Wizard'ы , которые создают кучу ненужного кода....

Спасибо
...
Рейтинг: 0 / 0
Нужен совет.по DataSet
    #32563645
chess
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я думал об этом, но проблема втом, что DataSet заполняется в главной форме, и если мы будем создавать mainForm какэкземпляр класса MainForm, то следовательно и DataSet у нас будет пустой.
Я же делал следующее:
Из главной формы создаем экземпляр класса Form2

Код: plaintext
1.
Form2 f=new Form2 (DS);						
f.Show ();

В Form2 добавил следующее в момент инициализации

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 mainForm.Dataset1 DS;

public FormWizard(FirePlans.Dataset1 ds)
		{
			//
			// Required for Windows Form Designer support
			//
			InitializeComponent();

			DS=ds;
			this.dataset11.Merge (ds);
			this.dataset11 .AcceptChanges ();

	//
	// TODO: Add any constructor code after InitializeComponent call
	//
		}

После добавления всей необходимой информации делал
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
// Кнопка перехода к следующей форме
private void button1_Click(object sender, System.EventArgs e)
		{
                                      DS.Clear ();
			this.dataset11.AcceptChanges ();			
			DS.Merge (this.dataset11);
			DS.AcceptChanges();

			this.Visible =false;
			this.Close();

			 Form3 f=new Form3 (DS);											
			f.Show ();
}
...
Рейтинг: 0 / 0
Нужен совет.по DataSet
    #32563666
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понимаю, то при работе с DataSet, как отдельным классом, возникнут ограничения в работе с визуальной средой разработки (через xsd схему) - хотя на самом деле в подавляющем большинстве случаев создавать в датасет таблицы (соостветствующие DataAdapter), Relations и тд и тп наглядней в коде программы, нежели использовать Wizard'ы , которые создают кучу ненужного кода....


Вся конкретика зависит от задачи.

Преимущества design можно сохранить при использовании нескольких DataSet.
Если есть необходимость то их можно слить при помощи Merge (подчеркиваю если такая необходимость есть, если нет то и не зачем сливать, обрабатываем каждый по отдельности)

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Нужен совет.по DataSet
    #32563681
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думал об этом, но проблема втом, что DataSet заполняется в главной форме, и если мы будем создавать mainForm какэкземпляр класса MainForm, то следовательно и DataSet у нас будет пустой.

Вы правильно сказали создавать . Но об этом то речи не идет, речь идет о том как вернуть экемпляр класса MainForm.

То есть это мог например быть следующий код в случае вызова из главной формы модального диалога.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
// Код в модальном диалоге, вернем mainForm
MainForm mainForm;
mainForm = (MainForm)this.Owner;
if (mainForm != null)
{
  MessageBox(mainForm.myDataSet.DataSetName);
}


Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Нужен совет.по DataSet
    #32563716
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 vooo
Да еще бы я добавил по design, мы ведь всегда можем подменить DataSource у "настроенных" компонентов нашим dataSet из mainForm.

2 chess
Мне не понятны тормоза, о каком объем данных идет речь?

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Нужен совет.по DataSet
    #32563749
chess
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне не понятны тормоза, о каком объем данных идет речь?Приблизительно до 5000 тысяч записей еще по божески, а после, приходится ждать загрузки формы в течении минуты......
...
Рейтинг: 0 / 0
Нужен совет.по DataSet
    #32563813
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял у вас существует четкая последовательность действий (что то наподобее мастера) выполняя которую на выходе получаем DataSet. Который, по завершению всех действий, необходимо "скинуть" в БД? Не вижу где у вас Update.

А также непонятно для чего очищать DataSet при Merge:
Код: plaintext
1.
DS.Clear ();


Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Нужен совет.по DataSet
    #32563985
chess
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Данные извлекаются а затем записываются в XML файл.
Очищаю для того, чтобы не продублировать данные которые уже есть в DS.
Попробовал ваш код

Код: plaintext
1.
2.
3.
4.
5.
6.
// Код в модальном диалоге, вернем mainForm
MainForm mainForm;
mainForm = (MainForm)this.Owner;
if (mainForm != null)
{
  MessageBox(mainForm.myDataSet.DataSetName);
}
но почему то mainForm всегда равен null???
...
Рейтинг: 0 / 0
Нужен совет.по DataSet
    #32564014
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chessДанные извлекаются а затем записываются в XML файл.
Очищаю для того, чтобы не продублировать данные которые уже есть в DS.

Пока думаю у вас XML файл - является слабым звеном. И все равно не понимаю почему при Merge данные дублируются?

chess
но почему то mainForm всегда равен null???

Конечно вы ведь вызываете не модальную форму (метод Show), а пример я написал если бы например у вас было так:
Код: plaintext
1.
2.
Form3 f=new Form3 ();
f.ShowDialog(this);  // this здесь обязательно
...
Рейтинг: 0 / 0
Нужен совет.по DataSet
    #32564060
chess
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может быть вы и правы по поводу XML, т.к. я с ним работаю впервые и особо времени разбираться небыло.........
А за DataSet спасибо...Вроде бы что то получается.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нужен совет.по DataSet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]