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


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

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


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

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

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

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

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

Спасибо
...
Рейтинг: 0 / 0
16.06.2004, 14:32
    #32563645
chess
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет.по DataSet
Я думал об этом, но проблема втом, что 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
16.06.2004, 14:37
    #32563666
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет.по DataSet
Если я правильно понимаю, то при работе с DataSet, как отдельным классом, возникнут ограничения в работе с визуальной средой разработки (через xsd схему) - хотя на самом деле в подавляющем большинстве случаев создавать в датасет таблицы (соостветствующие DataAdapter), Relations и тд и тп наглядней в коде программы, нежели использовать Wizard'ы , которые создают кучу ненужного кода....


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

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

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

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

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

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


Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
16.06.2004, 16:03
    #32563985
chess
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет.по DataSet
Данные извлекаются а затем записываются в 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
16.06.2004, 16:11
    #32564014
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет.по DataSet
chessДанные извлекаются а затем записываются в XML файл.
Очищаю для того, чтобы не продублировать данные которые уже есть в DS.

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

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

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


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