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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с датой в Access 
V
    Опции темы
kedicik
Дата 28.9.2007, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Заношу в таблицу БД Access запись в котором одно из полей имеет формат полной даты (дата и время). Беру DateTime.Now.
Все прекрасно. Запоминаю эту дату  в переменной типа DateTime . Далее пытаюсь изменить эту запись (используя эту переменную - именно по дате). Выдается ошибка - несоответствие типа переменной.  Использую stored procedures и параметры sql

Добавлено через 2 минуты и 15 секунд
то есть проблема с выборкой по дате . 
PM MAIL   Вверх
thomas
Дата 28.9.2007, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



kedicik
посмотри какой формат даты задан в поле таблицы.
Цитата

Использую stored procedures 

а где в Access stored procedures ?
У тебя должен быть sql-запрос(INSERT)   с параметрами. И в метод add  для параметра передаешь свою переменную даты.



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


Бывалый
*


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

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



Цитата(thomas @  28.9.2007,  19:16 Найти цитируемый пост)
посмотри какой формат даты задан в поле таблицы

дата.время   полный формат даты
Не так выразилась. В бд 2 запроса -  INSERT и Select / 
Со страницы ASP.net выполняю запрос c INSERT - все прекрасно . Дату беру как DateTime.Now
Храню эту дату в переменной (переменная тоже DateTime)
Выполняю SELECT - делаю выборку из таблицы по этой дате. В запросе использую параметр = значению моей переменной (DateTime). 
Получаю ошибку - несоответствие типов
 Проблема в DateTime? может перевести ее в string?
PM MAIL   Вверх
kedicik
Дата 28.9.2007, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(thomas @  28.9.2007,  19:16 Найти цитируемый пост)
И в метод add  для параметра передаешь свою переменную даты.

да именно так я и делаю. Кстати использую класс  доступа к бд который
thomas, выложил на форуме.

Добавлено через 2 минуты и 18 секунд
Цитата(thomas @  28.9.2007,  19:16 Найти цитируемый пост)
stored procedures 

я не формирую строку SQL на странице. а использую  storedprocedure
PM MAIL   Вверх
thomas
Дата 28.9.2007, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



kedicik
Цитата

Выполняю SELECT - делаю выборку из таблицы по этой дате. В запросе использую параметр = значению моей переменной (DateTime). 
Получаю ошибку - несоответствие типов
 Проблема в DateTime? может перевести ее в string? 


если будешь формировать SQL-запрос как string, то дату надо форматировать к такому виду для Access
#MM/dd/yyyy#  иначе он не примет.

Но, я хоть убей не вьезжаю где у тебя в Access storedprocedure ?
На SQL сервере они есть, а вот в Access где?




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


Бывалый
*


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

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



CommandType   - storedProcedure

Добавлено через 6 минут и 5 секунд
я это имела ввиду. плохо вопрос сформировала
Так нужно приводить к string?

Добавлено через 8 минут и 50 секунд
command.CommandType = CommandType.StoredProcedure
PM MAIL   Вверх
Akina
Дата 28.9.2007, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(thomas @  28.9.2007,  22:05 Найти цитируемый пост)
где у тебя в Access storedprocedure 

Есть. Но только через ADO. В окне БД их при этом увидеть нельзя.


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

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


Опытный
**


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

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



Цитата(thomas @  29.9.2007,  00:05 Найти цитируемый пост)
Но, я хоть убей не вьезжаю где у тебя в Access storedprocedure ?
На SQL сервере они есть, а вот в Access где?

Я так понимаю, что kedicik, в акцесе использует то, что там называется запросом. А из асп обращается к ним как к хранимой процедуре. Т.е. с точки зрения асп, он действительно вызывает, как бы, хранимку, только из акцеса а не из sql'я. Сам запрос-же не пердедатеся из асп в акцес, а вызывается по имени, полная аналогия с хранимкой. Вобщем, kedicik, правильно делает насчет хранимок, но термины не те употребляет.

to kedicik, ты код выложи, где у тебя ошибка. Так быстрее будет разбираться.
PM MAIL   Вверх
kedicik
Дата 1.10.2007, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



dazy, все правильно изложил.  Хорошо. Выложу. 
PM MAIL   Вверх
kedicik
Дата 1.10.2007, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



В таблице 2 поля - 
1) XmneeID числовое 
2)  Session_Start  дата  полный формат даты

Составлен запрос который в Access работает нормально    SelectSess.
Код

PARAMETERS [@Session_Start] DateTime;
SELECT *
FROM [Session]
WHERE (((Session.XmneeID)=[@XmneeID]) AND ((Session.Session_Start)=[@Session_Start]));


 например в таблице есть такая запись
1060101 
01.10.2007 11:12:58

Пытаюсь найти ее

