Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / не использовать адаптер / 24 сообщений из 24, страница 1 из 1
02.08.2004, 12:48
    #32631232
sposad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
Доброго всем времени суток

Устал я лепить адаптеры. Люди подскажите, можно ли заполнить данными комбобокс результатом хранимой процедуры, и при этом датаадаптер не использовать. Один столбец, возвращаемый процедурой - ValueMember, второй - DislplayMember.

Спасибо
...
Рейтинг: 0 / 0
02.08.2004, 13:02
    #32631275
vooo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
Не совсем понятно - в чем сложности с адаптером - создал динамически (не пользуясь визардами и дизайнерами) и работай на здоровье (тем более SelectCommand есть - процедура, а больше ничего и не надо). Можно, конечно, через DataReader запихнуть данные в таблицу - см ExecuteReader ........
...
Рейтинг: 0 / 0
02.08.2004, 13:13
    #32631300
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
попробуй посмотреть/использовать Data Access Application Block v2 для MS SQL.
...
Рейтинг: 0 / 0
02.08.2004, 13:14
    #32631302
sposad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
Да я так и делаю, да уважаемый Sa где-то упоминал, что можно без адаптера обойтись, даже это рекомендовал. Вот и хотелось бы знать ...
...
Рейтинг: 0 / 0
02.08.2004, 13:22
    #32631325
sposad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
vooo Не совсем понятно - в чем сложности с адаптером - создал динамически (не пользуясь визардами и дизайнерами) и работай на здоровье (тем более SelectCommand есть - процедура, а больше ничего и не надо).

В смысле я хотел сказать, что вот так и делаю.


кузя попробуй посмотреть/использовать Data Access Application Block v2 для MS SQL.

Извините за серость, а это что ?
...
Рейтинг: 0 / 0
02.08.2004, 13:26
    #32631338
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
все программисты - лентяи :-)

пока не было этого DAAB, у меня был написан свой класс со стат. методами (но все в рамках ADO.NET). После сравнения с вышедшим v2 DAAB окрепло мнение, что все программисты идут приблизительно одинаковыми путями в рамках одной технологии дабы "облегчить свою жизнь".

а написать несколько методов с использованием адаптеров и ридеров - так это один раз, после чего о них (DataAdapter и DataReader) можно забыть ...
...
Рейтинг: 0 / 0
02.08.2004, 13:31
    #32631351
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
sposadИзвините за серость, а это что ?
download с сайта MS:
Data Access Application Block for .NET v2
...
Рейтинг: 0 / 0
02.08.2004, 13:41
    #32631377
sposad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
кузя sposadИзвините за серость, а это что ?
download с сайта MS:
Data Access Application Block for .NET v2

Спасибо Кузя, я уже это нашел. Что лентяи - это точно, надо только нам про это почаще напоминать, а то забыв, сколько будет 2*2, полезем на форум спрашивать
...
Рейтинг: 0 / 0
02.08.2004, 13:46
    #32631382
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
sposad
Устал я лепить адаптеры. Люди подскажите, можно ли заполнить данными комбобокс результатом хранимой процедуры, и при этом датаадаптер не использовать. Один столбец, возвращаемый процедурой - ValueMember, второй - DislplayMember.

Вручную лепить адаптеры не так уж и сложно, очевидно вы рассматриваете код DataAdapter'а получаемый мастером, но на то он и мастер, чтобы предусмотреть всё и tablemapping и прописать все 4 Command'a.

В альтернативу DataAdapter'а можно использовать DataReader (кстати он используется в любом случае). Однако головняков в этом случае будет больше, хотя работает это все сравнительно "быстрее". Но это не ваш случай с нагрузкой ComboBox'а.

sposad
Да я так и делаю, да уважаемый Sa где-то упоминал, что можно без адаптера обойтись, даже это рекомендовал. Вот и хотелось бы знать ...

Это один из радиальных советов и его надо рассматривать в контексте задачи , т.е. 100 процентных рекомендаций на любую задачу просто не существует.
Также я больше сконяюсь к замене метода Update , а не Fill . Хотя "легко" можно обойтись без них обоих.

