Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Сохранение локальной базы Добавлено: 21.04.09 07:14  

Автор вопроса:  mr_Frank | Web-сайт: subaru.nv-avto.ru | ICQ: 316417 
Доброе утро\день\вечер

У меня такой вот вопрос, нужно сделать форму для добавления учеников, там данные о классе, год рождения, родители и т.д.
Это не сложно. Самое сложное сохранить эту базу локально не используя СУБД,и в последствии на другой форме отобразить, чтоб можно было выбирать, там будут два выпадающих списка, первый это какой клас, как только класс будет выбран, во втором списке список всех учеников ЭТОГО класса.
Подскажите как это будет удобнее реализовать
Почему без СУБД. Уже несколько лет воюю с ними, не как не получается изучить, на VB6 я бы это сделал через ini файл, но прочитав некоторые посты на форуме, понял что если я это сделаю меня могут помидорами забросать :)
Среда VB.NET 2005

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #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-сайт: iSkywalker.ru
 Профиль | | #2
Добавлено: 21.04.09 09:01
а вообще если по классу выбирать учеников, то класс должен быть главным, а в нем вложенно ученики

Ответить

Номер ответа: 3
Автор ответа:
 mr_Frank



ICQ: 316417 

Вопросов: 36
Ответов: 94
 Web-сайт: subaru.nv-avto.ru
 Профиль | | #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-сайт: subaru.nv-avto.ru
 Профиль | | #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-сайт: iSkywalker.ru
 Профиль | | #7
Добавлено: 21.04.09 15:59
ну я вообще имел ввиду что-нибудь более тривиальное, типа текстовые поля на форме заполняешь, тыкаешь кнопку добавить, создается экземпляр класса Ученик и добавляется к массиву, потом все в файл сохраняем, без всяких датасетов.

насчет перевода, что тут сложного то, проходим по всем ученикам и прибавляем номер класса на 1, насчет автоматического эт хз, лучше сделай кнопку типа перевести всех в след класс.

Ответить

Номер ответа: 8
Автор ответа:
 Kardinal



ICQ: 360041513 

Вопросов: 1
Ответов: 164
 Web-сайт: kg7.ru
 Профиль | | #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
Сори, новые записи в таблице Ученики. используя эту таблицу, можно вести историю обучения школьников в определенном классе, учитывая, что один школьник, в одном учебном году, может менять классы.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам