Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Разработка приложения на C# / 25 сообщений из 26, страница 1 из 2
14.10.2016, 02:20
    #39326709
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
Как через кнопку добавить элемент, например название города в ListBox и сделать его ссылкой на другую форму где будет хранится некая информация о городе, например: название, численность населения, площадь, которую можно будет редактировать

т.е.
шаг 1. На form1 Нажимаем на "добавить".
шаг 2. Появляется form2 с анкетой о городе, заполняем ее, сохраняем кнопкой "Сохранить". Информация сохраняется в табличку Access.

шаг 3. После этого всего в listbox1 на form1 (Города) появляется запись "Название" , например Якутск

шаг 4. Запускаем приложения
шаг 5. Для просмотра и редактирования нужно нажать на Якутск, открывается form2 (анкета)


вообщем интерфейс такой:



Заранее спс
...
Рейтинг: 0 / 0
14.10.2016, 05:48
    #39326721
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
Нарисовал норм, делов минут на 30. Что не получается?
...
Рейтинг: 0 / 0
15.10.2016, 18:58
    #39327609
Doomplay998
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
Если по-простому без всяких паттернов, то заводишь класс города (City, напимер), заводишь список городов, байндишь этот список к листбоксу, где для отображения городов в списке выбираешь название города.

Заводишь обработчик в литсбоксе для вызова формы. При вызове формы передаёшь в неё выбранный город, где байндишь поля города на поля формы.

Далее нюансы - если используешь какой-то механизм привязок, то сохраняться всё должно и так. Если всё руками делаешь, то, соответственно, пишешь код, который переводит поля города в поля формы, выводит города в листбокс по их названиям, сохраняет город из формы в список городов и обновляет при этом листбокс.

Вообще, рекомендовал бы сделать всё на WPF и использовать встроенные привязки. Вот самый простой пример для WPF для отображения твоего списка городов. Добавить функциональности для создания и сохранения города - уже надо посложнее пример. Вот такой , например. Только вместо форм - вкладки, что сути не меняет. Вот ещё простой пример твоей тематики, только без отдельной формы для редактирования, а просто в специально области над списком.
...
Рейтинг: 0 / 0
17.10.2016, 03:48
    #39327914
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
Спасибо за ответ. Буду тренироваться для меня C# лес густой, решил просто по пробовать более сложную написать в отличие от той, в которой используется datagridview.
...
Рейтинг: 0 / 0
26.10.2016, 09:43
    #39334104
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
Что нужно сделать, чтобы после вызова из form1 рис 1
form2 строго центрировалась на form1 рис 2????

и так же окна оповещения, например "Удалить запись, да\нет" окно просто смещается вправо относительно form
...
Рейтинг: 0 / 0
26.10.2016, 09:43
    #39334106
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
и рис 2
...
Рейтинг: 0 / 0
26.10.2016, 15:22
    #39334499
Doomplay998
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
...
Рейтинг: 0 / 0
02.11.2016, 01:43
    #39339494
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
Подскажите направление в решение задачи, вообщем есть бд access в ней есть 2 табл.
В приложение написанное на C# в Visual Studio 2013.
Такая структура:

На главной форме есть два лист бокса:
- 1 листбокс - список компаний,
- 2 листбокс - список сотрудников выбранной компании.

Проблема в том, что нужно чтобы при создании компании с одинаковым именем (например интел) все сотрудники аналогичной компании автоматом входят в состав новой. А надо, чтоб этого не было.

В каждой таблице есть поле ID, но как связать ID компании с сотрудником, ума не приложу!
Первый шаг, что я сделал это поле с названием организации в таблице сотрудников: 1. числовым 2. вручную забил туда ID компании
Ну а дальше все тупик ....
...
Рейтинг: 0 / 0
02.11.2016, 01:44
    #39339495
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
забыл написать, каждый листбокс - это отдельная таблица в БД
...
Рейтинг: 0 / 0
02.11.2016, 04:17
    #39339502
Doomplay998
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
SAS2014нужно чтобы
SAS2014А надо, чтоб этого не было.
Так нужно или не нужно? ))

В любом случае, вам надо изучить, что такое связи между таблицами и как создавать связи "один к одному", "один ко многим" и "много ко многим". В частности, если у вас ни одни сотрудник не может работать сразу более, чем в одной компании, то достаточно в таблице сотрудников завести поле CompanyID - т. е. идентификатор компании. Тогда каждый сотрудник будет привязан к какой-нибудь компании, причём только к одной.
...
Рейтинг: 0 / 0
02.11.2016, 04:20
    #39339503
