Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите пожайлусата как правильно и рационально [D6, MSSQL]


Страницы:   1 2

svt ©   (2006-10-12 10:17:00) 

Подскажите пожайлусата как правильно и рационально  конвертировать формат даты из DateTimePicker1.DateTime в формат mssql. Дело в том что формат в DateTimePicker1.DateTime (дд.мм.гггг), а в mssql - мм.дд.гггг (т.е. в инсерт можно так записать).
Короче говоря помогите решить этот вопрос. что и как правильно необходимо сделать. Спасибо


MaxDAG   (2006-10-13 16:47:00) [1]

Когда рабол над АСУ предприятия встретился с проблемой переноса данных между ORACLE, IB и MSSQL. Самым муторнам оказалось перенести поля с типом ДАТА из-за их различий.
Попробовали брать тип TDateTime, а точнее FLOAT, что в той или иной степени подошло ко всем базам, сортировалось и работало при сравнении значений.


evvcom   (2006-10-12 12:08:00) [2]

> [32] svt   (12.10.06 12:05)

Да приходи еще, не стесняйся. :)


svt   (2006-10-12 12:05:00) [3]


> А если остались какие-то сомнения, то ты их уже давно разрешил
> бы, просто ПОПРОБОВАВ на практике то, что тебе насоветовали.
>

с момента задания вопроса до момента прочтения
> Bless ©   (12.10.06 11:52) [30]


уже наэксперементировал и навносил пробную инфу в базу.... работает спасибо. рад что не обломался мне советовать. спасибо.


Stanislav   (2006-10-12 12:01:00) [4]

svt   (12.10.06 10:17)  

Всегда передаю дату в таком формате: '20061231' (YYYYMMDD) - всегда правильно.


Bless   (2006-10-12 11:52:00) [5]

>ADOCommand  - работает с параметрами так же как и ADODataset1?

да.

Вообще-то ответы на все твои вопросы были даны ранее мной или другими участниками обсуждения.
А если остались какие-то сомнения, то ты их уже давно разрешил бы, просто ПОПРОБОВАВ на практике то, что тебе насоветовали.


svt   (2006-10-12 11:43:00) [6]


> Bless ©  

плз ответь на [25] [26] [27]


Bless   (2006-10-12 11:37:00) [7]


> я спрашиваю, т.к. был приведен пример
> ADODataset1.commandtext := ' insert into table1 (F1, F2,
>  F3) values (:F1, :F2, :F3)'


Мой косяк :) Для INSERT надо было ADOCommand.


svt   (2006-10-12 11:33:00) [8]

Я использовал  ADOCommand  для вставки, обновления и удаления.
У меня ADOCommand  один и через него я выполняю различные комманды с выше указанными условиями (insert,delete...)
т.е. по логике вещей я могу программно указать параметры in commandSting и потом им (параметрам) присваивать свои значения?


svt   (2006-10-12 11:29:00) [9]


> ADOCommand - для INSERT, UPDATE, DELETE. (можно в принципе
> и для SELECT, но есть ньюансы, т.к. ADOCommand - не потомок
> TDataset)

ADOCommand  - работает с параметрами так же как и ADODataset1?

я спрашиваю, т.к. был приведен пример
ADODataset1.commandtext := ' insert into table1 (F1, F2, F3) values (:F1, :F2, :F3)'


svt   (2006-10-12 11:26:00) [10]


> Не понимаю проблемы :)

в поле edit пользователь вводит текст содержащий апостроф.
присваиваю переменной txt:=edit1.text;
а потом
Parameters.ParamValues['st_param'] := txt;
я проверял на наличие апострофа и если он встречался в тексте, то заменял на двойную. так ошибок не было.... а после побработки  все нормально. вот почему и спрашиваю.
если проблемы нет то вопрос не имеет силы:)


Bless   (2006-10-12 11:24:00) [11]


> svt   (12.10.06 11:12) [21]
>
> Вот еще вопрос. Что рациональнее использовать для внесения,
>  обновления и удаления данных в базе :ADODataSet1  или ADOCommand1?
>


Ну, тут дело не в рациональности. Они предназначены для разных целей
ADODataset - для запросов, возвращающих данные какой-то выборки (то есть SELECT, обычно).
ADOCommand - для INSERT, UPDATE, DELETE. (можно в принципе и для SELECT, но есть ньюансы, т.к. ADOCommand - не потомок TDataset)

Если попробуешь использовать ADODataset для  INSERT, UPDATE, DELETE, поймаешь ошибку типа "нет данных" (как точно она звучит, мне проверять лениво), хотя запрос и сработает.


Bless   (2006-10-12 11:16:00) [12]


> svt   (12.10.06 11:09) [20]
>
> я спрашиваю это в том, случае , если я через параметры буду
> предавть слово, содержащее кавычку.


Гм...

если так:
var
 st: string;
...
Parameters.ParamValues['st_param'] := st;

то абсолютно равнобедренно, есть в st кавычки или нет, что в st лежит, то и передастся.

а если так:
Parameters.ParamValues['st_param'] := 'блаблабла''блаблабла';
то вместо '' написать одну кавычку тебе компилятор не позволит
Не понимаю проблемы :)


SergeD   (2006-10-12 11:14:00) [13]

<q>>вот в этой ситуации необходимо проверять наличие двойных кавычек, или это делается автоматом?</q>
Каких двойных кавычек?


svt   (2006-10-12 11:12:00) [14]

Вот еще вопрос. Что рациональнее использовать для внесения, обновления и удаления данных в базе :ADODataSet1  или ADOCommand1?


svt   (2006-10-12 11:09:00) [15]

я спрашиваю это в том, случае , если я через параметры буду предавть слово, содержащее кавычку.


svt   (2006-10-12 11:07:00) [16]


> ADODataset1.commandtext := ' insert into table1 (F1, F2,
>  F3) values (:F1, :F2, :F3)'
> ADODataSet1.Parameters.ParamValues['F1'] := DateTimePicker1.
> DateTime;

вот в этой ситуации необходимо проверять наличие двойных кавычек, или это делается автоматом?


Bless   (2006-10-12 11:04:00) [17]


> k2 ©   (12.10.06 10:57) [15]
>
> аха не криминал, пока настройки на базе не поменялись
> программу будешь перекомпилировать?



> Bless ©   (12.10.06 10:56) [13]
> если строка сформирована надлежащимобразом


Дата вида 'YYYYMMDD HH:MM:SS.fff' будет всегда корректна независимо от настроек базы


Bless   (2006-10-12 11:02:00) [18]


> svt   (12.10.06 10:47) [11]
> необходимо использовать convert(datetime,date1,104)?


Нет, если datetime  - это DateTimePicker1.DateTime.
Похоже, у тебя в голове полная каша по поводу дат.
В справке по TDateTimePicker ты мог бы увидеть, что
DateTime: TDateTime
type TDateTime = type Double;

т.е. свойство DateTime - это просто вещественное число.
А convert(datetime,date1,104) подразумевает (о чем недвусмысленно написано в BOL), что первый параметр - character data, то бишь строка.


svt   (2006-10-12 11:00:00) [19]

СПАСИБО за помощь...теперь хоть видно в каком направлении двигать.
а вот по поводу convert? что скажете.... стоит ли использовать?


k2   (2006-10-12 10:57:00) [20]

Bless ©   (12.10.06 10:56) [13]
аха не криминал, пока настройки на базе не поменялись
программу будешь перекомпилировать?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо