Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 2
Регистрация: 27.02.2014
Сообщений: 280

Изменить данные БД

12.02.2019, 13:26. Показов 1491. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь изменить данные через DBGrid
Delphi
1
2
3
4
5
6
7
SimpleDataSet4.edit;
    SimpleDataSet4.FieldByName('Name').AsString := Edit7.Text;
  SimpleDataSet4.FieldByName('Prim').AsString := Edit8.Text;
 
  SimpleDataSet4.post;
 SimpleDataSet4.ApplyUpdates(-1);
  SimpleDataSet4.Refresh;
Но в базе есть столбец в формате mediumtext.
Вот по нему выдает ошибку must have a value.

Подскажите что может быть
Спасибо
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.02.2019, 13:26
Ответы с готовыми решениями:

Веб. Как изменить данные в базе по изменению данных инпута? Получить измененные данные инпута?
Доброго времени суток! Ситуация такая.. есть форма с таблицей, содержание таблицы выводится из базы. В таблице есть инпут ( <input...

Изменить данные в бд
Привет всем! есть форма, в текстбоксы которой заносится информация по фильму (по нажатию на строку или ид в датагриде) и в тех текстбоксах...

Изменить данные в БД
Как можно изменить данные в БД? например есть форма: <form id="myForm" action="/mb.php" method="post"> ...

6
5975 / 4550 / 1095
Регистрация: 29.08.2013
Сообщений: 28,172
Записей в блоге: 3
12.02.2019, 14:06
SQL запрос
0
1 / 1 / 2
Регистрация: 27.02.2014
Сообщений: 280
12.02.2019, 14:53  [ТС]
qwertehok, можете показать пример. Как в выделенную строку в DBGrid внести изменения через запрос. Спасибо
0
 Аватар для Young Vu
133 / 103 / 43
Регистрация: 01.03.2018
Сообщений: 291
12.02.2019, 15:23
ilyxaaa,
я делаю вот так
1. Есть AdoQuery - который делает запрос к БД ( Select Id, Name, Prim From Table поле Id - указываю всегда)
2. Связываем AdoQuery с DBGrid
3. На кнопку "Обновить запись" кидаем код

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var t : Tadoqury;
begin
  t := tadoquery.create(nil);
  try
    t.connection := adoconnection; // 
    t.sql.text := 'update table set Name=:Name,  Prim=:Prim  where id = :id';
    t.Parameters.ParamByName('Name').Value:=Edit7.Text;
    t.Parameters.ParamByName('Prim').Value:=Edit8.Text;
    t.Parameters.ParamByName('Id').Value:=AdoQuery.FiledByName('id').AsInteger;
    t.ExecSQL;
  finally
    t.free;
  end;
end;
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
12.02.2019, 15:30
если оно должно иметь значение, значит нужно указать для него значение

в строку DBGrid данные попадают через запрос типа SELECT. из БД
в БД они попадают через запрос типа UPDATE или INSERT. из программы
следовательно, чтобы новые данные попали в грид, нужно поместить их в БД и потом прочитать их оттуда

некоторые компоненты умеют кое-как сами за вас придумывать запросы UPDATE или INSERT
тогда редактирование Edit -- .... --- Post приводит И к обновлению данных в гриде И к записи их в БД
но ключевое слово тут - кое-как
никто не знает, как там что у вас настроено конкретно

в общем случае
0
1 / 1 / 2
Регистрация: 27.02.2014
Сообщений: 280
12.02.2019, 16:12  [ТС]
Всем спасибо. Сделал вот так
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
uid:string;
begin
uid:=DBGrid4.DataSource.DataSet.Fields.Fields[0].AsString;
SQLQuery1.Close;
    SQLQuery1.SQL.Clear;
     begin
     SQLQuery1.SQL.Text:='UPDATE user SET Name='''+Edit7.Text+''',Prim='''+Edit8.Text+''' WHERE id='''+uid+'''';
     end;
     try SQLQuery1.ExecSQL  except
     on E:EDatabaseError do
        ShowMessage(E.Message);
     end;
     SimpleDataSet4.Refresh;
     end;
0
Модератор
 Аватар для D1973
9924 / 6460 / 2457
Регистрация: 21.01.2014
Сообщений: 27,410
Записей в блоге: 3
12.02.2019, 17:48
Лучший ответ Сообщение было отмечено ilyxaaa как решение

Решение

Строки 6, 7 и 9 - ну вот абсолютно не нужны!
Более того, чтобы не колупаться с нагромождением плюсов и апострофов при динамическом создании текста запроса можно использовать:
1. Функцию Format
Delphi
1
2
SQLQuery1.SQL.Text := Format('UPDATE user SET Name=%s,Prim=%s WHERE id=%s', 
                               [QuotedStr(Edit7.Text), QuotedStr(Edit8.Text), QuotedStr(uid)]);
2. Параметры запроса
Delphi
1
2
3
4
SQLQuery1.SQL.Text := 'UPDATE user SET Name=:p1, Prim=:p2 WHERE id=:p3';
SQLQuery1.Params.ParamByName('p1').AsString := Edit7.Text;
SQLQuery1.Params.ParamByName('p2').AsString := Edit8.Text;
SQLQuery1.Params.ParamByName('p3').AsString := uid;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.02.2019, 17:48
Помогаю со студенческими работами здесь

Изменить данные
в БД есть столбец в которым есть данные вида: 1,7;0,5 (nvarchar) хочу превратить данные в тип time сделал, но в Excel, как сделать...

Изменить данные
Какие ошибки в коде, меняет весь столбец, а не одно поле.. private void button4_Click(object sender, EventArgs e) { ...

Удалить и изменить данные в БД
получилось добавлять данные в БД, может кто-нибудь покажет или объяснит, каким образом данные можно удалять и изменять? using System; ...

Изменить данные в массиве
Пример: const CASE = 10; char = {'Andrey', 'Bohdan', 'Anna'} Как перезаписать уже данное значение в массиве, к примеру...

Вытащить и изменить данные
<? if (!isset ($id) ) { $result = mysql_query("SELECT id, name FROM vuz"); $r = mysql_fetch_array($result); do { printf("<p><a...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru