![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите пожайлусата как правильно и рационально [D6, MSSQL]
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]
аха не криминал, пока настройки на базе не поменялись
программу будешь перекомпилировать?