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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2012, 20:01   #1
Dandy777
Пользователь
 
Регистрация: 04.09.2012
Сообщений: 25
Вопрос INSERT DataTimePicker MSSQL

Просьба сильно не пинать за столь простой вопрос, Delphi изучаю только месяц.
Помогите пожалуйста исправить синтаксис и если есть ошибки. Никак не получается вставить в таблицу даты. Желательно сделать с помощью параметров.

Код:
procedure TForm2.Button2Click(Sender: TObject);

  var

  date1,date2 : TDate;

if DataModule1.TableOperationsKEY.AsString = '2' then    // Перевод пользователя

  begin

    DataModule1.Command.Parameters.ParamByName('date1').Value:= DateTimePicker2.Date;

    DataModule1.Command.Parameters.ParamByName('date2').Value:= DateTimePicker2.Date;

    DataModule1.Command.CommandText :=

      'INSERT INTO Result([User],Branch1,Branch2,DateFrom,DateTo,Operation) values('

      + DataModule1.UserSearchKEY.AsString + ',' +

      DataModule1.Branch1KEY.AsString + ',' + DataModule1.Branch2KEY.AsString +

      ',' + :date1 + ',' + :date2 + ',' + DataModule1.TableOperationsKEY.AsString + ')';

      ShowMessage(DataModule1.Command.CommandText);

  end;
Dandy777 вне форума Ответить с цитированием
Старый 04.09.2012, 20:15   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Код:
DataModule1.Command.CommandText := 'INSERT INTO Result([User],Branch1,Branch2,DateFrom,DateTo,Operation) values(:user, :branch1, :branch2, :date1, :date2, :operation)';
DataModule1.Command.Parameters.ParamByName('user').AsString := DataModule1.UserSearchKEY.AsString;
DataModule1.Command.Parameters.ParamByName('branch1').AsString := DataModule1.Branch1KEY.AsString;
DataModule1.Command.Parameters.ParamByName('branch2').AsString := DataModule1.Branch2KEY.AsString;
DataModule1.Command.Parameters.ParamByName('date1').AsDateTime := DateTimePicker1.Date;
DataModule1.Command.Parameters.ParamByName('date2').AsDateTime := DateTimePicker2.Date;
DataModule1.Command.Parameters.ParamByName('operation').AsString := DataModule1.TableOperationsKEY.AsString;
...
типа того...
eval вне форума Ответить с цитированием
Старый 04.09.2012, 20:30   #3
Dandy777
Пользователь
 
Регистрация: 04.09.2012
Сообщений: 25
По умолчанию

Можно тогда еще 1 вопрос, надо ли создавать все эти параметры в Properties ->Parameters?

Попробовал я Ваш вариант.
Выдает ошибку :
[DCC Error] OperationsF.pas(74): E2003 Undeclared identifier: 'AsString'

НО если сделать так:
Код:
DataModule1.Command.CommandText := 'INSERT INTO Result([User],Branch1,Branch2,DateFrom,DateTo,Operation) values(:user, :branch1, :branch2, :date1, :date2, :operation)';
DataModule1.Command.Parameters.ParamByName('user').Value := DataModule1.UserSearchKEY.AsString;
DataModule1.Command.Parameters.ParamByName('branch1').Value := DataModule1.Branch1KEY.AsString;
DataModule1.Command.Parameters.ParamByName('branch2').Value := DataModule1.Branch2KEY.AsString;
DataModule1.Command.Parameters.ParamByName('date1').Value := DateTimePicker1.Date;
DataModule1.Command.Parameters.ParamByName('date2').Value := DateTimePicker2.Date;
DataModule1.Command.Parameters.ParamByName('operation').Value := DataModule1.TableOperationsKEY.AsString;
То всё вставляется красиво!!! спасибо.

Это так же правильный вариант?

Последний раз редактировалось Stilet; 04.09.2012 в 21:59.
Dandy777 вне форума Ответить с цитированием
Старый 04.09.2012, 21:17   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Я писал прям тут, поэтому не факт что все правильно , главное обший подход.
eval вне форума Ответить с цитированием
Старый 04.09.2012, 22:19   #5
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

