Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.036 c
7-1077719718
mim
2004-02-25 17:35
2004.04.25
Домашний каталог kylix


14-1081099884
ChengrMan
2004-04-04 21:31
2004.04.25
Юникод


1-1081153338
Tanuki
2004-04-05 12:22
2004.04.25
Перехват значения


7-1078385081
Boroda Oleg
2004-03-04 10:24
2004.04.25
Работа с Active Directory


3-1080559478
Ivan
2004-03-29 15:24
2004.04.25
Вычисляемое поле в отчете





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский