Страница: 1 |
Страница: 1 |
Вопрос: Сохранение локальной базы
Добавлено: 21.04.09 07:14
Автор вопроса: mr_Frank | Web-сайт:
Доброе утро\день\вечер
У меня такой вот вопрос, нужно сделать форму для добавления учеников, там данные о классе, год рождения, родители и т.д.
Это не сложно. Самое сложное сохранить эту базу локально не используя СУБД,и в последствии на другой форме отобразить, чтоб можно было выбирать, там будут два выпадающих списка, первый это какой клас, как только класс будет выбран, во втором списке список всех учеников ЭТОГО класса.
Подскажите как это будет удобнее реализовать
Почему без СУБД. Уже несколько лет воюю с ними, не как не получается изучить, на VB6 я бы это сделал через ini файл, но прочитав некоторые посты на форуме, понял что если я это сделаю меня могут помидорами забросать :)
Среда VB.NET 2005
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #1
Добавлено: 21.04.09 09:00
XML
<Students>
<Student id="1">
<Name>Вася</Name>
<Class>
<Number>1</Number>
<Letter>A</Letter>
</Class>
<Parents>
<Parent>
<Name>ewfwefwefw</Name>
...
</Parent>
</Parents>
...
</Student>
...
</Students>
Номер ответа: 2
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #2
Добавлено: 21.04.09 09:01
а вообще если по классу выбирать учеников, то класс должен быть главным, а в нем вложенно ученики
Номер ответа: 3
Автор ответа:
mr_Frank
ICQ: 316417
Вопросов: 36
Ответов: 94
Web-сайт:
Профиль | | #3
Добавлено: 21.04.09 09:02
Хм.... А можно пример как работать с XML?
Не разу не сталкивался
Номер ответа: 4
Автор ответа:
Aston
ICQ: 214-179-991
Вопросов: 42
Ответов: 272
Профиль | | #4
Добавлено: 21.04.09 11:32
Как я понял это структура базы в ХТМЛ файле. Обычно такое делается Dataset, В датасет загоняешь все таблицы что тебе надо, создаёшь их связи и поля - ну всё как пологается. Потом чтобы сохранить их команда DataSet.WriteXML, а для того чтобы загнать данные обратно в датасет DataSet.ReadXML. Но если честно в двух словах не объяснить датасет классная вещь. Поищи инфу работы с датасет - должны быть примеры с использованием ХМЛ структуры базы. Но и параллельно тебе надо будет узнать как загнать в датасет таблицы и если нужно саздать между ними связи.
Посмотри тут:
http://msdn.microsoft.com/ru-ru/library/fx29c3yd.aspx
http://msdn.microsoft.com/ru-ru/library/1t4362sd.aspx
Я мельком просмотрел вроде то. Но если нормально оковыряешься, то решишь проблему.
Номер ответа: 5
Автор ответа:
mr_Frank
ICQ: 316417
Вопросов: 36
Ответов: 94
Web-сайт:
Профиль | | #5
Добавлено: 21.04.09 13:49
Спасибо! Информация полезная. А вот еще вопрос, Как можно реализовать переход учеников? Допустим щас в базе есть ученики 5-9 классов. как сделать так, чтобы они автоматически летом первелись в следующий класс допустим 9 в 10, 8 в 9, 7 в 8, 6 в 7, 5 в 6, и наконец чтоб программа выдала, добавте учеников 5-х классов.
Номер ответа: 6
Автор ответа:
Aston
ICQ: 214-179-991
Вопросов: 42
Ответов: 272
Профиль | | #6
Добавлено: 21.04.09 14:58
Ну первое что мне пришло в голову - это сохранять последнюю дату входа в программу или можно только год вписывать. При загрузке программы проверять если год изменился, то и пишешь цикл - который всех переводит на класс вперёд и ругается что надо ввести учеников 5 классов. Но по идеи должно и месяца быть так как новый учебный год начинается с сентября. И по идеи должна быть таблица классов, в которой цикл делаешь по полю классов класс = класс + 1.
А вообще сделал бы таблицу классов я так:
ID Klass KlassLiteral
1 5 A
2 5 Б
3 5 В
.. .. ...
И поле класс в цикле меняешь и красота.
Номер ответа: 7
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #7
Добавлено: 21.04.09 15:59
ну я вообще имел ввиду что-нибудь более тривиальное, типа текстовые поля на форме заполняешь, тыкаешь кнопку добавить, создается экземпляр класса Ученик и добавляется к массиву, потом все в файл сохраняем, без всяких датасетов.
насчет перевода, что тут сложного то, проходим по всем ученикам и прибавляем номер класса на 1, насчет автоматического эт хз, лучше сделай кнопку типа перевести всех в след класс.
Номер ответа: 8
Автор ответа:
Kardinal
ICQ: 360041513
Вопросов: 1
Ответов: 164
Web-сайт:
Профиль | | #8
Добавлено: 21.04.09 16:45
Можно прописать год поступления и от него ставить класс, с поправкой на то что кто-то может остаться на 2 год
Номер ответа: 9
Автор ответа:
Aston
ICQ: 214-179-991
Вопросов: 42
Ответов: 272
Профиль | | #9
Добавлено: 21.04.09 20:18
Мне кажется тут класс Ученик не поможет. Я примерно писал программу для тестирования студентов по сети. И понятно что есть группы и студенты - которые учитываются. Тут же учебные классы, а в один учебный класс входят некое число учеников - по базам это проблема решается просто, создаётся таблица учебных классов и таблица учеников и создаётся связь один ко многим. А класс Ученик не поможет так тебе например надо будет вывести всех учеников одного класса и тебе придётся самому писать выборку. И вот как в вопросе задали будет список классов - тое это список надо будет вытаскивать из класса учеников и ещё группировать - моё мнение - так не правильно будет. Если бы я писал и знал что эту базу никто использовать не будет с другого компа. То создал бы несколько таблицы в датасет, создал связи и вперёд, при загрузки с датасет всё равно связи и данные всё есть и датасет считается клиентской базой, вот только применение может быть очень разное.
Номер ответа: 10
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #10
Добавлено: 22.04.09 21:28
Отказ от СУБД является довольно странным (хотя причину "Уже несколько лет воюю с ними, не как не получается изучить" с некоторой натяжкой можно назвать уважительной).
Сейчас в качестве локальной базы есть смысл использовать Microsoft SQL Server CE (изначально, кстати, разрабатывался под разные телехфоны и камуникаторы). Бесплатный, рантайм около 3 МБ, можно заставить работать без инсталляции. Присутствуют все базовые возможности "настоящего" SQL Server (из того что может иметь значение - нет хранимых процедур, нет полнотекстового поиска), почти полная поддержка запросов SQL. Работа с базой ведется с помощью тех же механизмов что и с SQL Server. Сейчас также поддерживается LinQ 2 SQL (правда с небольшим скрипом).
По поводу проектирования самой БД советов дать никаких не могу, потому что они будут излишними, просто воспользуйся стандартными подходами к проектированию базы данных.
Для определения в каком классе ученик, можно завести столбец с датой поступления ученика и периодически пересчитывать, в каком классе находится ученик, сохранять это значение в БД.
Номер ответа: 11
Автор ответа:
fluke
ICQ: 318170731
Вопросов: 15
Ответов: 96
Профиль | | #11
Добавлено: 23.04.09 11:02
Классы
Код_Класса
Учебный_Год – 2008\2009
Класс
Постфикс
Школьники
Код_Школьника
ФИО_Школьника
Ученики
Код_Класса
Код_Ученика
Родители
Код_Родителя
Код_Ученика
ФИО_Родителя
Ученики - Содержит список учеников в классе, в разрезе учебного года. Новый учебный год, новые записи в таблице Школьники.
Номер ответа: 12
Автор ответа:
fluke
ICQ: 318170731
Вопросов: 15
Ответов: 96
Профиль | | #12
Добавлено: 23.04.09 11:06
Сори, новые записи в таблице Ученики. используя эту таблицу, можно вести историю обучения школьников в определенном классе, учитывая, что один школьник, в одном учебном году, может менять классы.