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

Изменение данных в ячейке DBGrid с использованием DataSource

09.08.2012, 13:40. Показов 6222. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день всем
Ребятки,такая проблема: мне надо изменить данные в ячейке DBGrida зная название столбца и номер строки записи...Номер строки записи я получила,а как изменить сами данные не знаю,может есть какая-нибудь процедурка???Только надо чтоб потом эти данные еще отображались и в самой таблице базы данных... помогите кто знает...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
   Dirrectory,Disk:string;
   Drive:Char;
begin
  if ListBox1.Items.Count=0 then
  begin
  ProcessPath(Edit2.Text,Drive,Dirrectory,Disk);
  Edit6.Text:=Copy(Dirrectory,13,30);
  end;
  if not Table1.Locate('IP-адрес',Edit6.Text,[]) then
  ShowMessage('Запись не найдена!')
  else
     label6.Caption:='Номер текущей записи:'+inttostr(TStringGridX(dbGrid1).Row);
 
end;
Добавлено через 2 часа 35 минут
Дошла вот до такого момента:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
label6.Caption:='Номер текущей записи:'+inttostr(TStringGridX(dbGrid1).Row);
     k:=TStringGridX(dbGrid1).Row;
     if (DBGrid1.Columns[k].FieldName='Cостояние') then
     begin
       with DBGrid1.Canvas do begin
            Brush.Color:=clWhite;
            FillRect(Rect);
     if (Table1.FieldByName('Cостояние').Value=1) then
         begin
         Font.Color:=clRed;
         TextOut(Rect.Right-2-
         DBGrid1.Canvas.TextWidth('Не работает'),
         Rect.Top+2,'Не работает');
         end
     else
         begin
         TextOut(Rect.Right-2-
         DBGrid1.Canvas.TextWidth('Работает'),
         Rect.Top+2,'Работает');
         end;
     end;
  end;
Программа компилится,а в нужной ячейке DBGrida все равно ничего не меняет
Что делать,ребята????
 Комментарий модератора 
Теги кода добавлены модератором. По правилам форума, код должен быть оформлен соответствующими тегами. Для оформления кода Delphi следует выделить этот код и на панели редактирования сообщения нажать кнопку: "DELPHI".
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.08.2012, 13:40
Ответы с готовыми решениями:

TTable DataSource DBGrid как обратиться к конкретной ячейке
Оч тупой вопрос :) есть таблица созданая по средствам TTable DataSource DBGrid. Вопрос как обратиться к конкретной ячейке к примеру

Изменение данных в ячейке на основании значения в соседней ячейке
Вот такая ситуация - на листе есть два столбца, в одном из них формула "ИНДЕКС...ПОИСКПОЗ", которая на основании значения из второго...

Изменение цвета данных в ячейке
Всем привет. Подскажите, пожалуйста, существует ли возможность менять моно цвет данных ФОРМУЛЫ (или данные от ссылки на другую ячейку) в...

2
 Аватар для albor
504 / 106 / 16
Регистрация: 01.12.2011
Сообщений: 399
09.08.2012, 22:51
Госпади, смешались в кучу...

Вы перепутали источник и приемник данных.

Данные хранятся в таблице базы данных, а выводятся для просмотра в DBGrid.

Так где их надо менять? Очевидно там, в таблице.

Вам скорее всего надо сделать:

Delphi
1
2
3
4
5
6
if Table1.Locate('IP-адрес',Edit6.Text,[]) then
begin
  Table1.Edit;
  Table1.FieldByName('MyFieldName').Value := новое значение..
  Table1.Post;
end
2
2 / 2 / 1
Регистрация: 20.07.2012
Сообщений: 18
10.08.2012, 13:58  [ТС]
Спасибо Вам большое,помогло очень,именно это мне и нужно,только с небольшой поправочкой:надо чтобы при повторном запуске программы,в предыдущей ячейке,если она была изменена,восстанавливалось значение которое было до изменения....Например в ячейке[3,5] было false после запуска стало true,выходим из программы,потом запускаем снова другая ячейка поменялась,а ячейка [3,5] стала false,как была раньше...Это можно как-нибудь сделать???Подскажите,пожалуйста

Добавлено через 2 часа 29 минут
Разобралась,вроде все делает как надо,но в конце выводит ошибку "DataSet not in edit or insert mode" что не так???
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TForm1.Button5Click(Sender: TObject);
var
   Dirrectory,Disk:string;
   Drive:Char;
begin
  Table1.First;
    While not Table1.Eof do
      begin
        Table1.Edit;
        Table1.FieldByName('Состояние').Value:='Работает';
        Table1.Next;
      end;
begin
  if ListBox1.Items.Count<>0 then
  else
      begin
    ProcessPath(Edit2.Text,Drive,Dirrectory,Disk);
    Edit6.Text:=Copy(Dirrectory,13,30);
    if not Table1.Locate('IP-адрес',Edit6.Text,[]) then
      ShowMessage('Запись не найдена!')
       else
      Table1.Edit;
      Table1.FieldByName('Состояние').Value:='Не работает';
      Table1.Post;
      end;
end;
end;
Добавлено через 2 часа 37 минут
Все сделала Спасибо за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.08.2012, 13:58
Помогаю со студенческими работами здесь

Запретить изменение данных в ячейке.
Можно ли запретить изменение данных в определенном диапазоне листа (программно) не используя функции защиты т.е. как-то иначе отслеживать...

Изменение данных в ячейке в зависимости от количества записей
Имеется 3 таблицы: Klienti(Id, Fio), Tur(Id,Cena), Dogovora(Id,id_klienta,id_tura, Oplata) Нужно: Если в таблице Dogovora есть 3 записи...

DBGrid+DataSource
Как, зная DataSource, получить ссылку на ее DBGrid?

Изменение данных в DBGrid
Здравствуйте, у меня есть DBGrid, поключенный к таблице. В нем есть столбцы: дата окончательного расчета и остаток. Дата окончательного...

Изменение данных в БД DBGrid
Добрый вечер, прошу подсказать как правильно вносить изменения в БД (Access) используя компонент DBGrid. В проекте есть форма на...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru