Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > DataSet.DataTable.DataColum


Автор: HellMasterHaiL 22.1.2007, 16:21
вот встала такая вот задачка:

есть датасет (созданный конструктором), есть в нем таблица с адаптером (тоже созданы конструктором)...
адаптер таблици запрашивает у БД значение и записывает в поле "ID"...
остальные поля предназначены для хранения стрингов, которые я должен получить из других источников (файл).

проблема вот:
не могу понять, как из т аблици ds_MyDataSet.dt_Photo вытащить значение поля ID, сделать с ним некот махинации и вернуть в этуже таблицу в поле Photo некую строчку...

причем это нужно сделать для всех записей (ID) в этой дататэйбол!

 smile  smile 
если можно на VB \=-)

Автор: NET_or_not_NET 23.1.2007, 16:54
Извините, все примеры на С#

Цитата

как из таблици ds_MyDataSet.dt_Photo вытащить значение поля ID

Можно например так:
Код

label1.Text =  ds_MyDataSet.dt_Photo.Rows[XXX].ItemArray[УУУ].ToString();
// где ХХХ - это индекс строки из которой необходимо вытащить ID
// а УУУ - это индекс колонки (если ID храниться в первой колонке то УУУ=0 и т.д.)


Цитата

для всех записей (ID) в этой дататэйбол!

Можно например так:
Код

foreach (DataRow dr in ds_MyDataSet.dt_Photo.Rows)
{
        label1.Text = dr.ItemArray[УУУ].ToString();
        //каждый проход цикла записывает в значение label1.Text полученный ID
}
// УУУ - это индекс колонки (если ID храниться в первой колонке то УУУ=0 и т.д.)


Теперь вопрос у меня: 

Цитата

 сделать с ним некот махинации и вернуть в этуже таблицу в поле Photo некую строчку...


махинации с самим ИД или со строками у которых нужный нам ИД ???
(например изменить все значения в поле Photo для строк с нужным нам ИД)

В зависимости от разъяснений постараюсь помочь  smile 

Автор: HellMasterHaiL 23.1.2007, 18:38
NET_or_not_NET, то, что на СИшарпе - малокритично)

Цитата

(например изменить все значения в поле Photo для строк с нужным нам ИД)

именно этот пример меня и интересует!)
или хотябы просто как присвоить полю Photo с конкретной идешкой, типа как в SQL:
....
SET PHOTO = 'bla bla bla'
WHERE ID='676'


или всеравно не ясно изложил проблемку?
если можно, то разъясни, заранее спасибо!

Автор: NET_or_not_NET 24.1.2007, 10:21
Как один из многих вариантов:

Этот пример подразумевает наличие
Цитата

есть датасет (созданный конструктором), есть в нем таблица с адаптером (тоже созданы конструктором)

и что датасет имеет 
поле "ID" в котором храниться наш ИД
поле "PHOTO" в котором храниться некая инф. (в данном примере строка)


Код

            //В данном цикле мы перебираем все строки в нашем ds_MyDataSet
            foreach(DataRow dr in ds_MyDataSet.dt_Photo.Rows)
            {
                // Ищем нужный нам ИД
                if (dr["ID"].ToString() == "1") 
                {
                    //если нашли меняем значение в "фото"
                    dr["PHOTO"] = "bla bla bla";
                }                
            }
            // всё вышеописанное производит изменения в MyDataSet.dt_Photo

            // теперь изменения сделанные в MyDataSet.dt_Photo надо сохранить в БД
            // вариантов как это сделать много, вот один из...  
            // пример создания команнды Update ручками

            адаптер.UpdateCommand.Connection = sqlConnection1;
            адаптер.UpdateCommand.CommandText = "update имяТаблицы set PHOTO=@param2 where ID=@param1";
            
            адаптер.UpdateCommand.Parameters.Add("@param1", SqlDbType.Int);
            адаптер.UpdateCommand.Parameters.Add("@param2", SqlDbType.NVarChar);

            адаптер.UpdateCommand.Parameters["@param1"].SourceColumn = "ID";
            адаптер.UpdateCommand.Parameters["@param2"].SourceColumn = "PHOTO";

            адаптер.Update(MyDataSet.dt_Photo);


На это форуме обсуждается тема "Проблемы с adapter.Update(dataSet, tableName);"
в ней описано как сам АДАПТЕР (автоматически) генерирует Инсерт,Дел,Апдейт команды (GetDeleteCommand(); GetInsertCommand(); GetUpdateCommand();)
Есть еще вариант создания в режиме конструктора... и еще несколько других ручками...


Выбор за Вами!

P.S. БД синтаксис параметров UpdateCommand - MSSQLServer2000

Автор: HellMasterHaiL 24.1.2007, 14:29
NET_or_not_NET, cпасибо, но вчера сам догадался \=-) (аки какой я умный(стеб))

апдейтить БД я, счастью, умею...
... но всеравно большое тебе спасибо!)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)