powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запрос SQL lдля выбора по датам в VB.Net
25 сообщений из 25, страница 1 из 1
Запрос SQL lдля выбора по датам в VB.Net
    #38918493
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите, пожалуйста!

Не удается сделать SQL запрос по выборке из таблицы Acscess по датам. В таблице [Подтемы] поле [Дата] имеет краткий формат, т.е. дд.мм.гггг.
Вот код:

Dim d_beg, d_end As Date
Dim sSQL String

Conn = New OleDb.OleDbConnection()
Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Учет трудоемкости\sql.mdb"
Conn.Open()
d_beg = DateTimePicker1.Value
d_end = DateTimePicker2.Value
sSQL = "SELECT * FROM Подтемы WHERE Дата BETWEEN>" & d_beg & " AND " & d_end

Выдается сообщение об ошибке!!!

Ошибка синтаксиса (пропущен оператор) в выражении запроса 'Дата BETWEEN 25.03.2015 9:49:26 AND 28.03.2015 9:49:26'.
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918515
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно отформатировать дату в следующий вид:
#2015/25/03 09:49:26#

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

и учимся использовать тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918668
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim tmp1,tmp2 as String

tmp1 = "'" & "2015/25/03 09:49:26" & "'"
tmp2 = "'" & "2015/27/03 09:49:26" & "'"

sSQL = "SELECT * FROM Подтемы WHERE Дата BETWEEN " & tmp1 & " AND " & tmp2

Если так, то выдается:

"Несоответствие типов данных в выражении условия отбора."

Вы не могли бы помочь и написать Sql-запрос?
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918679
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы кавычку от решетки отличит не можете?
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918701
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
За конкатенацию параметров с текстом запроса нужно отправлять на принудительные работы по чистке канализации. Нормальные люди используют параметры запроса. В этом случае заодно не нужно будет думать о строковом формате даты.
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918708
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныЗа конкатенацию параметров с текстом запроса нужно отправлять на принудительные работы по чистке канализации. Нормальные люди используют параметры запроса. В этом случае заодно не нужно будет думать о строковом формате даты.За параметры запроса нужно ... далее по тексту ..., нормальные люди используют ORM

Пусть сначала так научится, рано еще параметры, пока даже нет понимания преобразования типов
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918719
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отличить могу, "отличит" нет. Не очень ориентируюсь в этом синтаксисе, поэтому и прошу помочь. Вежливо же спрашиваю.
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918727
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slava_PskОтличить могу, "отличит" нет. Не очень ориентируюсь в этом синтаксисе, поэтому и прошу помочь. Вежливо же спрашиваю.я же вам дал ответ:
Shocker.Proнужно отформатировать дату в следующий вид:
#2015/25/03 09:49:26#вы его проигнорировали и спрашиваете, почему не работает
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918765
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЗа параметры запроса нужно ... далее по тексту ..., нормальные люди используют ORM

Пусть сначала так научится, рано еще параметры, пока даже нет понимания преобразования типов
Не надо путать теплое с мягким. И ADO.Net, и ORM - штатные возможности фреймворка, и использовать их нужно сообразно ситации и задаче. Для выборки из базы 1 поля из одной записи одной таблицы возиться с ORM - нафиг. Но и то, и другое можно использовать правильно. А неправильному не нужно учиться с самого начала. Лучше даже вообще о таких вариантах не знать.
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918774
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Дык напиши человеку пример, что воздух-то сотрясать.
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918815
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProSlava_PskОтличить могу, "отличит" нет. Не очень ориентируюсь в этом синтаксисе, поэтому и прошу помочь. Вежливо же спрашиваю.я же вам дал ответ:
Shocker.Proнужно отформатировать дату в следующий вид:
#2015/25/03 09:49:26#вы его проигнорировали и спрашиваете, почему не работает

Хорошо, но я это уже пробовал. У меня в базе короткий формат даты без времени. Если такая строчка:

sSQL = "SELECT * FROM Подтемы WHERE Дата BETWEEN " & Format(CDate("01.01.2015"), "yyyy/MM/dd") & " AND " & Format(CDate("31.01.2015"), "yyyy/MM/dd") & " ORDER BY Дата"

то выдается

