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

Поиск:

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


Опытный
**


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

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



Подскажите плиззз,вот так заполняю combobox,
Код :
Код

conn1 = new OleDbConnection();
                    conn1.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Data\\Client_DB.mdb";
                    //create data adapter
                    adapter1 = new OleDbDataAdapter("SELECT DISTINCT ClientName FROM  TBL_Clients", conn1);
                     //Create a Dataset
                    ds1=new DataSet();
                    dataTable1 = ds1.Tables.Add("Clients");
                    adapter1.Fill(ds1, "Clients");

                    cmb_ClientName.DataSource = ds1.Tables["Clients"];
                    cmb_ClientName.DisplayMember = "ClientName";
                    cmb_ClientName.ValueMember = "ClientName";
                    cmb_ClientName.SelectedIndex = -1;

А теперь как сделать,чтоб при выборе чего нибудь из combobox-а в соответствии заполнялись информацией textbox-ы.
Вот например в datagridview если я делаю так :
Код

this.txt_CompNameNew.DataBindings.Add("Text", dataTable, "CompanyName", true, DataSourceUpdateMode.OnPropertyChanged);                   
                  this.txt_CompNameMail.DataBindings.Add("Text", dataTable, "CompanyName", true, DataSourceUpdateMode.OnPropertyChanged);                    
                    this.txt_ClientNameMail.DataBindings.Add("Text", dataTable, "ClientName", true, DataSourceUpdateMode.OnPropertyChanged);

то все работает.
А как такоеже сделать с combobox-ом.Зарание спасибо. 
PM MAIL   Вверх
Bogdan1024
Дата 6.11.2008, 01:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

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



Ну. На событии SelectedIndexChanged тяни данные и записывай их в текстбоксы. Не?


--------------------
user posted image
PM MAIL   Вверх
shark1
Дата 6.11.2008, 02:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А как тянуть то smile ???
PM MAIL   Вверх
Nestap
Дата 6.11.2008, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



shark1

а не лехче исползуть DataReader чем адаптер?


--------------------
<?    echo "Nestap";?>
PM WWW ICQ Skype Jabber   Вверх
jorikdima
Дата 6.11.2008, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 18.1.2008
Где: Там, где Зенит

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



Цитата(shark1 @ 6.11.2008,  02:46)
А как тянуть то smile ???

Зная индекс, знаешь ряд в таблице.
PM MAIL   Вверх
informatik
Дата 6.11.2008, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вообще все должно также работать...

Только в запрос нужно включать те поля которые вы хотите отображать в текстбоксах..

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


Опытный
**


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

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



киньте примерчик.Спасибо.
PM MAIL   Вверх
informatik
Дата 7.11.2008, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

         SqlConnection con = new SqlConnection("Строка подключения");
            SqlCommand cmd = new SqlCommand("SELECT PK, NAME, FNAME FROM Таблица",con);
            SqlDataAdapter da = new SqlDataAdapter(cmd);

            DataSet ds = new DataSet("DS");
            ds.Tables.Add("Table");

            da.Fill(ds.Tables["Table"]);

            comboBox1.DataSource = ds.Tables["Table"];
            comboBox1.DisplayMember = "NAME";
            comboBox1.ValueMember = "PK";

            textBox1.DataBindings.Add("Text",ds.Tables["Table"],"PK");
            textBox2.DataBindings.Add("Text",ds.Tables["Table"],"NAME");
            textBox3.DataBindings.Add("Text",ds.Tables["Table"],"FNAME");


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


Опытный
**


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

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



Спасибо большое я попробовал,и вот выдаёт такую ошибку :
"System.ArgumentException was unhandled
  Message="Cannot bind to the property or column CompanyName on the DataSource.\r\nParameter name: dataMember"
Код:
Код

conn1 = new OleDbConnection();
                    conn1.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Data\\Client_DB.mdb";
                    command1 = new OleDbCommand("SELECT DISTINCT  ClientName FROM  TBL_Clients", conn1);
                    adapter1 = new OleDbDataAdapter(command1);

                    ds1 = new DataSet("DS");
                    ds1.Tables.Add("NewClients");

                    adapter1.Fill(ds1.Tables["NewClients"]);

                    cmb_ClientName.DataSource = ds.Tables["NewClients"];
                    cmb_ClientName.DisplayMember = "ClientName";
                    cmb_ClientName.ValueMember = "ID";

                    
                    this.txt_CompNameNew.DataBindings.Add("Text", ds1.Tables["NewClients"], "CompanyName");

Подскажите в чём причина.
Mожет в запросе,но мне нужно делать так "SELECT DISTINCT  ClientName FROM  TBL_Clients" потому что в Базе есть повторяющиеся ClientName,а так запрос их сортирует и убирает дубликаты.Спасибо.
PM MAIL   Вверх
informatik
Дата 7.11.2008, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Я же вам говорил что нужно включать в запрос поля которые хотите отображать! А как иначе то? Чтобы посмотреть данные их нужно получить.

Напишите вот так
Код

command1 = new OleDbCommand("SELECT DISTINCT  ClientName, CompanyName, ID FROM  TBL_Clients", conn1);


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


Опытный
**


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

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



Ok,я поменял строку запроса
Код

conn1 = new OleDbConnection();
                    conn1.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Data\\Client_DB.mdb";
                    command1 = new OleDbCommand("SELECT DISTINCT ClientName, CompanyName, ID   FROM  TBL_Clients", conn1);
                    adapter1 = new OleDbDataAdapter(command1);

                    ds1 = new DataSet();
                    ds1.Tables.Add("NewClients");

                    adapter1.Fill(ds1.Tables["NewClients"]);

                    cmb_ClientName.DataSource = ds.Tables["NewClients"];
                    cmb_ClientName.DisplayMember = "ClientName";
                    cmb_ClientName.ValueMember = "ID";

                    this.textBox2.DataBindings.Clear();
                    textBox2.DataBindings.Add("Text", ds1.Tables["NewClients"], "ID");
                    this.txt_CompNameNew.DataBindings.Clear();
                    this.txt_CompNameNew.DataBindings.Add("Text", ds1.Tables["NewClients"], "CompanyName");
                    this.cmb_ClientName.DataBindings.Clear();
                    this.cmb_ClientName.DataBindings.Add("Text", ds1.Tables["NewClients"], "ClientName");

и у меня почему то в combobox-е только одно первое значение из базы,а где остальные ???
Спасибо.
PM MAIL   Вверх
thomas
Дата 7.11.2008, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



shark1
Приветик.
Я лично комбобоксы в цикле заполняю.
Код

//invullen ComboBoxen 
foreach (DataRow dr in ds.Tables["klanten"].Rows)
{
    cmbKlant.Items.Add(dr["Naam klant"]); 
}

Т.е. из БД в таблицу ДатаСет считываю данные, а потом из колонки имена клиентов беру имена, в цикле пробегаюсь по строкам и заношу данные в комбо бокс.
Все.

Удачи.  smile  

Это сообщение отредактировал(а) thomas - 7.11.2008, 09:54


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
shark1
Дата 7.11.2008, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я с этим разобрался,теперь вижу всех,но Что то не так как надо.Например я добавил трёх клиентов.
Например:
name :1
compname:1
name:2
compname:2
name:3
comppname:3
вопервых получаю срау в combobox последнюю запись и соответственно в textbox_comname бандинг.Но вот если я выбираю какую то запись из combobox-а ,то одна из трех теряется(исчезает),а выбранных становится две :(,что за ....Спасибо.
Неувидел thomas кинь примерчик плиззз.Спасибо.

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


Бывалый
*


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

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



Код

и у меня почему то в combobox-е только одно первое значение из базы,а где остальные ???


Если так происходит, то возможно все ваши значения во всех строках таблицы идентичны даже по ID, что неприемлемо(по ID).

DISTINCT следит за тем чтобы не выводились повторяющиеся значения и если в запросе несколько полей, то строки сравниваются по всем полям.

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


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

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

вопервых получаю срау в combobox последнюю запись и соответственно в textbox_comname бандинг.Но вот если я выбираю какую то запись из combobox-а ,то одна из трех теряется(исчезает),а выбранных становится две :(,что за ....Спасибо.


Думаю теперь можно практически на 100% быть уверенным что ошибка не в том коде который вы представляете...
--------------------
namespace informatik
PM MAIL   Вверх
shark1
Дата 7.11.2008, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Хм :( вот весь код,
Код

private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
        {
            try
            {

                if (tabControl1.SelectedTab == tabPage2)
                {                    
                    /////
                    ///// Fill ComboBox
                    /////
                    conn1 = new OleDbConnection();
                    conn1.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Data\\Client_DB.mdb";
                    command1 = new OleDbCommand("SELECT DISTINCT ClientName, CompanyName, ID   FROM  TBL_Clients", conn1);
                    adapter1 = new OleDbDataAdapter(command1);

                    ds1 = new DataSet("DS");
                    ds1.Tables.Add("NewClients");

                    adapter1.Fill(ds1.Tables["NewClients"]);

                    cmb_ClientName.DataSource = ds1.Tables["NewClients"];
                    cmb_ClientName.DisplayMember = "ClientName";
                    cmb_ClientName.ValueMember = "ID";
                   

                    //cmb_ClientName.SelectedIndex = -1;

                    //this.textBox2.DataBindings.Clear();
                    this.textBox2.DataBindings.Add("Text", ds1.Tables["NewClients"], "ID");
                    //this.cmb_ClientName.DataBindings.Clear();
                    this.cmb_ClientName.DataBindings.Add("Text", ds1.Tables["NewClients"], "ClientName");
                    //this.txt_CompNameNew.DataBindings.Clear();
                    this.txt_CompNameNew.DataBindings.Add("Text", ds1.Tables["NewClients"], "CompanyName");
                    
                  }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

другого нет
PM MAIL   Вверх
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   Вверх
informatik
Дата 10.11.2008, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Поле IDClient для того и делалось чтобы связывать две таблицы..
В этом поле должен находиться ID клиента к которому относится данная работа (запись в таблице TBL_ClientsWork)

Вы разделение таблиц сделали, но непоняли зачем..

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


Опытный
**


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

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



Правильно я всё так и понял,только как записать в таблицу TBL_ClientsWork-IDClient чтоб он был идентичен IDClient из таблици TBL_Clients.Спасибо.
PM MAIL   Вверх
shark1
Дата 10.11.2008, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Почему то вот так:
string qry1 = "Insert into TBL_ClientsWork (Category,CompanyName,Price,History) values(@Category,@CompanyName,Price,History)where TBL_Clients.IDClients = TBL_ClientsWork.IDClients";
 неработает.Выдаёт ошибку:
System.Data.OleDb.OleDbException: Missing semicolon (;) at end of SQL statement.
и где мне нужно поставить ;.Спасибо.

PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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