Doomplay998
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
Doomplay998Тогда каждый сотрудник будет привязан к какой-нибудь компании, причём только к одной.
При этом можно создавать компании с одинаковыми именами, но разными идентификаторами, но сотрудник всё равно будет привязан только к компании с конкретным идентификатором, независимо от её названия.

А вообще, названия компаний тоже следовало бы сделать уникальными - чтобы нельзя было создавать компании с одинаковыми именами. Вроде, в реальном мире одновременно не могут существовать компании с одинаковыми именами. Даже если это холдинг - всё равно мать и все дочки по-разному называются.
...
Рейтинг: 0 / 0
02.11.2016, 06:14
    #39339512
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
Doomplay998SAS2014нужно чтобы
SAS2014А надо, чтоб этого не было.
Так нужно или не нужно? ))

В любом случае, вам надо изучить, что такое связи между таблицами и как создавать связи "один к одному", "один ко многим" и "много ко многим". В частности, если у вас ни одни сотрудник не может работать сразу более, чем в одной компании, то достаточно в таблице сотрудников завести поле CompanyID - т. е. идентификатор компании. Тогда каждый сотрудник будет привязан к какой-нибудь компании, причём только к одной.
нужно
так и есть при создание записи в таблице т.е. компании создается ее уникальный ID
...
Рейтинг: 0 / 0
02.11.2016, 06:16
    #39339513
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
Doomplay998SAS2014нужно чтобы
SAS2014А надо, чтоб этого не было.
Так нужно или не нужно? ))


нужно чтобы при создание компании сотрудники уже записаной в БД такой же кампании не попадали в новую
...
Рейтинг: 0 / 0
02.11.2016, 06:19
    #39339514
Doomplay998
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
SAS2014Doomplay998пропущено...

пропущено...

Так нужно или не нужно? ))


нужно чтобы при создание компании сотрудники уже записаной в БД такой же кампании не попадали в новую

автордостаточно в таблице сотрудников завести поле CompanyID - т. е. идентификатор компании. Тогда каждый сотрудник будет привязан к какой-нибудь компании, причём только к одной.
...
Рейтинг: 0 / 0
02.11.2016, 09:49
    #39339600
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
а без создания дополнительных столбцов в табл. сотрудников что ни как, если уже есть столбец с ID компаниями в табл. сотрудники.
...
Рейтинг: 0 / 0
02.11.2016, 10:28
    #39339632
Doomplay998
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
SAS2014а без создания дополнительных столбцов в табл. сотрудников что ни как, если уже есть столбец с ID компаниями в табл. сотрудники.
На самом деле надо ещё создать так называемое отношение - сущность, которая связывает две таблицы. Я не совсем понял, что вы раньше имели ввиду под "вручную забил ID компании". При отношении есть разные правила - на удаление, добавление, изменение записей и прочие действия. Чтобы СУБД отрабатывала автоматически эти действия, нужно задать эти отношения с правилами. Если таблицы будут без отношений, то вам нужно будет реализовать операции, связанные с изменениями сразу в нескольких таблицах, в самом приложении - т. е. вне базы данных. Такой подход не распространён и не рекомендуется.

Там много ещё каких нюансов есть, которые здесь обсуждать нет смысла - мы же не будет за вас писать вам приложение с нуля на протяжении всей темы на форуме. )))

Такое ощущение, что вы либо не читали ничего про базы данных, либо только первые главы в какой-нибудь книжке прочитали. Советую ознакомиться с этой темой подробнее. Т. е. если у вас какая-то книжка по Аксессу (сам я им не пользовался), то почитайте побольше. Там должна быть общая теория баз данных - что такое таблицы, отношения, нормальные формы (хотя бы первые две, без которых нормальные БД не делаются). Без этого нет смысла что-то дальше обсуждать - вы будете спотыкаться об каждое слово и на каждом шагу делать не так.

И да, в будущем старайтесь создавать отдельные темы по разным вопросам, чтобы эти темы не превращались в персональные обсуждения персональных проблем.
...
Рейтинг: 0 / 0
03.11.2016, 01:41
    #39340423
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
с нуля то не надо приложение написал, просто хотел ставить блокировку на создания одноименных компаний, но начальство сказала нет. вот и сел я в болото.

