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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2017, 20:27   #1
Просто ПАрень
 
Регистрация: 11.05.2017
Сообщений: 5
По умолчанию Динамическое заполнение Query запросом на обновление.

Уже несколько дней ломаю голову, запрос на обновление просто отказывается выполнятся , не могу понять в чем проблема. Проверял запрос в акссесс- все работало. Если что, выдается ошибка "Слишком мало параметров. Требуется 2". Помогите, не могу понять в чем проблема? Вот код:
begin
i:=DbLookupComboBox1.KeyValue;
begin
with Query1 do
begin
Active := False;
SQL.Clear;
// SQL.TEXT:='UPDATE Персонал SET Персонал.Имя = "'+Edit1.Text+'", Персонал.Фамилия = "'+Edit2.Text+'", Персонал.Зарплата = '+Edit3.Text+', Персонал.Id_Должность = '+IntToStr(i)+#13#10+'WHERE Персонал.Id='+IntToStr(IDPers)+';';
SQL.TEXT:='UPDATE Персонал SET Персонал.Имя = "Василий", Персонал.Фамилия = "Уткин", Персонал.Зарплата = 4000, Персонал.Id_Должность =3 '+#13#10+' WHERE Персонал.Id= 2;';

ExecSQL;
end;
end;



Еще есть вариант такого кода:
with Query1 do
begin
Active := False;
SQL.Clear;
SQL.Add('UPDATE Ia?niiae SET Ia?niiae.Eiy = "'+Edit1.Text+'", Ia?niiae.Oaieeey = "'+Edit2.Text+'", Ia?niiae.Ca?ieaoa = '+Edit3.Text+', Ia?niiae.Id_Aie?iinou = '+IntToStr(i)+' WHERE Ia?niiae.Id=:id');
ParamByName('Id').AsInteger:=IDPers ;
ExecSQL;
end;
end;

Последний раз редактировалось Просто ПАрень; 19.05.2017 в 20:31.
Просто ПАрень вне форума Ответить с цитированием
Старый 19.05.2017, 21:48   #2
Просто ПАрень
 
Регистрация: 11.05.2017
Сообщений: 5
По умолчанию

База MS Access, способ доступа - BDE, ключевое поле - ID. Все поля числового и текстового типа. Мне кажется ошибка из-за того что передается текст.
В чем причина и как это исправить? Заранее спасибо.
Просто ПАрень вне форума Ответить с цитированием
Старый 19.05.2017, 22:17   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так попробуй
Код:
SQL.TEXT:='UPDATE [Персонал] SET [Имя] = :Name, [Фамилия] = :Fio, [Зарплата] = :Bablo, [Id_Должность] = :Position WHERE Id=:Id';
ParamByName('Name').AsString:=Edit1.Text;
ParamByName('Fio').AsString:=Edit2.Text;
ParamByName('Bablo').AsInteger:=StrToInt(Edit3.Text);
ParamByName('Position').AsInteger:=i;
ParamByName('Id').AsInteger:=IDPers;
ExecSQL;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.05.2017, 22:56   #4
Просто ПАрень
 
Регистрация: 11.05.2017
Сообщений: 5
По умолчанию

Спасибо, у меня все получилось, если кому интересно то вот код:

with Query1 do
begin
SQL.Clear;
SQL.Add('UPDATE Персонал SET Имя =:newI, Фамилия =:newF, Зарплата =:newZ, Id_Должности =:newId');
SQL.Add('WHERE Id=:Id');
ParamByName('newI').AsString:=Edit1 .Text;
ParamByName('newF').AsString:=Edit2 .Text;
ParamByName('newZ').AsInteger:=StrT oInt(Edit3.Text);
ParamByName('newId').AsInteger:=i;
ParamByName('Id').AsInteger:=IDPers ;
ExecSQL;
end;
Просто ПАрень вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
оптимальное(?) динамическое обновление excel peq Microsoft Office Excel 7 08.10.2014 12:11
Динамическое заполнение Базы, EF squaDe C# (си шарп) 0 26.11.2012 10:53
Обновление двух строк одним запросом L_M SQL, базы данных 5 03.02.2011 02:01
qt динамическое обновление окна jodam Qt и кроссплатформенное программирование С/С++ 2 18.05.2010 15:45
Динамическое обновление таблицы Veiron БД в Delphi 4 01.07.2009 18:08