Код

        Public Function SelectSessionStart(ByVal UsId As Integer, ByVal SesStart As DateTime) As DataTable
        dim MyConnection As OleDbConnection
        dim MyCommand As OleDbCommand
        dim MyAdapter As OleDbDataAdapter
        dim DS As DataSet
        dim DT As DataTable

            Dim StrBase As String
            StrBase = "Provider=Microsoft.Jet.OLEDB.4.0;JET OLEDB:System DataBase=F:/December/TestsWorkGroup.mdw; Data Source=F:/December/Tests.mde" 
            Try
                MyConnection = New OleDbConnection()
                MyConnection.ConnectionString = strBase
                MyCommand = New OleDbCommand()
                MyCommand.Connection = MyConnection
                MyAdapter = New OleDbDataAdapter(MyCommand)
                DS = New DataSet()
            Catch ex As Exception
                Throw ex
            End Try

            MyCommand.Parameters.Clear()
            MyCommand.Parameters.AddWithValue("@XmneeID",UsId)
            MyCommand.Parameters.AddWithValue("@Session_Start", SesStart)
            Try
                    MyCommand.CommandText ="SelectSess"
                    MyCommand.CommandType = CommandType.StoredProcedure
                MyAdapter.Fill(DS,"Session")
                DT = DS.Tables("Session")
            Catch ex As Exception
                Throw ex
            Finally
                MyCommand.Connection.Close()
            End Try
            Return DT
        End Function


при вызове этой функции указываю
Код

dim d as DateTime
d=#10/12007 11:12:58 AM#
dim myTable as datatable
myTable=SelectSessionStart(1060101, d)

Получаю пустую таблицу
Если указаваю 
dim strDate as String
strDate=d.ToString("dd.MM.yyyy hh:mm:ss")
вызываю SelectSessionStart(1060101, strDate)
то же самое пусто

Добавлено через 1 минуту и 52 секунды
сори
Код

 dim d as DateTime
d=#10/1.2007 11:12:58 AM#
dim myTable as datatable
myTable=SelectSessionStart(1060101, d)


Добавлено через 3 минуты и 24 секунды
 
Код

dim d as DateTime
d=#10/1/2007 11:12:58 AM#
dim myTable as datatable
myTable=SelectSessionStart(1060101, d)

вот правильный вариант но не работает
PM MAIL   Вверх
thomas
Дата 1.10.2007, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



kedicik
Цитата

Если указаваю 
dim strDate as String
strDate=d.ToString("dd.MM.yyyy hh:mm:ss")


Цитата(thomas @ 28.9.2007,  20:05)
если будешь формировать SQL-запрос как string, то дату надо форматировать к такому виду для Access
#MM/dd/yyyy#  иначе он не примет.


Почувствуйте разницу

ЗЫ и если ты знаешь ID, то зачем туда еще и 
Код

 AND ((Session.Session_Start)=[@Session_Start]));

привинчивать.  smile 

Это сообщение отредактировал(а) thomas - 1.10.2007, 19:22


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


Бывалый
*


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

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



Цитата(thomas @  1.10.2007,  19:19 Найти цитируемый пост)
ЗЫ и если ты знаешь ID, то зачем туда еще и 

код SQL
1:

 AND ((Session.Session_Start)=[@Session_Start]));

привинчивать


я хочу записывать в бд на окончание сессии в global.asax время окончания сессии. Но поскольку один и тот же юзер может начать и бросить много сессий (закрыть браузер), то мне нужно нужно искать именно по времени начала сессии (как доп условие). Поэтому я буду записывать время окончания сессии в таблицу только если эта та сессия которая меня интересует
PM MAIL   Вверх
dazy
Дата 2.10.2007, 07:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Глупый вопрос, а в watch смотрела, переменной правильно дата присваивается?
PM MAIL   Вверх
kedicik
Дата 2.10.2007, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вопрос решила.

Цитата(thomas @  1.10.2007,  19:19 Найти цитируемый пост)
dim strDate as String
strDate=d.ToString("dd.MM.yyyy hh:mm:ss")

это не прошло!
Код

dim strDate as String
strDate=d.ToString("yyyy.MM.dd hh:mm:ss")

так все заработало!
Всем спасибо!
PM MAIL   Вверх
kedicik
Дата 2.10.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Хочу продолжить тему все-таки! Потому что до обеда все это работало а после обеда - опять пусто!
то есть этот формат не совсем верен.
Использовала следующий формат
Код

dim strDate as String
strDate=Format(d,"G")

Теперь работает и до обеда и после обеда.
А все дело в том что до полудня - время AM  а после полудня PM.
И если я искала время как мне казалось 16:15:00 (как я вижу в БД) а задавала я 4:15:00 PM   естественно с таким форматом ничего не могла найти

Добавлено через 2 минуты и 16 секунд
Теперь возникает вопрос -- права ли я используя такой формат? может он не будет работать в каких-то случаях? И как хранится в БД время? зависит ли это от системных установок? 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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