Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2011, 15:47   #11
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от ReportCube Посмотреть сообщение
О каком отличном решении мы говорим? Отличное решение для получения из запроса в нужном для пользователя на данный момент времени формате дату и время. Это будет работать всегда, даже при изменении формата даты-времени в настройках сервера. Но! Вопрос был задан о передаче в запрос даты/времени. Сколько раз наступаем на одни и те же грабли? И, наконец, кто мешает всё необходимое передавать через параметры? Есть ограничение в количестве, но это где-то более 2тысяч. Зато гарантированно никаких проблем у заказчика - программа продолжает работать даже после переустановки сервера новым админом!!!
1. Когда речь шла о втором посте, то и имелось в виду задание даты в WHERE в формате 'ГГГГММДД', MSSQL понимает ее при любых настройках.
2. Попробуйте параметризировать запрос с перечнем из 20 возможных условий, которые могут быть заданы в любой комбинации и соединенные OR или AND в зависимости от варианта задания. Не забудьте число сочетаний из n по m
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.03.2011, 15:57   #12
$T@LKER
Форумчанин
 
Аватар для $T@LKER
 
Регистрация: 28.03.2009
Сообщений: 393
По умолчанию

Проблема вставки дату в базу решена!

Это код которые берет данные с экселя.


Код:
QueryUpdate.close;
                  QueryUpdate.SQL.Clear;
                  QueryUpdate.SQL.Add('insert into аренда (Комнат,Планировка,Цена,Цена_за_метр,Валюта,Район,Улица,Дом,Жилая,Кухня,Этаж,Этажность,Материал,Телефон,Телевизор,Холодильник,Мебель,Предоплата,Контактный_телефон,Примечание,Дата,N)'
                          + ' values ('+inttostr(Ap.Cells[rows,1])+','+QuotedStr(Ap.Cells[rows,2])+','+inttostr(Ap.Cells[rows,3])+','+inttostr(Ap.Cells[rows,4])+','+QuotedStr(Ap.Cells[rows,5])+','+QuotedStr(Ap.Cells[rows,6])
                          +','+QuotedStr(Ap.Cells[rows,7])+','+QuotedStr(Ap.Cells[rows,8])+','+inttostr(Ap.Cells[rows,9])
                           +','+ inttostr(Ap.Cells[rows,10]) +','+ inttostr(Ap.Cells[rows,11])+','+inttostr(Ap.Cells[rows,12])+','+QuotedStr(Ap.Cells[rows,13])+','+QuotedStr(Ap.Cells[rows,14])+','+QuotedStr(Ap.Cells[rows,15])+','
                           +QuotedStr(Ap.Cells[rows,16])+','+QuotedStr(Ap.Cells[rows,17])+','+QuotedStr(Ap.Cells[rows,18])
                           +','+QuotedStr(Ap.Cells[rows,19])+','+QuotedStr(Ap.Cells[rows,20])+','+'(convert(DATETIME, ' + QuotedStr(DateToStr(AP.Cells[rows,21])) + ', 104))'+','+inttostr(Ap.Cells[rows,22])+')');
                  QueryUpdate.ExecSQL;
Вот эта функция преобразовывает дату в формат понятный базе!

Код:
'(convert(DATETIME, ' + QuotedStr(DateToStr(AP.Cells[rows,21])) + ', 104))
""Сериалы и компьютерные игры это словно вторая жизнь, которою ты проживаешь, во главе главного героя или персонажа, параллельно своей!""
$T@LKER вне форума Ответить с цитированием
Старый 14.03.2011, 16:06   #13
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

1. Если Вы думаете, что я уж очень против прямой записи в код, то... Чес слово - сам так делаю на "скорую руку".
2. Просто тут пришлось делать единый код к разным серверным БД (MS SQL, Firebird и пр.помельче). Перебрал кучу комбинаций с датой/временем и опять пришёл к тому же выводу - только через параметры, которые можно использовать абсолютно в любой комбинации с любыми OR, AND, IN, LIKE
3. А в чём разница? Пример - выше этажом. В таком коде - сложности с отладкой.
Сделайте точку останова перед ExecSQL и посмотрите полный текст SQL-команды - думаю, что ошибку сразу увидите глазами...
ReportCube вне форума Ответить с цитированием
Старый 14.03.2011, 16:16   #14
$T@LKER
Форумчанин
 
