powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ACCESS -> SQL Server, вопрос по совместимости...
11 сообщений из 11, страница 1 из 1
ACCESS -> SQL Server, вопрос по совместимости...
    #33065674
У меня вопрос!
Есть софт, стучится к ACCESS через ODBC!
Софт использует СRecordset::Open из MFC!
Но это так лирическое отступление....

А проблема в том что АССESS дату в SQL запросе воспринимает в виде #01/31/2005#

а вот SQL Server хочет
'01/31/2005'

Можно ли заставить работать программу c любой СУБД не меняя SQL запрос и не перекомпилируя программу?
Последнее что мне приходит в голову использовать параметры... со всеми вытекающми... Надо еще глянуть через какую ж... это реализовано в MFC!

Вообщем хочется вопрос решить на уровне текста запроса или базы данных...
Очень важно и срочно....
Жду любых соображений!!!
...
Рейтинг: 0 / 0
ACCESS -> SQL Server, вопрос по совместимости...
    #33065713
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Их бин нихт большой спец в SQL сервере, но мне кажется, что он может принимать дату в любом формате - только надо указать при дате, чтО это за формат.
...
Рейтинг: 0 / 0
ACCESS -> SQL Server, вопрос по совместимости...
    #33065714
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А вообще язык SQL действительно имеет разные версии, в том числе есть много (больше одного) различий между Аксессом и SQL сервером. И от этого никуда не попишешь.
...
Рейтинг: 0 / 0
ACCESS -> SQL Server, вопрос по совместимости...
    #33065718
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>#01/31/2005#
Это похоже на консантанту VBA типа Date
Если вам повезло и СRecordset::Open из MFC передает ее в звпрос как строку
а уже само ядро Jet преобразует ее в дату
то следует избавится от # и самому позаботится
о преобразовании строки в дату с помощью соотв функций в теле запроса

>а вот SQL Server хочет '01/31/2005'
На самом деле сервер ничего не хочет,
а использует для преобразования текущие нац настройки винды
в принципе строку можно преобразовать с помощью функции CONVERT
или сменить на время транзкции нац настройку.
но обычно , чтобы не иметь проблем с авто преобразованием
передают дату на MSSQL в формате YYYYMMDD

SQLDate = Format(DateF, "yyyymmdd")
...
Рейтинг: 0 / 0
ACCESS -> SQL Server, вопрос по совместимости...
    #33065722
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин, а я вот в течение нескольких лет и не знал ни разу - какие там форматы для кого нужны. патамушта использовал параметры, и пусть сами библиотеки ADO/DAO мучаются с конвертацией чего-то во что-то.

пусть лошодь думает, у него голова большой.

З.Ы. попытка " заставить работать программу c любой СУБД не меняя SQL запрос " говорит только о квалификации разработчика. либо о примитивности решаемой задачи.
...
Рейтинг: 0 / 0
ACCESS -> SQL Server, вопрос по совместимости...
    #33066026
Это похоже на консантанту VBA типа Date
Если вам повезло и СRecordset::Open из MFC передает ее в звпрос как строку
а уже само ядро Jet преобразует ее в дату
то следует избавится от # и самому позаботится
о преобразовании строки в дату с помощью соотв функций в теле запроса


Прикол в том что для Accessa можно писать DateSerial(y, m, d)

SQLServer на этот DateSerial так ругнется, что в соседенй комнате аукнется!
Соответсвенно Access ругнется на CONVERT!
А текст запроса хочется сделать одниковым!
Или я что-то не понял?

Единственное, что еще приходит в глову это сделать функцию CONVERT в базе Access, может кто-нибудь знает как сделать функцию, которую можно будет использовать в выражениях?


попытка "заставить работать программу c любой СУБД не меняя SQL запрос" говорит только о квалификации разработчика. либо о примитивности решаемой задачи.

А мне и нужна вожможность сказать "Смотрите какая у нас чудесная программа! Хотите Acccess? Пожалуйста! Много данных? Нажимаем кнопочку и данные перенеслись в SQL Server, а мы работаем как ни в чем не бывало!"
А база в принципе простая как три копейки, но из нее почти ничего не удаляется и через пару лет там такая п--- начнется, а всяких аналитических отчетов по этим данным делается много и суется это все в ворд через COM, который и так тормоз!

И еще вопрос к Всемогущему Оллу как получить название (версиию) СУБД с помощбю SQL запроса?
...
Рейтинг: 0 / 0
ACCESS -> SQL Server, вопрос по совместимости...
    #33066042
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
очень очень злойА текст запроса хочется сделать одниковым!
Или я что-то не понял?
Уже двое ответили (я и ЛП), что в серьезных задачах это невозможно. Жалобы просьба направлять в Microsoft заказным письмом.
...
Рейтинг: 0 / 0
ACCESS -> SQL Server, вопрос по совместимости...
    #33066158
Всем большое спасибо!

Если кто-нибудь знает, как функцию для выражений (expressions) сделать в Access'е поделитесь опытом!
...
Рейтинг: 0 / 0
ACCESS -> SQL Server, вопрос по совместимости...
    #33066191
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может я не очень понял о чем речь, но, по моему, для того чтобы язык запросов был один для разных типов баз, надо просто использовать просто еще один слой, БДЕ или ДАО.
...
Рейтинг: 0 / 0
ACCESS -> SQL Server, вопрос по совместимости...
    #33066441
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>как функцию для выражений
проще на TSQL обернуть CONVERT в DateSerial

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE FUNCTION  dbo.DateSerial
	(
	@y smallint,
	@m tinyint,
	@d tinyint
	)
RETURNS datetime
AS
	BEGIN
		--если год двухзначный
		IF @y< 100 
			--Явное приведение типа функцией CONVERT
			 RETURN CONVERT(datetime,REPLACE(STR(@y, 2 )+STR(@m, 2 )+STR(@d, 2 ) ,' ','0'), 12 )
			--Явное приведение типа функцией CAST
			--RETURN CAST(REPLACE(STR(@y,2)+STR(@m,2)+STR(@d,2) ,' ','0') AS datetime)
			--неявное  приведение типа
			--RETURN REPLACE(STR(@y,2)+STR(@m,2)+STR(@d,2) ,' ','0')

		--если год четырехзначный
		RETURN  CONVERT(datetime,REPLACE(STR(@y, 4 )+STR(@m, 2 )+STR(@d, 2 ) ,' ','0'), 112 )
	END
...
Рейтинг: 0 / 0
ACCESS -> SQL Server, вопрос по совместимости...
    #33068509
Отдельное спасибо Latuk!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ACCESS -> SQL Server, вопрос по совместимости...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (2): Анонимы (1), RePredeclared 6 мин.
Пользователи онлайн (10): Анонимы (7), Bing Bot, Yandex Bot 1 мин., RePredeclared 6 мин.
x
x
Закрыть


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