Ламерский вопрос про использование переменных в SQL

ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
lsgsoftware
Ветеран
Сообщения: 311
Зарегистрирован: 08 Июль 2005, 22:04

Ламерский вопрос про использование переменных в SQL

Сообщение lsgsoftware »

В SQL я еще чайник.
1.Очень хочется использовать в кларион-программах прямые обращения к SQL типа
Send(File,'тело запроса')
File{Prop:SQL}='тело запроса'
Но это эффективно только в том случае, если в теле запроса можно использовать переменные из кларион-программы.Я конечно понимаю,что SQL-сервер понятия не имеет о каких-то там переменных из клиентской программы, но может быть все-таки можно.
2.В SQL довольно муторный формат для хранения даты и времени.Я вычитал на форуме, что бывают проблемы со сравнением дат.Как старый кларионист я знаю что в кларионе дата и время это просто переменные типа Long.Не мудрствуя лукаво в SQL я для полей даты и времени использовал переменную Int.И вроде все работает нормально.
Правильно ли это???(формат даты клариона доживет почти до конца 21 века, а там и нас грешнх уже не будет)
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Сообщение StillZero »

1.Очень хочется использовать в кларион-программах прямые обращения к SQL типа ...
Но это эффективно только в том случае, если в теле запроса можно использовать переменные из кларион-программы.
не совсем понял в чем проблема, так например можно писать

Код: Выделить всё

'SELECT MyField FROM MyTable WHERE MyCondition='&MyClarionVariable
2.В SQL довольно муторный формат для хранения даты и времени.
я так понял речь о MS SQL...
нормальный формат :) и проблем никаких нет, а int-ом пользоваться по ламерски :)

поле дата в SQL - это тип datetime - датавремя
в кларе это поле описывается так:

Код: Выделить всё

DateTimeField       STRING(8) ! 8-байт
DateTimeField_Group GROUP,OVER(DateTimeField)
DateTimeField_DATE     DATE
DateTimeField_TIME     TIME
                    END
как я понимаю поле времени тебе не нужно, поэтому оно всегда будет равно нулю

при сравнении MS SQL учитывает поле времени, а так как оно равно нулю, то, если ранее писали так:

Код: Выделить всё

  MyDate>=loc:DateBegin and MyDate<=loc:DateEnd
то теперь примерно так:

Код: Выделить всё

  MyDate>=loc:DateBegin and MyDate<loc:DateEnd+1
Ответить