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

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

Еще раз я... [D7, MSSQL]


Данила ©   (2008-01-16 13:37:00) 

Здравствуйте! У меня есть таблица gs с полями (ID1, name, n, disabled, ID2). Пытаюсь в неё добавить новое поле  с помощью следующего кода:

  with AdoCommand1 do
  begin
  CommandText :=
      'insert into gs (name,n,disabled,ID2)'+
      'values (Replace(:Name,''/'',''-''),1,0,:ID2)';
  CommandType := CmdText;
  Parameters.ParamByName('ID2').Value := ID;
  Parameters.ParamByName('Name').Value := Name;
  Execute;
  end;

У меня он не работает, текст ошибки: "AdoCommand1: Parameter "ID2" not found".

Перед новым годом я уже задавал этот вопрос, там мне ничё не помогло(. Обсуждение было тут : http://delphimaster.ru/cgi-bin/forum.pl?id=1198915557&n=1


sniknik   (2008-01-16 16:19:00) [1]

> Prepared := True;
у тебя просто талант писать в том месте где не нужно... ну вот подумай нафига "препарить" то, чего еще нет?

> disabled
может быть зарезервированным полем. по идее оно у тебя в списке полей, может и разобраться, но ....

кстати ID случаем не авто инкремент?

> и решили, что такой команды у них не будет
потому что операция со строками, и в дельфи она называется более логично. (имхо) и кстати вариант от Правильный_Вася, вполне может работать и с Format. который я вижу ты умеешь использовать.

> Parameter "ID" not found' еще не исправлена(
банально отключена опция "парамчек"?

> А почему ты не выполнил предложение sniknik'а и не добавил пробелы?
ну тогда был немного лучшего мнения о знаниях автора... сейчас думаю вряд ли там чтото мудреное.

p.s. оформляй тему правильно!!!


Правильный_Вася   (2008-01-16 16:18:00) [2]


>  такой команды у них не будет)))(я про реплейс

stringreplace есть


Данила   (2008-01-16 15:54:00) [3]

Тем более что в варианте с параметрами ошибка 'AdoCommand1: Parameter "ID" not found' еще не исправлена(


Данила   (2008-01-16 15:47:00) [4]


> Правильный_Вася   (16.01.08 15:35) [9]
> нахрена козе баян?

и правда, нахрена, подумали создатели дельфи и решили, что такой команды у них не будет)))(я про реплейс). а если делать его вручную, то ето еще 3-5 лишних строки в коде.


Правильный_Вася   (2008-01-16 15:35:00) [5]

нахрена козе баян?
Parameters.ParamByName('Name').Value := Replace( Name ,'/','-');


Данила   (2008-01-16 15:29:00) [6]

Пробелы я добавлял, это не повлияло ни на чё, в данный момент код такой :

   with AdoCommand1 do
begin
   Prepared := true;
   CommandText :=
       'insert into gs (name,n,disabled,ID)'+
       Format('values (Replace( %s,''/'',''-''),1,0, %s)', [Name, IntToStr(ID)]);
   Execute;
end;


а вариант с параметрами вот такой:

   with AdoCommand1 do
   begin
   Prepared := True;
   CommandText :=
       'insert into gs (name,n,disabled, ID)'+
       'values (Replace( :Name ,''/'',''-''),1 ,0 , :ID )';
   Parameters.ParamByName('ID').Value := ID;
   Parameters.ParamByName('Name').Value := Name;
   Execute;
   end;


Kolan   (2008-01-16 15:22:00) [7]

А почему ты не выполнил предложение sniknik'а и не добавил пробелы?


Данила   (2008-01-16 15:15:00) [8]


> Но ты из него ничего не вынес. Опять "добавить новое поле"

я просто скопировал вопрос из той темы(.


> Смотри внимательно код. Ошибка здесь.

какая? эту команду я вообще убрал.


> А почему бы всякие Replace не вынести например в присвение
> значения параметру?

ну да, можно попробовать, но мне кажется ошибка не в этом.


Данила   (2008-01-16 15:10:00) [9]

Попробовал формат, вроде помогло, но щас вылезает другая ошибка:

'The name "ADOCommand1" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted'.

Prepare делал так : AdoCommand1.Prepared.


stone   (2008-01-16 15:06:00) [10]


> CommandType := CmdText;

Смотри внимательно код. Ошибка здесь.


Sergey13   (2008-01-16 15:06:00) [11]

> [0] Данила   (16.01.08 13:37)
> Обсуждение было тут

Но ты из него ничего не вынес. Опять "добавить новое поле"

> 'values (Replace(:Name,''/'',''-''),1,0,:ID2)';

А почему бы всякие Replace не вынести например в присвение значения параметру?


Kolan   (2008-01-16 13:47:00) [12]


> там мне ничё не помогло

Так а где ты сделал Prepare как тебе советовали?


Kolan   (2008-01-16 13:45:00) [13]

Вставь свой параметр руками, то есть

Не
'values (Replace(:Name,''/'',''-''),1,0,:ID2)';

А
Format('values (Replace(:Name,''/'',''-''),1,0, %s)', [IntToStr( ID)]); //Если ID — это не Integer подредактируй…


Наверх

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