Модераторы: gambit, Partizan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ComboBox + dataBinding??? 
:(
    Опции темы
informatik
Дата 7.11.2008, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.11.2007

Репутация: 2
Всего: 6



Цитата

то одна из трех теряется(исчезает),а выбранных становится две 


Ну поймите не может этого быть просто так..

Может ваш ComboBox подписан на какое то событие, которое и вызывает такую проблему...

Просмотрите ваш код внимательнее, а еще убедитесь все ли вы сами понимаете в своем коде, (без обид)
--------------------
namespace informatik
PM MAIL   Вверх
shark1
Дата 7.11.2008, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



Да какие уж тут обиды,если бы я всё понимал я бы неспрашивал.Но вы как всегда оказались правы на 1000%.Я же баран засунул в бандинг и комбобокс.Я извеняюсь,просто невнимательность + незнание = ......
И напоследок маленький штрих,почему "SELECT DISTINCT ClientName,CompanyName,ID FROM TBL_Clients" не работает,если я например добавил клиента с тем же именем,то я вижу две записи в комбобоксе.Спасибо.

Добавлено через 14 минут и 33 секунды
Вот ...,ну как же побороть двойные записи ? :(
PM MAIL   Вверх
informatik
Дата 7.11.2008, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.11.2007

Репутация: 2
Всего: 6



Да. Есть такая проблема в вашем случае.. Заключается она в том что, если даже CompanyName одинаковые, но всеравно ID то разные у всех записей...

Выборку конечно такую можно сделать, но СМЫСЛ???

ClientName - как я понимаю Имя клиента и наверно полное, т.е. ФИО..

Зачем неповторяющиеся данные по этому полю...

Каждый клиент должен быть УНИКАЛЬНЫМ...

СМЫСЛ так выбирать данные мне непонятен

По сути если у вас есть два Ивана Ивановича, то один из них вам нафиг ненужен....




Это сообщение отредактировал(а) informatik - 7.11.2008, 13:31
--------------------
namespace informatik
PM MAIL   Вверх
shark1
Дата 7.11.2008, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



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

Добавлено через 2 минуты и 3 секунды
Да и еще ClientName - ето толко имя и фамилия(и фамилия иногда)
PM MAIL   Вверх
informatik
Дата 7.11.2008, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.11.2007

Репутация: 2
Всего: 6



Цитата

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


Ничего толком непонятно... но думаю у вас еще проблема с проектированием БД....

--------------------
namespace informatik
PM MAIL   Вверх
shark1
Дата 7.11.2008, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



smile Ну смотри есть форма через кот.добовляется информация в базу.На форме:
ClientName(ComboBox)
CompanyName(textBox)
...
DoneWork(textBox)
так вот,например если клиент вернулся,то я не хочу заполнять все поля заново,хочу чтоб они бандились,а только поле DoneWork заполняю поновой,и сохроняю,и так в базе есть тот же клиент но с разной сделанной работой (для него).Спасибо.
PM MAIL   Вверх
shark1
Дата 7.11.2008, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



А какая может быть проблемма с базой.Есть одна таблица и в ней вся информация о клиентах и сделанной для них работ ???
PM MAIL   Вверх
shark1
Дата 8.11.2008, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



Или может подскажите как разделить правильно базу,чтоб в моём случае помогло.
Вот структура базы:
Category    
ClientName    
CompanyName    
Address    
City    
PostalCode    
Telephone    
Fax    
Cell    
Email    
InsertDate    
Price    
Photo    
History    
Link    
ID
Спасибо.

Это сообщение отредактировал(а) shark1 - 8.11.2008, 12:25
PM MAIL   Вверх
Partizan
Дата 8.11.2008, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



shark1, Вы описание предметной области выложите, а не структуру вашей единственной таблицы...

Добавлено через 2 минуты и 11 секунд
Цитата

А какая может быть проблемма с базой.Есть одна таблица и в ней вся информация о клиентах и сделанной для них работ ???


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


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
informatik
Дата 8.11.2008, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.11.2007

Репутация: 2
Всего: 6



Да уже ясно что как минимум две таблицы..

1. Клиенты
2. Работы

Между ними связь 1-M (Работа M-1 Клиент)

Вот в этом то у вас и проблема..
Потом можно будет написать нужный вам запрос...

Но думаю вам действительно надо почитать про Проектирование БД, чтобы вам было все понятно, как и зачем все это нуно..smile

Добавлено @ 18:33
На форме ввода работы будет выбираться клиент для которого сделана работа, и данные о  сделаной работе..

Это сообщение отредактировал(а) informatik - 8.11.2008, 18:33
--------------------
namespace informatik
PM MAIL   Вверх
shark1
Дата 9.11.2008, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



Ok,спасибо за совет.Я разделил базу на две таблицы.TBL_Clients и TBL_ClientsWork.
TBL_Clients структура:
IDClient - ключ
ClientName
Address
City
PostalCode
Telephone
Fax
Cell
Email
InsertDate
Photo
Link
TBL_ClientsWork структура:
IDClientsWork - ключ
IDClient
Category
CompanyName
Price
History- это поле куда будет вводится инфа о проделанной работе.

Теперь подскажите как исправить команды.Например раньше я сохронял в базу  так:
Код

string qry = "Insert into TBL_Clients(Category,ClientName,CompanyName,Address,City,PostalCode,Telephone,Fax,Cell,Email,InsertDate,Price,Photo,History,Link) values(@Category,@ClientName,@CompanyName,@Address,@City,@PostalCode,@Telephone,@Fax,@Cell,@Email,@InsertDate,@Price,@Photo,@History,@Link)";
                      OleDbCommand OleDbCom = new OleDbCommand(qry, conn);
                   
                      OleDbCom.Parameters.Add(new OleDbParameter("@Category", (object)categoriesComboBox.Text));
                    //OleDbCom.Parameters.Add(new OleDbParameter("@ClientName", (object)txt_ClieNameNew.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@ClientName", (object)cmb_ClientName.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@CompanyName", (object)txt_CompNameNew.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@Address", (object)txt_AddressNew.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@City", (object)txt_CityProvNew.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@PostalCode", (object)txt_PCNew.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@Telephone", (object)txt_TelNew.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@Fax", (object)txt_Newfax.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@Cell", (object)txt_Newcell.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@Email", (object)txt_Newemail.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@InsertDate", (object)txt_InsDateNew.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@Price", (object)txt_PriceNew.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@Photo", (object)imageData));
                    OleDbCom.Parameters.Add(new OleDbParameter("@History", (object)txt_Remarks.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@Link", (object)txtImagePath.Text));



                    //Open connection and execute insert query.
                    conn.Open();
                    OleDbCom.ExecuteNonQuery();
                    conn.Close();


А как теперь поменять команду чтоб сохроняло в две таблици.Большое спасибо.
PM MAIL   Вверх
informatik
Дата 9.11.2008, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.11.2007

Репутация: 2
Всего: 6



Цитата

А как теперь поменять команду чтоб сохроняло в две таблици.Большое спасибо.


В две таблицы сразу сохранять информацию нет необходимости..

Вы сначала создаете клиентов, а потом создаете работы указывая для какого клиента создана работа.
Цитата

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

--------------------
namespace informatik
PM MAIL   Вверх
shark1
Дата 9.11.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



informatik а нельзя это сделать все на одной форме?Спасибо.
PM MAIL   Вверх
informatik
Дата 9.11.2008, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.11.2007

Репутация: 2
Всего: 6



Цитата

informatik а нельзя это сделать все на одной форме?Спасибо.


Конечно можно, делайте как нравиться... Просто запросы нужно сделать отдельно...
--------------------
namespace informatik
PM MAIL   Вверх
shark1
Дата 10.11.2008, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 10.11.2007

Репутация: нет
Всего: нет



Сделал вот так:
Код

OleDbConnection conn = new OleDbConnection(txtConnectionString.Text);
                    OleDbConnection conn3 = new OleDbConnection(txtConnectionString.Text);

                    //Set insert query
                    string qry = "Insert into TBL_Clients(StatusImage,ClientName,Address,City,PostalCode,Telephone,Fax,Cell,Email,InsertDate,Photo,Link) values(@StatusImage,@ClientName,@Address,@City,@PostalCode,@Telephone,@Fax,@Cell,@Email,@InsertDate,@Photo,@Link)";
                    string qry1 = "Insert into TBL_ClientsWork (Category,CompanyName,Price,History) values(@Category,@CompanyName,Price,History)";
                   

                    
                    OleDbCommand OleDbCom = new OleDbCommand(qry, conn);
                    OleDbCommand OleDbCom1 = new OleDbCommand(qry1, conn3);

                    OleDbCom.Parameters.Add(new OleDbParameter("@StatusImage", (object)imageData1));
                    OleDbCom1.Parameters.Add(new OleDbParameter("@Category", (object)categoriesComboBox.Text));
                    //OleDbCom.Parameters.Add(new OleDbParameter("@ClientName", (object)txt_ClieNameNew.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@ClientName", (object)cmb_ClientName.Text));
                    OleDbCom1.Parameters.Add(new OleDbParameter("@CompanyName", (object)txt_CompNameNew.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@Address", (object)txt_AddressNew.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@City", (object)txt_CityProvNew.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@PostalCode", (object)txt_PCNew.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@Telephone", (object)txt_TelNew.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@Fax", (object)txt_Newfax.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@Cell", (object)txt_Newcell.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@Email", (object)txt_Newemail.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@InsertDate", (object)txt_InsDateNew.Text));
                    OleDbCom1.Parameters.Add(new OleDbParameter("@Price", (object)txt_PriceNew.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@Photo", (object)imageData));
                    OleDbCom1.Parameters.Add(new OleDbParameter("@History", (object)txt_Remarks.Text));
                    OleDbCom.Parameters.Add(new OleDbParameter("@Link", (object)txtImagePath.Text));



                    //Open connection and execute insert query.
                    conn.Open();
                    conn3.Open();
                    OleDbCom.ExecuteNonQuery();
                    OleDbCom1.ExecuteNonQuery();
                    conn.Close();
                    conn3.Close();

только у меня вот такой вопрос,мне кажетса что второй insert должен быть с where,потомучто у меня в таблице TBL_ClientsWork есть поле IDClient кот должно быть связанно с таблицей TBL_Clients.Или нет ? подскажите ка должно быть сделанно where если это вообще нужно.Спасибо.
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0779 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.