Цитата:
Сообщение от Dandy777 Посмотреть сообщение
Delphi изучаю только месяц.
Ну рас так, то наверняка еще не видели оператор with, а если видели то извиняйте.
Думаю здесь уместно.
Код:
with DataModule1.Command do
begin
  CommandText := 'INSERT INTO Result([User],Branch1,Branch2,DateFrom,DateTo,Operation) values(:user, :branch1, :branch2, :date1, :date2, :operation)';
  ParamByName('user').Value := DataModule1.UserSearchKEY.AsString;
  ParamByName('branch1').Value := DataModule1.Branch1KEY.AsString;
  ParamByName('branch2').Value := DataModule1.Branch2KEY.AsString;
  ParamByName('date1').Value := DateTimePicker1.Date;
  ParamByName('date2').Value := DateTimePicker2.Date;
  ParamByName('operation').Value := DataModule1.TableOperationsKEY.AsString;
end;
пыжок

Последний раз редактировалось maloun; 04.09.2012 в 22:23.
maloun вне форума Ответить с цитированием
Старый 05.09.2012, 09:26   #6
Dandy777
Пользователь
 
Регистрация: 04.09.2012
Сообщений: 25
По умолчанию

Цитата:
Сообщение от maloun Посмотреть сообщение
Ну рас так, то наверняка еще не видели оператор with, а если видели то извиняйте.
Думаю здесь уместно.
Код:
with DataModule1.Command do
begin
  CommandText := 'INSERT INTO Result([User],Branch1,Branch2,DateFrom,DateTo,Operation) values(:user, :branch1, :branch2, :date1, :date2, :operation)';
  ParamByName('user').Value := DataModule1.UserSearchKEY.AsString;
  ParamByName('branch1').Value := DataModule1.Branch1KEY.AsString;
  ParamByName('branch2').Value := DataModule1.Branch2KEY.AsString;
  ParamByName('date1').Value := DateTimePicker1.Date;
  ParamByName('date2').Value := DateTimePicker2.Date;
  ParamByName('operation').Value := DataModule1.TableOperationsKEY.AsString;
end;
Не видел, но обязательно увижу. Если есть желание можете объяснить что он значит и почему Вы здесь его использовали. Объясню свою конструкцию и почему именно
Код:
if
у меня команда Insert меняется в зависимости от выбранного в DBLookupComboBox. Посему я свой код реализовал именно так. А показал только участок кода, дабы не плодить стену текста. По одному этому коду я преобразую все остальное.
Dandy777 вне форума Ответить с цитированием
Старый 05.09.2012, 12:50   #7
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

Цитата:
Сообщение от Dandy777 Посмотреть сообщение
Код:
if
if можно спокойно ставить и перед и после with, если вы об этом
поставил with, чтоб строки укоротить, только и всего)
он позволяет обращаться к методам без указания экземпляра.

Код:
with DataModule1.Command do
if DataModule1.TableOperationsKEY.AsString = '2' then
begin
  CommandText := 'INSERT INTO Result([User],Branch1,Branch2,DateFrom,DateTo,Operation) values(:user, :branch1, :branch2, :date1, :date2, :operation)';
  ParamByName('user').Value := DataModule1.UserSearchKEY.AsString;
  ParamByName('branch1').Value := DataModule1.Branch1KEY.AsString;
  ParamByName('branch2').Value := DataModule1.Branch2KEY.AsString;
  ParamByName('date1').Value := DateTimePicker1.Date;
  ParamByName('date2').Value := DateTimePicker2.Date;
  ParamByName('operation').Value := DataModule1.TableOperationsKEY.AsString;
end;
пыжок
maloun вне форума Ответить с цитированием
Старый 05.09.2012, 13:44   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Но лучше так не делать. Читаемость в общем случае только страдает, а еще можно и глюки поиметь.
eval вне форума Ответить с цитированием
Старый 05.09.2012, 15:55   #9
Dandy777
Пользователь
 
Регистрация: 04.09.2012
Сообщений: 25
По умолчанию

Хм, весьма интересно, но пожалуй для наглядности пока оставлю. Не думаю что это сильно повлияет на производительность
Dandy777 вне форума Ответить с цитированием
Старый 05.09.2012, 16:52   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

На производительность не влияет, на компиляцию.
eval вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с Datatimepicker ins813 БД в Delphi 1 06.06.2012 10:46
DataTimePicker и База данных Absinth Помощь студентам 2 27.06.2011 08:24
DataTimePicker Spaun Помощь студентам 0 23.06.2010 12:48
SQL and DataTimePicker Lord777 Общие вопросы Delphi 8 06.01.2010 02:02
Занесение значения DataTimePicker в базу inret Общие вопросы Delphi 3 09.05.2008 15:21