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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL запрос, сортировка по дате 
:(
    Опции темы
Victor_b
Дата 20.9.2007, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите составить запрос. Работаю с базой Access (VB.NET 2005). 
Код

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim ConString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\K_n_g.mdb"
        Dim ConSQL As String = "select * from opr" 'вот этот запрос
        Dim Data As New DataSet
        Dim Adapter As New OleDb.OleDbDataAdapter(ConSQL, ConString)

        Adapter.Fill(Data, "opr")
        DataGridView1.DataSource = Data
        DataGridView1.DataMember = "opr"
End Sub

Сортировку нужно провести по колонке [Дата], выборка например от 01.01.2007 до 31.03.2007 и чтобы в порядке возрастания дат.
PM MAIL   Вверх
thomas
Дата 20.9.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Victor_b, 
Привет.
Ну, во первых welcom.  smile 
А во вторых тебе сюда.
И в третьих
Код

SELECT * FROM opr WHERE myDate BETWEEN 2007/01/01 AND 2007/03/31 ORDER BY myDate ;


И совет: учи язык запросов SQL.  smile 


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


Новичок



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

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



Ну раз уж здесь начал тему... Что касается запроса то подобный вашему я использовал в vb6
Код

SELECT * FROM Opr WHERE [Дата] BETWEEN #" & Format(CDate("01.01.2007"), "mm\/dd\/yyyy") & "# AND #" & Format(CDate("31.03.2007"), "mm\/dd\/yyyy") & "#  ORDER BY [Дата]

Так как даты берутся из текстбокса то проводится их форматирование. А вот в VB.NET этот запрос не работает, и почему я не знаю. Не хватает знаний ни SQL ни собственно VB.NET который только пытаюсь освоить.
PM MAIL   Вверх
Akina
Дата 20.9.2007, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Victor_b @  20.9.2007,  21:02 Найти цитируемый пост)
 в VB.NET этот запрос не работает, и почему я не знаю

Наверное, надо просто посмотреть, в каком формате следует передавать Аксессу литералы даты. Диезиками они обрамляются.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Victor_b
Дата 20.9.2007, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Так ведь есть диезики...  (см. SQL выше)

Это сообщение отредактировал(а) Victor_b - 20.9.2007, 20:37
PM MAIL   Вверх
Akina
Дата 20.9.2007, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



А, ну да... я чтой-то посмотрел не туда.

Слушай, а зачем ты выполняешь форматирование на клиенте? почему не отдать это Аксессу?

Код

SELECT * 
FROM Opr 
WHERE [Дата] BETWEEN CDate("01.01.2007") AND CDate("31.03.2007") 
ORDER BY [Дата];



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
thomas
Дата 20.9.2007, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Victor_b, 
У тебя Access стоит? Создай  в нем запрос в конструкторе и посмотри что он тебе напишет в SQL(окошечке)
Access принимает стандарт даты yyyy/MM/dd /
Что я тебе и написал.
А ты что пишешь в коде. 
Цитата

Format(CDate("01.01.2007"), "mm\/dd\/yyyy")


К тому же ты работаешь не с переменной, а считываешь текст из текст бокса.  Зачем тебе этот Format(CDate("01.01.2007")?
Просто приведи string полученный из текст бокса к нормальному для Аccess виду и подставь в sql- запрос.
Все.  smile 


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


Новичок



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

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



Спасибо за помощь, разобрался. Действительно в VB6 я приводил дату к виду mm/dd/yyyy и все работало. А вот в NET нужно yyyy/mm/dd / Во всяком случае на практике это так, хотя с точки зрение теории странновато. 

Не хочется плодить темы, поэтому попрошу помочь еще вот в чем. Несмотря на то, что в инете есть примеры работы c базами они для меня сложны. При том способе подключения который мне понятен (выше код) как в базе добавить/изменить/удалить строку?  
PM MAIL   Вверх
thomas
Дата 21.9.2007, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Victor_b, 
написать соответствующий sql и выполнить его методом  ExecuteNonQuery()
успехов  smile 

например
Код

public void DoNonQuery(string sql)
        {
            try
            {
                dbCon.Open();
                dbCmd.CommandText = sql;
                dbCmd.CommandType = CommandType.Text;
                dbCmd.ExecuteNonQuery();
                dbCon.Close();
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show("ExNonQuery fout :" + ex.Message, "fout Query");
            }
            finally
            {
                dbCon.Close();
            }
        }


Это сообщение отредактировал(а) thomas - 21.9.2007, 23:35


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


Новичок



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

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



Ага, спасибо. А вот на VB.NET как это будет?
PM MAIL   Вверх
thomas
Дата 22.9.2007, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Victor_b, 
вместо void Sub
и без фигурных скобок и точки с запятой.  smile 


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


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

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


 




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


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

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