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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2010, 20:12   #1
DimOn4Ik
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 206
По умолчанию Добавление даты в БД (TDateEdit)

Подскажите пожалуйста как правильно занести данные в БД с поля TDateEdit?

Query1.SQL.Add('INSERT INTO telephone(date) VALUES ("+Date.Date+")');

ещё пробовал так
Query1.SQL.Add('INSERT INTO telephone(date) VALUES ("'DateToStr(+Date.Date+)'")');

не компилируется..
DimOn4Ik вне форума Ответить с цитированием
Старый 13.04.2010, 06:33   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Код:
Query1.SQL.Add('INSERT INTO telephone(date) VALUES ("+Date.Date+")');

ещё пробовал так 
Query1.SQL.Add('INSERT INTO telephone(date) VALUES ("'DateToStr(+Date.Date+)'")');
Ужасс...
Используйте параметризированный запрос. Например такой:
Код:
 Form1.Query1.SQL.Clear;
 Form1.Query1.SQL.Text:='INSERT INTO telephone(date) VALUES(:D)';
 Form1.Query1.ParamByName('D').Value:=Form1.Label40.Caption;
 Form1.Query1.ExecQuery;
где в Form1.Label40.Caption, например, хранится дата.
P.S.
1. Не используйте в названии полей зарезервированные слова. В вашем случае date. Могут проблемы возникнуть.
2. Если вы не используете параметры в запросе, а вставляете "как обычно", то используйте функцию QuotedStr. Она добавить кавычки. В вашем случае это было бы так:
Код:
Query1.SQL.Add('INSERT INTO telephone(date) VALUES (QuotedStr(DateToStr(+Date.Date+))');
И покороче и по красивее. Но лучше используйте параметры.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 13.04.2010, 16:17   #3
DimOn4Ik
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 206
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Ужасс...
Используйте параметризированный запрос. Например такой:
Код:
 Form1.Query1.SQL.Clear;
 Form1.Query1.SQL.Text:='INSERT INTO telephone(date) VALUES(:D)';
 Form1.Query1.ParamByName('D').Value:=Form1.Label40.Caption;
 Form1.Query1.ExecQuery;
а если у меня 30 полей? каждый раз описывать?

Form1.Query1.ParamByName('D').Value :=Form1.Label40.Caption;
DimOn4Ik вне форума Ответить с цитированием
Старый 13.04.2010, 16:31   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а если у меня 30 полей? каждый раз описывать?
Но можно в цикле...
Я например все поля и их значения у себя храню в TStringList в виде [Имя поля]=[Значение]
Тогда в цикле удобно по ним проходить и формировать запрос. Впрочем один раз можно и 30 полей описать в программе.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.04.2010, 16:49   #5
DimOn4Ik
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 206
По умолчанию

Stilet если не затруднит,покажите пожалуйста пример )
DimOn4Ik вне форума Ответить с цитированием
Старый 13.04.2010, 17:19   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот. Пожалуйста:
http://www.programmersforum.ru/showt...hlight=FFields
Здесь считывание.
Запись по тому же принципу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.04.2010, 17:54   #7
DimOn4Ik
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 206
По умолчанию

не получается.. О_о

пробовал так:

Код:
Query1.SQL.Add('INSERT INTO telephone(date) VALUES (QuotedStr(DateToStr(+BDate.Date+))');
Изображения
Тип файла: png Безымянный.png (32.3 Кб, 117 просмотров)
DimOn4Ik вне форума Ответить с цитированием
Старый 14.04.2010, 18:03   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Код:
Query1.SQL.Add('INSERT INTO telephone(date) VALUES (QuotedStr(DateToStr(+BDate.Date+)))');
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 14.04.2010, 18:44   #9
DimOn4Ik
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 206
По умолчанию

такая же ошибка ( .. artemavd если Вам не сложно выложите пожалуйста демо!
DimOn4Ik вне форума Ответить с цитированием
Старый 14.04.2010, 21:08   #10
bezOn
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 51
По умолчанию

Цитата:
Сообщение от DimOn4Ik Посмотреть сообщение
Подскажите пожалуйста как правильно занести данные в БД с поля TDateEdit?

Query1.SQL.Add('INSERT INTO telephone(date) VALUES ("+Date.Date+")');

ещё пробовал так
Query1.SQL.Add('INSERT INTO telephone(date) VALUES (" 'DateToStr(+Date.Date+)' ")');

не компилируется..
Ошибка в двух местах.....
Первый раз нужно было преобразовать дату в
строку: ("+Date.Date+")'

Второй раз, неправильно указал сцепление
в строке: (" 'DateToStr(+Date.Date+)' ")

Если ты хочешь добавить запись именно так, то напиши:
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO Telephone(date)');
Query1.SQL.Add('VALUES ("'+DateToStr(Date.Date)+'")');

Поле с именем "date", в будущем принесёт тебе проблем.
Назови по другому, например T_Date или DateTel
Но лучше в запросе всё таки использовать параметры:

Код:
TRY
  Query1.SQL.Clear;
  Query1.SQL.Add('INSERT INTO Telephone');
  Query1.SQL.Add('(TelDate, TelNumber, TelOperator)');
  Query1.SQL.Add('VALUES');
  Query1.SQL.Add('(:TelDate, :TelNumber, :TelOpertor)');
     Query1.ParamByName('TelDate').asDateTime := Date.Date;
     Query1.ParamByName('TelNumber').asString := dbNumber.Text;
     Query1.ParamByName('TelOperator').asString := dbVidOperator.Text;
     Query1.ExecSQL;

EXCEPT
    Application.MessageBox(
        'Во время создания новой записи, произошла ошибка.'+#13+
        'Проверьте правильность ввода данных',
        'Ошибка создания', MB_OK+MB_ICONERROR);
END;

//Так будет правильннее :)

Последний раз редактировалось bezOn; 14.04.2010 в 21:11.
bezOn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматизация заполнения даты и зависимость ячейки времени к ячейке даты. Каравай Microsoft Office Excel 14 11.03.2010 18:11
Добавление даты Mutagena Помощь студентам 8 24.12.2009 13:13
Даты Sparky БД в Delphi 6 02.10.2009 09:48
Добавление даты в таблицу smoky Microsoft Office Access 5 24.11.2008 12:56
Установка формата даты для TDateEdit SAP Компоненты Delphi 3 20.03.2007 18:46