Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

MS SQL + ADO + DateTime   Найти похожие ветки 

 
Jungle   (2004-03-26 10:24) [0]

Есть запрос типа "INSERT INTO TableName (rDateTime) VALUES (:parDateTime);" (хранится в ADOQuery1)

параметр parDateTime типа ftString

и следующий код:

...
ADOQuery1.Parameters.ParamValues["parDateTime"] := FormatDateTime("yyyy-mm-dd hh:nn:ss", tmpDate); //tmpDate - типа TDateTime
...
ADOQuery1.ExecSQL;
...

Так вот, в одной программе всё работает пучком, в другой упорно не хочет, выдаётся ошибка "...[Microsoft][ODBC SQL Server Driver]Дополнительная возможность не реализована." Ничего не понимаю. Натолкните на мысль, уважаемые...


 
sniknik ©   (2004-03-26 10:43) [1]

> Натолкните на мысль, уважаемые...
на какую? в чем проблема или как решить?

проблема в том что не поддежживается сервером преобразование даты из представленой строкой в ODBС стандарте. (почему хз. сам смотри, твой сервер)

решить, 2 варианта
хороший
не преобразовывать
ADOQuery1.Parameters.ParamValues["parDateTime"]:= tmpDate;

плохой
поменять формат строки на MSSQL стандарт
ADOQuery1.Parameters.ParamValues["parDateTime"] := FormatDateTime("yyyymmdd hh:nn:ss", tmpDate)


 
Jungle   (2004-03-26 10:54) [2]

> проблема в том что не поддежживается сервером преобразование даты из представленой строкой в ODBС

А почему в одной программе работает, а вдругой - нет?

> не преобразовывать
> ADOQuery1.Parameters.ParamValues["parDateTime"]:= tmpDate;

Сначала так и было. Я всё перепробовал. С этой проблемой сталкиваюсь во второй раз. В первый раз нашёл в нете решение, которое в начальном посте.

> поменять формат строки на MSSQL стандарт

Фиг-с-два. Пишет что-то вроде "приложение использует для данной операции значение неверного типа"


 
sniknik ©   (2004-03-26 11:15) [3]

и в чем дело? почему с правильной передачи параметров ушол?  

> А почему в одной программе работает, а вдругой - нет?
это твои программы? не можеш при наличии кода рассмотреть разницу? я как я ее рассмотрю без этого наличия?
могу только предположить, тип параметра не тот(или неопределен, тут и результат такой же). ставь явно до присвоения значения.

> Фиг-с-два. Пишет что-то вроде "приложение использует для данной операции значение неверного типа"
одно из двух, либо тип параметра не строка, либо сервер не MSSQL.


 
Jungle   (2004-03-26 12:09) [4]

Сервер точно MS SQL 2000

> и в чем дело? почему с правильной передачи параметров ушол?

Потому что не работало.
Единственный способ, который сработал в первой программе - это

ADOQuery1.Parameters.ParamValues["parDateTime"] := FormatDateTime("yyyy-mm-dd hh:nn:ss", tmpDate);

Программа реально работает без ошибок.

Я его сразу во вторую прогу (обе мои) поэтому и воткнул. Когда не сработало - просто обалдел. Различия-то есть конечно. копался в Dfm-файлах, выставил во второй проге всё так же как в первой - всё равно не работает.
Уже вторую неделю извращаюсь. Вот уж сюда и полез, потому что совсем башка на эту тему больше не варит.


 
Johnmen ©   (2004-03-26 12:16) [5]

Ответственно скажу, что с
ADOQuery1.Parameters.ParamByName("parDateTime").Value:=<переменная типа TDateTime>;
где поле parDateTime типа datetime,
никаких проблем не наблюдается.


 
Jungle   (2004-03-26 12:27) [6]

Проверил - не работает. И даже в другую таблицу (с которой первая программа работает) не хочет записывать. Т.е. дело, я думаю :), не в таблице.


 
Johnmen ©   (2004-03-26 12:30) [7]

>не работает

Это как ? Откуда уверенность ?


 
Jungle   (2004-03-26 12:37) [8]

> Это как ? Откуда уверенность ?

Что значит как? Во-первых, выдается та же самая ошибка при ExecSQL. Во вторых, в таблице ничего не добавляется. Или я недопонял вопроса.?


 
sniknik ©   (2004-03-26 12:38) [9]

Johnmen ©   (26.03.04 12:16) [5]
ответственно подтверждаю. ;о))

Jungle   (26.03.04 12:27) [6]
дело явно в коде (том что скрывается за точками в первом посте).
или в соответствиях типа в связке "поле в таблице"-"параметр"-"задаваемое значение".


 
Jungle   (2004-03-26 13:39) [10]

Я в ADOConnection пересоздал строку подключения и всё заработало. Только непонятно почему, т.к. при запуске программы я всё равно создаю dsn-файл и в ADOConnection.ConnectionString := "FILE NAME=x:\prog\config.dsn". Или я торможу или одно из двух... А, скорее всего, третье :)


 
Fay ©   (2004-03-26 14:38) [11]

>> .Parameters.ParamValues["parDateTime"] := FormatDateTime("yyyy-mm-dd hh:nn:ss", tmpDate
Тут ему не хватит кавычек 8)


 
Jungle   (2004-03-26 15:05) [12]

Блин. Убейте меня.
Дело вот в чём. в запросе у меня слово TableName. По ходу работы я функцией StringReplace заменяю его на имя настоящей таблицы. Так вот. Если указать имя таблицы сразу, то всё замечательно работает. А если делать как я, то не работает. Не понимаю почему.
Подскажите как правильно сделать, а то совсем ни черта не соображаю уже. Через параметр не выходит.


 
sniknik ©   (2004-03-26 15:11) [13]

> Блин. Убейте меня.
будь завтра в условленом месте часов так в 11-12.

> А если делать как я, то не работает. Не понимаю почему.
перечитай внимательно пост [3] второй абзац. решение там.


 
Jungle   (2004-03-26 15:22) [14]

Уфф. Вроде заработало. Спасибо.
Вот что значит невнимательно читать :)
Пожалуй погожу теперь помирать :)


 
KSergey ©   (2004-03-26 16:24) [15]

> parDateTime типа ftString

Мне лично вот это как раз не понятно... Зачем "типа ftString"?


 
Fay ©   (2004-03-26 20:31) [16]

чтобы оптимизатору крышу сносить


 
Jungle   (2004-03-29 14:43) [17]

2 KSergey

Понимаешь, у меня никак не получалось запихать дату/время в таблицу. Я нашёл пример, где параметр был типа ftString. Всё заработало, а почему - мне как-то побоку.



Страницы: 1 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.024 c
8-1074421391
DoMenos
2004-01-18 13:23
2004.04.25
Статьи по Direct3D


1-1081311004
ksa2002
2004-04-07 08:10
2004.04.25
Tree View


14-1080807128
Anatoly Podgoretsky
2004-04-01 12:12
2004.04.25
Про чат


1-1081267867
an-na2002
2004-04-06 20:11
2004.04.25
сохранение в файл


1-1081662810
Sphinx
2004-04-11 09:53
2004.04.25
Событие восстановления окна