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