Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
vasya_27
4 / 4 / 0
Регистрация: 01.03.2016
Сообщений: 139
1

Согласование даты Access с SQL сервером

16.05.2018, 13:59. Просмотров 794. Ответов 7
Метки нет (Все метки)

Здравствуйте! На клиенте имеется форма с полями для ввода дат. В Access дата записывается в текстбокс в формате dd.mm.yyyy hh:nn:ss. На MS SQL Server дата хранится в формате yyyy-mm-dd hh:nn:ss.
Так вот, при выполнении процедуры на заполнение таблицы, я передаю параметры даты (из текстбокса) в VBA
Visual Basic
1
DoCmd.RunSQL "EXEC AddWorkerShedule " & txtListSurname.Value & "," & txtWorkDateStart.Value & "," & txtWorkDateEnd.Value
В свойствах текстбокса выбран формат поля - полный формат даты.
В базе дата задана типом datetime.
Как их можно согласовать, чтобы в передать дату (дата и время) в таблицу на базе SQL Server
Код процедуры
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ALTER PROCEDURE [dbo].[AddWorkerShedule] 
    @WorkerID int,
    @DateStart datetime,
    @DateEnd datetime
    AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @ChaimID int
    SELECT TOP 1 @ChaimID = ChaimID FROM tblChaim ORDER BY ChaimID DESC
    SET @ChaimID = @ChaimID + 1
    INSERT INTO tblWorkingShedule
    (WorkerID, ChaimID, DateStart, DateEnd)
    VALUES
    (@WorkerID, @ChaimID, @DateStart, @DateEnd)
END
Ошибка в VBA:
Согласование даты Access с SQL сервером
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2018, 13:59
Ответы с готовыми решениями:

Как согласовать формат даты Access и SQL Server?
В таблицу на SQL Server не получается хранимой процедурой добавить дату из...

Как в access задать формат даты как в sql сервере-yyyy-mm-dd?
Здравствуйте!!! Соединил access с базой в sql сервере. В одной из таблиц есть...

Даты в SQL 7 и Access
Как можно узнать какой формат даты на компьютере, что бы правильно сделать SQL...

Знаки подстановки разные в SQL Access и SQL VBA Access
Приветствую, уважаемые форумчане. Просмотрел множество сообщений о VBA и SQL,...

Переход (совмещение) Access и SQL (работающая база Access в SQL)
Имеется вот какая задача: существует база данных Access (работает более 5 лет,...

7
mobile
Эксперт MS Access
22933 / 13004 / 2694
Регистрация: 28.04.2012
Сообщений: 14,237
16.05.2018, 14:19 2
Попробуйте переформатировать дату
SQL
1
2
3
DoCmd.RunSQL "EXEC AddWorkerShedule " & txtListSurname.Value & _
"," & format(txtWorkDateStart.Value, "yyyy-mm-dd hh:nn:ss") & _
"," & format(txtWorkDateEnd.Value, "yyyy-mm-dd hh:nn:ss")
1
vasya_27
4 / 4 / 0
Регистрация: 01.03.2016
Сообщений: 139
16.05.2018, 14:33  [ТС] 3
mobile, в таком случае
Согласование даты Access с SQL сервером
0
vasya_27
4 / 4 / 0
Регистрация: 01.03.2016
Сообщений: 139
16.05.2018, 14:52  [ТС] 4
Если дату пишу без тире в виду yyyy-mm-dd, то пишет "Неправильный синтаксис около конструкции "00"".
Теперь он спотыкается именно на времени...
Похоже что десятичная часть секунды тоже пытается записаться. Как её отбросить в Format?

Добавлено через 9 минут
Имел ввиду что в SQL секунды хранятся вместе с долями секунд и видимо в них затык. Как их отбросить при вставке на базу?
А может причина и вовсе не в том...
0
MrShin
200 / 183 / 46
Регистрация: 18.06.2015
Сообщений: 360
16.05.2018, 15:09 5
Кавычки вокруг дат не поставили
0
vasya_27
4 / 4 / 0
Регистрация: 01.03.2016
Сообщений: 139
16.05.2018, 15:12  [ТС] 6
MrShin, в каком именно месте?
0
MrShin
200 / 183 / 46
Регистрация: 18.06.2015
Сообщений: 360
17.05.2018, 09:55 7
Лучший ответ Сообщение было отмечено vasya_27 как решение

Решение

Цитата Сообщение от vasya_27 Посмотреть сообщение
в каком именно месте?
Visual Basic
1
2
3
DoCmd.RunSQL "EXEC AddWorkerShedule " & txtListSurname.Value & _
",'" & format(txtWorkDateStart.Value, "yyyy-mm-dd hh:nn:ss") & _
"','" & format(txtWorkDateEnd.Value, "yyyy-mm-dd hh:nn:ss") & "'"
1
vasya_27
4 / 4 / 0
Регистрация: 01.03.2016
Сообщений: 139
17.05.2018, 16:19  [ТС] 8
MrShin, спасибо! Теперь возникает ошибка - "ошибка при преобразовании varchar в datetime"
То есть теперь мне надо к этим полям функцию Convert применять?

Добавлено через 1 час 48 минут
Тему можно закрывать. Вставил все это безобразие еще в CDate - заработало. По итогу выглядит так:
Visual Basic
1
2
3
DoCmd.RunSQL "EXEC AddChaim " & txtClientID.Value & ", '" 
& CDate(Format(txtEventDateStart.Value, "yyyy-mm-dd hh:nn:ss")) & "' , '" 
& CDate(Format(txtEventDateEnd.Value, "yyyy-mm-dd hh:nn:ss")) & "' , " & txtWishPlace.Value & " , " & txtSeats.Value
0
17.05.2018, 16:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2018, 16:19

1С для SQL Server - невозможно устьановить соединение с сервером БД.
1С установлена на рабочей станции с Win95. При запуске 1С запрашивает пароль и...

Даты в access
Подскажите, плиз, новичку! Как в access сделать таблицу, чтобы ежемесячно...

SQL 7 и даты
Делаю запрос select * from temp Получаю num date 1 13.06.01 2 14.06.01...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru