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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Работа с Access, И вывод данных в DataGridViev 
:(
    Опции темы
WinNet
Дата 19.7.2007, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 4.3.2007
Где: г.Москва

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



Здравствуйте!
Есть проблема с Access. После выборке всех данных из таблицы результат сохраняется в объекте dbRecord типа ArrayList , а затем выводится в dataGridView1. Проблема в том что данные выводятся в нежелательном порядке , то есть нумерация идет  сначала с  10 до 30 а в конце с 1 до 8.  smile 
Еще проблема :если сделать запрос по условию 
Код

SELECT * FROM Таблица1 WHERE [№]=14 
 то вообще ничего не выводится!!!
Вот код:
Код

public void dbRead(string getTextBox)
        {
            ArrayList dbRecord = new ArrayList();
            dbRecord.Clear();
            using (OleDbConnection myConnection = new OleDbConnection("File name = myUDL.udl"))
            {
                OleDbCommand myCommand = new OleDbCommand("SELECT * FROM Таблица1",myConnection);
                myConnection.Open();
                OleDbDataReader read = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
                if (read.Read())
                {
                    foreach (DbDataRecord rec in read)
                    {
                        dbRecord.Add(rec);
                    }
                }
            }
            dataGridView1.DataSource = dbRecord;
        }



Это сообщение отредактировал(а) WinNet - 19.7.2007, 17:12
PM ICQ   Вверх
Nickey
Дата 19.7.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



отсортируй полученый результат запроса(ORDER BY).
я несилен в базах данных, но WHERE [№]=14 вот [] как то странно выглядит.
PM MAIL   Вверх
WinNet
Дата 19.7.2007, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 4.3.2007
Где: г.Москва

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



Смысл в том , что если нужно вывести 1-ну строку  то ничего не выводится (к примеру)
 SELECT * FROM Таблица1 WHERE ИНН = '456456456'. 
Сортировать данные в SQL запросе или нужно настроить dataGridView? Можно примерчик...

PM ICQ   Вверх
thomas
Дата 19.7.2007, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



WinNet, 
Цитата

Сортировать данные в SQL запросе или нужно настроить dataGridView? Можно примерчик...

Код

SELECT * FROM Таблица1 ORDER BY ИНН


Цитата

если нужно вывести 1-ну строку  то ничего не выводится (к примеру)
 SELECT * FROM Таблица1 WHERE ИНН = '456456456'. 

ИНН - какой тип? (численный или текстовый)
Если числовой то одиночные кавычки не нужны, если текстовый то нужны. 
Потом ИНН это что, ключ?


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


3D-маньяк
****


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

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



ИНН это индивидуальный номер налогоплательщика.


--------------------
user posted image
PM MAIL WWW   Вверх
WinNet
Дата 19.7.2007, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 4.3.2007
Где: г.Москва

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



Отсортировать получилось , а затем и выполнить "упрямый" запрос!
Вот получившийся запрос:
Код

SELECT * FROM Таблица1 WHERE № = 17 ORDER BY №
 
И вообще работа с Access очень спецефична , к примеру если назвать таблицу не "Таблица1" а "Table1" (Похоже глюк с латиницей.) и соответственно отредактировав запрос , произойдет ошибка "таблица не найдена"  smile 




PM ICQ   Вверх
mr.DUDA
Дата 20.7.2007, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


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

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



WinNet, столбцы в таблицах общепринято называть латинскими буквами. Как, впрочем, и сами таблицы.


--------------------
user posted image
PM MAIL WWW   Вверх
WinNet
Дата 23.7.2007, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 4.3.2007
Где: г.Москва

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



Не могу отредактировать данные в dataGridView. ReadOnly = false , а строки все равно не доступны...
Алгоритм такой:
Сначала получаю данные с помощью ExecuteReader , затем редактирую данные в dataGridView после чего вношу изменения в БД с помощью ExecuteNonQuery. 

Как настроить dataGridView? 


Это сообщение отредактировал(а) WinNet - 23.7.2007, 16:43
PM ICQ   Вверх
thomas
Дата 23.7.2007, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



WinNet, 
Цитата

Сначала получаю данные с помощью ExecuteReader 

код покажи.


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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 4.3.2007
Где: г.Москва

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



thomas  вот:
Код

public void dbRead(string getTextBox)
        {
            ArrayList dbRecord = new ArrayList();
            dbRecord.Clear();
            using (OleDbConnection myConnection = new OleDbConnection("File name = myUDL.udl"))
            {
                OleDbCommand myCommand = new OleDbCommand("SELECT * FROM Таблица1",myConnection);
                myConnection.Open();
                OleDbDataReader read = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
                if (read.Read())
                {
                    foreach (DbDataRecord rec in read)
                    {
                        dbRecord.Add(rec);
                    }
                }
            }
            dataGridView1.DataSource = dbRecord;
        }

PM ICQ   Вверх
mr.DUDA
Дата 23.7.2007, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


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

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



WinNet, для датасетов есть DataAdapter-ы и метод Fill. Ридер тогда вообще не нужен.


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


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


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

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



mr.DUDA, 
Так он ДатаСет не использует. А пользует ArrayList dbRecord = new ArrayList();
Мне тоже непонятно почему.
И я тут задумался: если использовать ДатаСет, то грид редактируется(если не запретить) и изменения внесенные в грид нормально сохраняются в БД.
А что должно происходить в случае когда грид отображает данные из ArrayList ?
Получается грид должен внести изменения в ArrayList?

И насколько я понял у него
Цитата

Не могу отредактировать данные в dataGridView. ReadOnly = false , а строки все равно не доступны...

Что-то тут не так  smile 


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


Эксперт
****


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

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



...

Это сообщение отредактировал(а) Idsa - 24.7.2007, 02:06


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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 4.3.2007
Где: г.Москва

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



Подскажите как обновить данные в БД?

Вот кад заполнения DataSet:

                
Код

                DataSet myDS = new DataSet("Bussines");
                OleDbDataAdapter dAdapt = new OleDbDataAdapter(sql,"File name = myUDL.udl");
                dAdapt.Fill(myDS, "Таблица1");
                dataGridView1.DataSource = myDS.Tables[0];
                

После редактирования данных в dataGridView , нужно обновить БД. Причем желательно обновлять не всю БД целиком , а только те строки , которые были изменены. Обновление должно произойти при нажатии на кнопку "сохранить изменения"....
PM ICQ   Вверх
thomas
Дата 28.7.2007, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Код

        cmdBuilder = New OleDbCommandBuilder(dAdapt);
        If (myDS.HasChanges(DataRowState.Moddifed)){
            dAdapt.UpdateCommand = cmdBuilder.GetUpdateCommand();
            Try
                dAdapt.Update(myDS, tableName);
            Catch ex As Exception
                System.Windows.Forms.MessageBox.Show(ex.Message, "Ошибка при обновлении таблицы в БД!");
            End Try
        }
         myDS.AcceptChanges();


PS писал без студии, могут быть ошибки.


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Закрытая темаСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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