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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2010, 13:47   #1
VHomer
Пользователь
 
Регистрация: 11.10.2008
Сообщений: 82
По умолчанию Проблемы с запросом в базу

Начал писать разрабатывать приложения для БД недавно и столкнулся с такой ситуацией:
Надо изменить текст SQL запроса который в query
написал такой вот оператор
Цитата:
query1.SQL.Text:='SELECT dbo.CreditCertificate.LogNb, dbo.CreditCertificate.CardNo, dbo.CreditCertificate.CalcNo, dbo.CreditCertificate.Summ, dbo.CreditCertificate.CTC, dbo.CreditCertificate.CreateDate,db o.CreditCertificate.ExpiredDate AS Îêîí÷àíèå, dbo.CreditCertificate.DateIn, dbo.CreditCertificate.Certificate, dbo.CreditCertificate.CERTIFICATE_I D, dbo.CertificationTerminals.Terminal Number, dbo.Market.Short, dbo.Market.Additions FROM dbo.CertificationTerminals, dbo.CreditCertificate, dbo.Market WHERE ((dbo.CreditCertificate.LogNb like "'+log+'") and((dbo.CreditCertificate.ExpiredD ate)>getdate())) AND ((dbo.CreditCertificate.CERTIFICATE _ID)=(dbo.CertificationTerminals.CE RTIFICATE_ID) and(dbo.CertificationTerminals.Term inalNumber)=(dbo.Market.Place))';
При компиляции выдается ошибка мол переменная типа String не может быть больше 255 знаков! Как эту проблему решить????
Я конечно разделил этот текст на 3 части и каждая часть меньше 255 знаков и ошибка исчезла, но это ведь не дело!

И второй вопрос! Подскажите как граматно написать запрос для сравнения даты из бд с датой которую я сам ввел
я вот так пробовал наподобии вот этого :
[дата БД формата dd.mm.yyyy hh.mm.ss]< 23.04.2008
и
[дата БД формата dd.mm.yyyy hh.mm.ss]< 23/04/2008
и
[дата БД формата dd.mm.yyyy hh.mm.ss]< #23/04/2008#
и т.д.
не принимает он такую строчку
может кто и в этом поможет?
VHomer вне форума Ответить с цитированием
Старый 10.06.2010, 15:01   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
запрос для сравнения даты из бд с датой которую я сам ввел
делаете параметрический запрос. (в тексте запроса вместо вашей даты должен быть параметер (это идентификатор, начинающийся с двоеточия,
например:
' ... WHERE [дата БД]< :PMyDate .... ' )
для ввода даты используйте TDateTimePicker
перед выполнением запроса присваиваете параметер
примерно так:
Код:
ADOQuery1.Parameters.ParamByName('PMyDate').Value := DateTimePicker1.Date;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.06.2010, 11:57   #3
VHomer
Пользователь
 
Регистрация: 11.10.2008
Сообщений: 82
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
делаете параметрический запрос. (в тексте запроса вместо вашей даты должен быть параметер (это идентификатор, начинающийся с двоеточия,
например:
' ... WHERE [дата БД]< :PMyDate .... ' )
для ввода даты используйте TDateTimePicker
перед выполнением запроса присваиваете параметер
примерно так:
Код:
ADOQuery1.Parameters.ParamByName('PMyDate').Value := DateTimePicker1.Date;
Написал вот что

Код:
query1.Params.ParamByName('BDate').Value:=datetimepicker1.date;
query1.Params.ParamByName('EDate').Value:=datetimepicker2.date;
query1.SQL.Text:='...(dbo.CreditCertificate.ExpiredDate)between :BDate and :EDate)....'
В ходе выполнения кода выскакивает ошибка Quer1:Parametr 'BDate' not found и всё останавливается
в чём может быть дело?

Последний раз редактировалось VHomer; 11.06.2010 в 12:01.
VHomer вне форума Ответить с цитированием
Старый 11.06.2010, 12:02   #4
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

Цитата:
В ходе выполнения кода выскакивает ошибка Quer1:Parametr 'BDate' not found и всё останавливается
в чём может быть дело?
значит такого параметра нету в запросе
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 11.06.2010, 12:49   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Dark_Spirit
значит такого параметра нету в запросе
+1

VHomer, приведите целиком текст запроса и функционально законченный кусок кода, где Вы работаете с Query1 ....
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.06.2010, 04:27   #6
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Пересоздай параметры. Через окно создания параметров.
Ибо замечен толи глюк, толи это нормальное поведение D 2010.
ADOuery не подберает параметры написанные просто в SQL код.
Приходиться создавать ручками.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 15.06.2010, 07:13   #7
VHomer
Пользователь
 
Регистрация: 11.10.2008
Сообщений: 82
По умолчанию

Цитата:
Сообщение от Dark_Spirit Посмотреть сообщение
значит такого параметра нету в запросе
Английский я хорошо знаю! Я имею ввиду почему такая ошибка выскакивает! В запросе есть этот параметр и я его выше описал как мне посоветовали!
VHomer вне форума Ответить с цитированием
Старый 15.06.2010, 07:15   #8
VHomer
Пользователь
 
Регистрация: 11.10.2008
Сообщений: 82
По умолчанию

Цитата:
Сообщение от rdama Посмотреть сообщение
Пересоздай параметры. Через окно создания параметров.
Ибо замечен толи глюк, толи это нормальное поведение D 2010.
ADOuery не подберает параметры написанные просто в SQL код.
Приходиться создавать ручками.
А можно поподробнее! Я просто до этого никогда с параметрами не работал!
И ещё! Я использую просто query, а не ADOQuery
VHomer вне форума Ответить с цитированием
Старый 15.06.2010, 08:02   #9
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Цитата:
И ещё! Я использую просто query, а не ADOQuery
Ну видимо и у него есть такая болезнь.
Я решал так в свойстве SQL пишешь запрос например:
Код:
SELECT * FROM table1 t WHERE t.ID= :ID
Т.е параметр у на с один ID/
После этого идем в свойство Params и добавляем там параметр с именем ID и указываем его тип.
И усе можно работать с параметром.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 15.06.2010, 18:49   #10
GenniY
Форумчанин
 
Регистрация: 09.09.2009
Сообщений: 181
По умолчанию

К слову
Цитата:
При компиляции выдается ошибка мол переменная типа String не может быть больше 255 знаков! Как эту проблему решить????
Я конечно разделил этот текст на 3 части и каждая часть меньше 255 знаков и ошибка исчезла, но это ведь не дело!
Литерал ограниченной длинны. Больше 255 знаков никогда не запишешь.
Можешь писать через "+" или разбивать запрос с помощью Query.SQL.ADD
Получил помощь — отблагодарил.
GenniY вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с запросом. Cerber24 SQL, базы данных 1 05.06.2010 02:59
Проблемы с запросом Cerber24 SQL, базы данных 10 01.04.2010 14:14
Проблемы с POST запросом через cURL LonRv PHP 0 28.12.2009 17:56
Проблемы с POST запросом... JustKurt Работа с сетью в Delphi 1 26.07.2009 01:02
Проблемы с записью данных в базу Serval БД в Delphi 4 24.06.2009 19:39