был вариант хитрый, с добавлением некого суффикса к имени компании при ее сохранении в базу, в базе компания с суффиксом, а на форме без него.

пример

с суффиксом в БД:
асус
интел_1
интел_2

а в приложение суффиксы скрытны:
асус
интел
интел
...
Рейтинг: 0 / 0
03.11.2016, 06:47
    #39340445
Doomplay998
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
Если надо компании уникальные, но с возможностью одинаковых имён - делаете уникальный идентификатор, а столбец имени делаете неуникальным. В таблице сотруюников заводите поле "идентификатор компании" - не "имя компании". Тогда сотрудник будет привязан к идентификатору компании, а не к её имени.

Естественно , что при выводе всех сотрудников всех компаний с одинаковым именем они будут находиться как бы под одной компанией. Может, в этом у вас проблемы, я понять не могу? Но если так, то это и должно быть . Хотели одинаковые имена для компаний - получили. Требование, чтобы у компаний были одинаковые имена , но их сотрудники были под компаниями с разными именами - немного противоречиво, если вообще не антилогичный бред, не находите? Но если нужна такая идиотия, то и для неё у нас есть некоторый подход - заводите для компаний ещё один столбец что-то вроде DisplayName - имя для показа в интерфейсах и прочих местах, где надо отображать имя компании. Там можно сделать разное отображение - типа "Intel 1", "Intel 2" и т. п. Теперь в таблице компании есть три гланых для нас столбца - "идентификатор", к которому привязываются сотрудники, неуникальное "имя" и уникальное "имя для показа". Но мне сдаётся, что этот бред, будучи явленным вашему начальству, сразу покажет, что "начальник - дурак" и вам скажут всё переделать - сделать уникальные имена для компаний. Впрочем, это не моё дело - я вам предложил возможный подход для реализации бреда.

Ещё раз рекомендую прочитать про базы данных подробнее - многие вещи должны для вас проясниться.
...
Рейтинг: 0 / 0
11.11.2016, 07:16
    #39345337
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
1. А по каким причинам происходит задержка обновления LISTBOX или считывания данных с БД Access?

т.е. я добавляю сотрудника в компанию в базу данных он попадает, но отображение в листбоксе проходит с задержкой (~ 3 сек)

2. Если я хочу сделать так , чтобы при удалении компании удалялись сразу и ее сотрудники, я так понимаю, тут нужно удаление проводить по ID или как?
...
Рейтинг: 0 / 0
17.11.2016, 06:29
    #39348772
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
ок, что тогда нужно написать на события закрытия формы3 , чтобы обновился листбокс2 на форме 1?
...
Рейтинг: 0 / 0
17.11.2016, 06:45
    #39348774
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
SAS2014ок, что тогда нужно написать на события закрытия формы3 , чтобы обновился листбокс2 на форме 1?
Код: c#
1.
2.
3.
4.
void ЗакрытиеФормы3(object sender, EventArgs e)
{
    Форма1.ОбновитьЛистбокс2();
}
...
Рейтинг: 0 / 0
18.11.2016, 02:57
    #39349542
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
Алексей КSAS2014ок, что тогда нужно написать на события закрытия формы3 , чтобы обновился листбокс2 на форме 1?
Код: c#
1.
2.
3.
4.
void ЗакрытиеФормы3(object sender, EventArgs e)
{
    Форма1.ОбновитьЛистбокс2();
}



ок спс буду пробовать
...
Рейтинг: 0 / 0
18.11.2016, 09:51
    #39349628
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
а как лучше объявить в качестве переменной листбокс 2
так как отладчик ругается на лист бокс2 в теле кода закрытия формы
...
Рейтинг: 0 / 0
18.11.2016, 13:13
    #39349787
Agapov_stas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
SAS2014Алексей Кпропущено...

Код: c#
1.
2.
3.
4.
void ЗакрытиеФормы3(object sender, EventArgs e)
{
    Форма1.ОбновитьЛистбокс2();
}


ок спс буду пробовать
автора как лучше объявить в качестве переменной листбокс 2
так как отладчик ругается на лист бокс2 в теле кода закрытия формы



P.S. Простите, не сдержалсо
...
Рейтинг: 0 / 0
18.11.2016, 16:54
    #39349980
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разработка приложения на C#
Agapov_stas,

у человека 1300 сообщений на форуме, а вам смешно
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Разработка приложения на C# / 25 сообщений из 26, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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