Число содержит синтаксическую ошибку в выражении запроса 'Дата BETWEEN 2015.01.01 AND 2015.01.31'.
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918830
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slava_PskЧисло содержит синтаксическую ошибку в выражении запроса 'Дата BETWEEN 2015.01.01 AND 2015.01.31'.Попытаюсь в третий раз объяснить

СИНТАКСИС ДОЛЖЕН СОДЕРЖАТЬ РЕШЕТКУ!!!!! # как в моем примере

А также:
разделитель должен быть слеш! /

должен идти сначала год, потом день, потом месяц
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918835
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
sSQL = "SELECT * FROM Подтемы WHERE Дата BETWEEN #" & Format(CDate("01.01.2015"), "yyyy\/dd\/MM") & "# AND #" & Format(CDate("31.01.2015"), "yyyy\/dd\/MM") & "# ORDER BY Дата"
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918847
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Устал я заниматься разгадыванием ребусов. Если не хотите помочь, это ваше дело. Тогда пойду к другим.
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918848
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините, поспешил с ответом.
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918856
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slava_PskЕсли не хотите помочьто есть я еще и виноват остался.
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918857
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
Код: c#
1.
sSQL = "SELECT * FROM Подтемы WHERE Дата BETWEEN #" & Format(CDate("01.01.2015"), "yyyy\/dd\/MM") & "# AND #" & Format(CDate("31.01.2015"), "yyyy\/dd\/MM") & "# ORDER BY Дата"



Попробовал, выдается
Дата содержит синтаксическую ошибку в выражении запроса 'Дата BETWEEN #2015/01/01# AND #2015/31/01#'.

???
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918860
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProSlava_PskЕсли не хотите помочьто есть я еще и виноват остался.

Я же извинился.
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918863
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри, вот так "MM\/dd\/yyyy"
сам давно не работал с jet-ом.
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918864
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но, по-хорошему Сон Веры Павловны прав, лучше использовать параметры в запросах, чтобы не париться с форматированием.
Я просто с параметрами не работал, сразу перескочил на хранимки, поэтому не рискую давать синтаксис.
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918874
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю, работает. Однако, насколько мы бы сэкономили время, если бы начали с сообщения 17439622.
Удачи!
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918913
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slava_Psk, нельзя быть таким упертым... Вам сказали какой формат должен быть...
https://support.office.com/en-ie/article/Examples-of-query-criteria-3197228c-8684-4552-ac03-aba746fb29d8
авторRemember to surround date values with the # character so that Access can distinguish between date values and text strings.

Попробуйте:

Код: vbnet
1.
2.
Dim sSQL as String = "SELECT * FROM Подтемы WHERE Дата BETWEEN {0:#MM/dd/yyyy#} AND {1:#MM/dd/yyyy#} ORDER BY Дата "
Console.WriteLine(String.Format(sSQL, CDate("01.01.2015"), CDate("01.01.2016")))



Параметры используйте:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Dim con As OleDbConnection = New OleDbConnection( _
                        "Provider=Microsoft.jet.oledb.4.0;data source=C:\Учет трудоемкости\sql.mdb")
        con.Open()
        Dim cmdText As String = "SELECT * FROM Подтемы WHERE Дата BETWEEN ? AND ? ORDER BY Дата"
        Dim cmd As OleDbCommand = New OleDbCommand(cmdText, con)
        cmd.CommandType = CommandType.Text 
        With cmd.Parameters
            .Add("@d_beg", OleDbType.Date).Value = DateTimePicker1.Value
            .Add("@d_end", OleDbType.Date).Value = DateTimePicker2.Value
        End With
        Dim reader As OleDbDataReader = cmd.ExecuteReader()
        While reader.Read()
            Console.WriteLine("--")
        End While
        reader.Close()
        con.Close()
        con = Nothing

...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918932
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, buser, возьму на заметку.
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918942
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buserПопробуйте:

Код: vbnet
1.
Dim sSQL as String = "SELECT * FROM Подтемы WHERE Дата BETWEEN {0:#MM/dd/yyyy#} AND {1:#MM/dd/yyyy#} ORDER BY Дата "

перед слешом только обязательно обратный слеш, прямой слеш является спецсимволом
...
Рейтинг: 0 / 0
Запрос SQL lдля выбора по датам в VB.Net
    #38918946
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да... забыл подставит системный разделитель... сорри... и вообще я протупил... чтой-то в превью не заметил, что вы уже разобрались... :)
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запрос SQL lдля выбора по датам в VB.Net
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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