sposad
Извините за серость, а это что ?

Data Access Application Block v2 смотрите на сайте Microsoft. Это попытка сделать работу с ADO.NET "прозрачной", что само по себе интересно, и заслуживает внимания.

Вообще вариантов несколько как облегчить себе жизнь, начиная от собственных мастеров генераторов, заканчивая разработкой такой унифицированной библиотеки как Data Access Block.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
02.08.2004, 14:10
    #32631452
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
SaВообще вариантов несколько как облегчить себе жизнь , начиная от собственных мастеров генераторов, заканчивая разработкой такой унифицированной библиотеки как Data Access Block.
ради экономии нескольких минут при кодировании - огромная работа по созданию универсальных сервисных средств.
точно, мы - неисправимые лентяи
...
Рейтинг: 0 / 0
02.08.2004, 14:57
    #32631582
sposad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
SaData Access Application Block v2 смотрите на сайте Microsoft. Это попытка сделать работу с ADO.NET "прозрачной", что само по себе интересно, и заслуживает внимания.

Вообще вариантов несколько как облегчить себе жизнь, начиная от собственных мастеров генераторов, заканчивая разработкой такой унифицированной библиотеки как Data Access Block.

Спасибо, нашел даже описание на русском языке. Самому оценить пока сложно, но уже интересно. Оцените, может кому понадобится.

http://www.gotdotnet.ru/LearnDotNet/ADONET/708.aspx

PS: Sa, примите мои поздравления по случаю Вашего назначения в модераторы. На мой взгляд - давно пора.
...
Рейтинг: 0 / 0
02.08.2004, 15:07
    #32631615
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
sposadSa, примите мои поздравления по случаю Вашего назначения в модераторы. На мой взгляд - давно пора.
Обана, только теперь увидел !!!
Присоединяюсь !!!
...
Рейтинг: 0 / 0
02.08.2004, 20:06
    #32632175
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
авторВ альтернативу DataAdapter'а можно использовать DataReader (кстати он используется в любом случае). Однако головняков в этом случае будет больше, хотя работает это все сравнительно "быстрее". Но это не ваш случай с нагрузкой ComboBox'а.

А, можно узнать, в чём заключена головная боль, о которой, в данном случае идёт речь? Просто я всё время заполняю таким образом Combo... пока проблем не было...
...
Рейтинг: 0 / 0
03.08.2004, 08:01
    #32632358
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
В большем кодировании, и некоторыми ограничениями связанных прежде всего с неиспользованием DataSet .

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
03.08.2004, 08:51
    #32632387
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
авторВ большем кодировании...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 
OleDbConnection1.Open()

Dim reader As System.Data.OleDb.OleDbDataReader = OleDbCommand1.ExecuteReader

    While reader.Read
         Box1.Items.Add(reader.Item("MyTable"))
    End While

OleDbConnection1.Close()
Это при визуально созданых Command и Connection, если создавать руками, то на 3-строки больше...
P.S. Вы точно обленились, господа программеры...
...
Рейтинг: 0 / 0
03.08.2004, 08:57
    #32632392
Дудкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
Sa, и от меня поздравления!
...
Рейтинг: 0 / 0
03.08.2004, 11:52
    #32632810
Дудкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
Хм.. а кто подскажет как из программно созданного адаптера достать данные? Я попробовал
'...создадим датаадаптер...
Dim aCont As New System.Data.SqlClient.SqlDataAdapter
aCont.SelectCommand.Connection = cImp
aCont.SelectCommand.CommandText = "SELECT Containers.containers, Containers.digit, " & _
" Containers.type, Linii.liniya, Linii.id_linii FROM Containers " & _
" INNER JOIN Linii ON Containers.vladelets = Linii.id_linii "
aCont.SelectCommand.ExecuteNonQuery()
а далее? как получить возвращаемые значения? без датасета никак?
...
Рейтинг: 0 / 0
03.08.2004, 12:20
    #32632926
Дудкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
Отвечаю на свой же вопрос
'...создадим датаадаптер...
Dim aCont As System.Data.SqlClient.SqlDataAdapter = New _
System.Data.SqlClient.SqlDataAdapter("SELECT Containers.containers, Containers.digit, " & _
" Containers.type, Linii.liniya, Linii.id_linii FROM Containers " & _
" INNER JOIN Linii ON Containers.vladelets = Linii.id_linii " & _
" where Containers.containers='" & rown("container") & "'", cImp)


aCont.SelectCommand.ExecuteNonQuery()
'...создадим датасет...
Dim DScont As DataSet = New DataSet
aCont.Fill(DScont, "TableCont")
MsgBox(DScont.Tables("TableCont").Rows(0)("digit"))
...
Рейтинг: 0 / 0
03.08.2004, 13:09
    #32633134
sposad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
vladgrig авторВ большем кодировании...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 
OleDbConnection1.Open()

Dim reader As System.Data.OleDb.OleDbDataReader = OleDbCommand1.ExecuteReader

    While reader.Read
         Box1.Items.Add(reader.Item("MyTable"))
    End While

OleDbConnection1.Close()
Это при визуально созданых Command и Connection, если создавать руками, то на 3-строки больше...
P.S. Вы точно обленились, господа программеры...

А как при таком способе определить данные какого столбца MyTable будут ValueMember, а какого - DisplayMember ?
...
Рейтинг: 0 / 0
03.08.2004, 14:30
    #32633432
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
Извинтиляюсь,
Код: plaintext
1.
reader.Item ("MyTableColumnName")
авторданные какого столбца MyTable будут ValueMember, а какого - DisplayMember
Буду признателен, за объяснения, для чего нужны два, как я подозреваю, "разных члена". Не смейтесь, просто я этим никогда не пользовался.
P.S. Подозреваю, что один для просмотра данных, а второй для ввода новых? Или не так...?
...
Рейтинг: 0 / 0
03.08.2004, 14:37
    #32633448
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
для чего нужны два, как я подозреваю, "разных члена". Не смейтесь, просто я этим никогда не пользовался.
P.S. Подозреваю, что один для просмотра данных, а второй для ввода новых? Или не так...?

ValueMember нужен для ID. Для чего нужны ID думаю понятно :-)
Часто использую ComboBox для небольших справочников, дак вот естественно в "рабочую" таблицу не вставляю значение DispayMember. А вставляю ID, а Display служит (что видно из названия для dispay в UI и отчетах).

Так как блин все не могут пользователи запомнить что 25 - это мопед, а 158 - мотоцикл

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
03.08.2004, 15:03
    #32633513
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
1. Спасибо, за инфу, будем подумать... (кстати, нельзя это как то примером, а то я понимаю, о чём речь, а воспроизвести, пока не могу )


2. авторЧасто использую ComboBox для небольших справочников
То то и оно, что у нас в данном случае разные задачи. Я, пока не делал НЕБОЛЬШИХ (пусть например справочников). Я вообще не загружаю DataSet сразу (объём не позволяет, да и как то, на мой взгляд, бессмысленно забивать комп ненужными данными). Легче вызвать строки, которые интересуют, и работать с ними... Из-за этого, и знания ValueMember и DisplayMember ОЧЕНЬ скромные (мнение сугубо индивидуальное и, пока, критике не предласположено).
...
Рейтинг: 0 / 0
04.08.2004, 07:56
    #32634217
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
кстати, нельзя это как то примером, а то я понимаю, о чём речь, а воспроизвести, пока не могу

Все просто:
Код: plaintext
1.
2.
3.
4.
 ' Пусть имеется в DataSet myDataSet таблица table с полями name, и id, тогда 
cb.DataSource = myDataSet.Tables("table")  ' где cb наш ComboBox 
cb.DisplayMember = "name"  ' name и id поля таблицы table 
cb.ValueMember = "id"

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
04.08.2004, 09:51
    #32634341
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не использовать адаптер
Спасибо... Крайне интересно. К сказанному могу, лишь добавить, что к ValueMember можно обратиться так:
Код: plaintext
cb.SelectedValue
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / не использовать адаптер / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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