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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выбор из БД access конкретных значений 
V
    Опции темы
morgot
Дата 23.8.2008, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Очень нужен мудрый совет по такой проблеме:
есть прога на vb.net и база данных на access, подключение к которой поизводиться через с использованием датасет, подскажите пожалуйста, как сделать выборку конкретного элемента конкретной строки?  smile 
 

Это сообщение отредактировал(а) morgot - 23.8.2008, 22:50
PM MAIL   Вверх
jonie
Дата 24.8.2008, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



вариант 1: если данные уже в DataSet, тогда можно использовать DataView, с условием выборки (работает вроде только для числового значения и like там тож был)
Код

/*
в базе таблица создана так:
create table tab1 (pos float);
*/
            using(OleDbConnection conn =
                new OleDbConnection(
                    @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb;Persist Security Info=True"))
            {
                OleDbCommand cmd = conn.CreateCommand();
                cmd.CommandText = "select pos from tab1";
                cmd.CommandType = System.Data.CommandType.Text;
                OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
                DataSet ds = new DataSet();
                adapter.Fill(ds);
                //выберем все значения больше двух, если есть ID нужной хаписи, то можно использовать также его
                DataView dw = new DataView(ds.Tables[0], "pos>2", "", DataViewRowState.CurrentRows);
                foreach (DataRow dr in dw.ToTable().Rows)
                {
                    Console.WriteLine("{0}", dr[0]);
                }
            }

вариант2: сделать запрос к базе данных, указав условие вроде
Код

select field 
from table
where id=@ID



--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
MasterOfCode
Дата 25.8.2008, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

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



Первый вариант - не советую так делать. На клиента тащить только те данные которые тебе нужны. А если в таблице  миллион записей, а под условие подподет только 1. В случае с 1 вариантом ты миллион качнешь к себе на комп, а потом будешь работать только с одной.


--------------------
user posted image
PM ICQ   Вверх
morgot
Дата 27.8.2008, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



запись нужно будет выдирать только одну, и сама база маленькая, несколько сотен записей, проблема в том, что я незнаю, как впихнуть этот запрос в прогу
PM MAIL   Вверх
jonie
Дата 30.8.2008, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



читать про ADO.NET (материала горы).
MasterOfCode невсегда осуществимо. например когда над данными производятся расчеты (напримр добавление среднего значения по диапазону записей), или еще что-либо, что неизвестно на момент получения вызова (ну, скажем, расчет по формуле, что задаст пользователей, и пересчет в случае ее изменения). И опять же, я уже указал "если данные УЖЕ в DS"




--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
morgot
Дата 30.8.2008, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



нашел решение проблемы, оно оказалось маленьким и спасительным

Код

DataSet1.Tables("tabl").Rows(i)(j)


спасибо за участие 
PM MAIL   Вверх
jonie
Дата 31.8.2008, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



ага, а i,j вы выдумаете из нииткуда?)


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
morgot
Дата 31.8.2008, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



i - номер строки int
j - номер столбца int
перебирая через цикл нахожу нужные данные

Это сообщение отредактировал(а) morgot - 31.8.2008, 15:23
PM MAIL   Вверх
MasterOfCode
Дата 1.9.2008, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

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



Цитата(jonie @  30.8.2008,  00:24 Найти цитируемый пост)
MasterOfCode невсегда осуществимо. например когда над данными производятся расчеты (напримр добавление среднего значения по диапазону записей) 

Если логика работы с БД сложная, то лучше ее перекладывать на сервер.
Такая задача:
> добавление среднего значения по диапазону записей
Как раз имеет смысл реализации через хранимку.


Цитата(jonie @  30.8.2008,  00:24 Найти цитируемый пост)
И опять же, я уже указал "если данные УЖЕ в DS"

Указать то указал, а в премере показал как ты вытянул целую таблицу.

Цитата(morgot @  31.8.2008,  15:17 Найти цитируемый пост)
i - номер строки int
j - номер столбца int
перебирая через цикл нахожу нужные данные

Тебе времени не жалко? smile


--------------------
user posted image
PM ICQ   Вверх
morgot
Дата 1.9.2008, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

Это сообщение отредактировал(а) morgot - 1.9.2008, 16:36
PM MAIL   Вверх
Idsa
Дата 1.9.2008, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(morgot @  1.9.2008,  20:30 Найти цитируемый пост)
База маленькая, исключительно для домашнего использования, так что вырасти хотя бы до пары тысяч записей шансов у нее много.

Ну... Это несерьезно. Нужно всегда думать о масштабировании. Вот женишься, десяток детей нарожаешь - а это уже 10 параллельных запросов к базе. Придется либо переписывать код, либо обновлять железо. А оно надо? Так что лучше сразу прислушаться к советам бывалых smile


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
jonie
Дата 1.9.2008, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



а я для небольшой таблицы пердпочел бы DataView (статические небольшие справочники, например).
Чего там, если 20 записей...
а так, конечно, логику на сервер возлажить стОит.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
morgot
Дата 3.9.2008, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



учту на будущее, спасибо за совет
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




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


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

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