Аватар для $T@LKER
 
Регистрация: 28.03.2009
Сообщений: 393
По умолчанию

Спасибо ошибку как видите я уже нашел)! И как по мне то и без параметров все отлично заработало в конце концов)
""Сериалы и компьютерные игры это словно вторая жизнь, которою ты проживаешь, во главе главного героя или персонажа, параллельно своей!""
$T@LKER вне форума Ответить с цитированием
Старый 14.03.2011, 19:12   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
Ap.Cells[rows,21]
проверяйте, значит в Ap.Cells находится текст, который содержит пробелы или, наборот, не содержит нужных разделителей.

попробуйте перед запросом выдать содержимое этой самой ячейки. Хоть через
Код:
ShowMessage(' Дата равна = ['+Ap.Cells[rows,21]+']');
и смотрите, что не так...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.03.2011, 19:15   #16
$T@LKER
Форумчанин
 
Аватар для $T@LKER
 
Регистрация: 28.03.2009
Сообщений: 393
По умолчанию

Цитата:
Цитата:
Код:

Ap.Cells[rows,21]

проверяйте, значит в Ap.Cells находится текст, который содержит пробелы или, наборот, не содержит нужных разделителей.

попробуйте перед запросом выдать содержимое этой самой ячейки. Хоть через
Код:

ShowMessage(' Дата равна = ['+Ap.Cells[rows,21]+']');

и смотрите, что не так...
Та я же писал выше что решил вопрос)! + ко всему проверять нету смысла ибо я знаю что там может быть! И то что в моем предыдущем посте то уже рабочий вариант!)
""Сериалы и компьютерные игры это словно вторая жизнь, которою ты проживаешь, во главе главного героя или персонажа, параллельно своей!""
$T@LKER вне форума Ответить с цитированием
Старый 14.03.2011, 20:47   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не учите "плохому"!!
Палка о двух концах...
Нарвался однажды на запрос в три печатных А4 страницы 12 шрифтом.
Около 50 параметров в нем. Глючил запрос. Где не мог разобраться.
Отлаживть его было чертовски трудно, потому как в инструменте SQL запросов (Я говорю о TOAD кто знает его) мне 50 раз спросили какое же значение параметра...
В общем послал параметризацию куда подальше, и после второй же отладки нашел ошибку.
Так что параметризация, параметризацией, но не все то Sun что Shine..
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.03.2011, 16:07   #18
$T@LKER
Форумчанин
 
Аватар для $T@LKER
 
Регистрация: 28.03.2009
Сообщений: 393
По умолчанию

Цитата:
Палка о двух концах...
Нарвался однажды на запрос в три печатных А4 страницы 12 шрифтом.
Около 50 параметров в нем. Глючил запрос. Где не мог разобраться.
Отлаживть его было чертовски трудно, потому как в инструменте SQL запросов (Я говорю о TOAD кто знает его) мне 50 раз спросили какое же значение параметра...
В общем послал параметризацию куда подальше, и после второй же отладки нашел ошибку.
Так что параметризация, параметризацией, но не все то Sun что Shine..
Абсолютно согласен!
""Сериалы и компьютерные игры это словно вторая жизнь, которою ты проживаешь, во главе главного героя или персонажа, параллельно своей!""
$T@LKER вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БД SQL Server 2008 и Delphi Asblue БД в Delphi 6 04.12.2010 11:55
SQL server 2008 sargez SQL, базы данных 2 28.10.2010 13:58
sql server 2008 Neymexa Помощь студентам 1 25.03.2010 13:13
MS SQL Server 2008 и Visual Studio 2008 C# (Как работать с БД?) cherw9!40k Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 2 14.01.2010 20:51
c# и sql server 2008 BattleMage SQL, базы данных 3 14.09.2009 20:28