Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
2 / 2 / 2
Регистрация: 20.04.2012
Сообщений: 108

Сложение в DBGrid

19.02.2015, 11:22. Показов 1883. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В DBGrid одно поле и несколько строк. В строках хранятся числа. Как к числу в каждой строке прибавить число, например из Edit?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.02.2015, 11:22
Ответы с готовыми решениями:

[C++ builder XE] DBGrid. Удаление/добавление/изменение БД mysql через DBGrid
Здравствуйте! Возможно тема заезженная, но не чего путнего не нашел(может так искал!) Нужна помощь в добавлении и изменении...

Добавление записи в DBGrid и получение записи в DBGrid Другой формы
К проекту подключена Access .mdb БД. Имеется 2 формы. На обоих формах есть DBGrid. Как сделать, что бы при добавлении записи в таблицу из...

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

25
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
19.02.2015, 14:01
Вот пример переделай от туда
ADOQuery
0
2 / 2 / 2
Регистрация: 20.04.2012
Сообщений: 108
19.02.2015, 16:13  [ТС]
Написал вот такой код.Но он прибавляет только к первой строке
C++
1
2
3
4
5
6
7
8
9
    while(!ADOQuery3->Eof)
 {
     Form1->ADOQuery5->Edit();
     Edit9->Text = ADOQuery3->FieldByName("probeg")->AsString;
     Edit10->Text = FloatToStr(StrToFloat(Edit9->Text) + StrToFloat(Edit5->Text));
     Form1->ADOQuery5->FieldByName("probeg")->AsString= Edit10->Text;
     Form1->ADOQuery5->Post();
     Form10->ADOQuery3->Next();
     }
Добавлено через 19 минут
C++
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
28
void __fastcall TForm10::Button1Click(TObject *Sender)
{
 
if (Edit6->Text.IsEmpty()) { 
        ADOQuery3->SQL->Clear();
        ADOQuery3->SQL->Add("select id_ts,id_sh, probeg from shini right join svod  on shini.zavod_nomer = svod.id_sh");
        ADOQuery3->Open();
    }
    else { // 
        ADOQuery3->SQL->Clear();
 
ADOQuery3->SQL->Add("select id_ts,id_sh, probeg from shini right join svod  on shini.zavod_nomer = svod.id_sh WHERE [id_ts] LIKE '"+Edit6->Text+"%';");
 
        ADOQuery3->Open();
 
    }
 
    while(!ADOQuery3->Eof)
 {
 
     Form1->ADOQuery5->Edit();
     Edit9->Text = ADOQuery3->FieldByName("probeg")->AsString;
     Edit10->Text = FloatToStr(StrToFloat(Edit9->Text) + StrToFloat(Edit5->Text));
     Form1->ADOQuery5->FieldByName("probeg")->AsString= Edit10->Text;
     Form1->ADOQuery5->Post();
     Form10->ADOQuery3->Next();
     }
}
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
19.02.2015, 16:28
Ты написал, что тебе надо с одного едита записать в строки, а сам в коде пишешь 2 едита?
0
2 / 2 / 2
Регистрация: 20.04.2012
Сообщений: 108
19.02.2015, 16:33  [ТС]
В Edit9 я записываю содержимое строки, а с Edit10 я записываю в этуже строку новое значение
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
19.02.2015, 17:34
Цитата Сообщение от {Дмитрий} Посмотреть сообщение
В Edit9 я записываю содержимое строки, а с Edit10 я записываю в этуже строку новое значение
Это лишнее

Добавлено через 14 секунд
Цитата Сообщение от {Дмитрий} Посмотреть сообщение
В Edit9 я записываю содержимое строки, а с Edit10 я записываю в этуже строку новое значение
Это лишнее

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
 Form1->ADOQuery3->First();
while(!Form1->ADOQuery3->Eof)
 {
     Form1->ADOQuery3->Edit();
     Form1->ADOQuery3->FieldByName("probeg")->AsString =  FloatToStr(StrToFloat(Form1->ADOQuery3->FieldByName("probeg")->AsString) +StrToFloat(Edit10->Text));
     Form1->ADOQuery3->Post();
     Form1->ADOQuery3->Next();
 }
1
2 / 2 / 2
Регистрация: 20.04.2012
Сообщений: 108
20.02.2015, 09:25  [ТС]
Выдает ошибку "Недостаточно сведений о ключевом столбце".
Вложения
Тип файла: rar ND.rar (541.9 Кб, 5 просмотров)
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
20.02.2015, 10:13
Вот пробуй
C++
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
28
29
30
31
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  ADOQuery1->CursorLocation = clUseServer;
  if (Edit1->Text.IsEmpty())
   { // Если текст едиту пустой покажем все данные
        ADOQuery1->SQL->Clear();
        ADOQuery1->SQL->Add("select id_ts,id_sh, probeg from shini right join svod  on shini.zavod_nomer = svod.id_sh");
        ADOQuery1->Open();
    }
    else
    { // Если не пустой, то выберем все записи где номер договора *_*
        ADOQuery1->SQL->Clear();
        ADOQuery1->SQL->Add("select id_ts,id_sh, probeg from shini right join svod  on shini.zavod_nomer = svod.id_sh WHERE [id_ts] LIKE '"+Edit1->Text+"%'");
        ADOQuery1->Open();
 
 
   ADOQuery1->First();
   while(!ADOQuery1->Eof)
   {
     DataSource1->DataSet->Edit();
     DataSource1->DataSet->FieldByName("probeg")->AsInteger = DataSource1->DataSet->FieldByName("probeg")->AsInteger + StrToFloat(Edit2->Text);
     DataSource1->DataSet->Post();
     ADOQuery1->Next();
     Application->ProcessMessages();
   }
        ADOQuery1->Close();
        ADOQuery1->SQL->Clear();
        ADOQuery1->SQL->Add("select id_ts,id_sh, probeg from shini right join svod  on shini.zavod_nomer = svod.id_sh WHERE [id_ts] LIKE '"+Edit1->Text+"%'");
        ADOQuery1->Open();
}
}
0
2 / 2 / 2
Регистрация: 20.04.2012
Сообщений: 108
20.02.2015, 10:37  [ТС]
А у вас не выходила ошибка "ADOQuery1: Cannot perform this operation on an open dataset"?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
20.02.2015, 10:42
Цитата Сообщение от {Дмитрий} Посмотреть сообщение
А у вас не выходила ошибка "ADOQuery1: Cannot perform this operation on an open dataset"?
Нет не выходила
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
20.02.2015, 10:45
Вот переделаный проект
Вложения
Тип файла: rar ND.rar (542.9 Кб, 5 просмотров)
0
2 / 2 / 2
Регистрация: 20.04.2012
Сообщений: 108
20.02.2015, 10:53  [ТС]
У меня и в этом же проекте такая же ошибка. Почему?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
20.02.2015, 10:55
А как ты вводишь в поля данные?
0
2 / 2 / 2
Регистрация: 20.04.2012
Сообщений: 108
20.02.2015, 10:59  [ТС]
Вот так
Миниатюры
Сложение в DBGrid  
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
20.02.2015, 11:08
Он пишет, что утебя закрыт ADOQuery.

Добавлено через 2 минуты
Попробуй закоментировать вот эту строку и запусти заново
C++
1
ADOQuery1->CursorLocation = clUseServer;
0
2 / 2 / 2
Регистрация: 20.04.2012
Сообщений: 108
20.02.2015, 11:13  [ТС]
Пробывал,но при этом выскакивала ошибка "Недостаточно сведений о ключевом столбце для обновления".
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
20.02.2015, 11:18
Цитата Сообщение от {Дмитрий} Посмотреть сообщение
Пробывал,но при этом выскакивала ошибка "Недостаточно сведений о ключевом столбце для обновления".
Тогда эту строку разкоментируй и закоментируй последние 4 строки запроса т.е вот это
C++
1
2
3
4
 /*ADOQuery1->Close();
        ADOQuery1->SQL->Clear();
        ADOQuery1->SQL->Add("select id_ts,id_sh, probeg from shini right join svod  on shini.zavod_nomer = svod.id_sh WHERE [id_ts] LIKE '"+Edit1->Text+"%';");
        ADOQuery1->Open(); */
0
2 / 2 / 2
Регистрация: 20.04.2012
Сообщений: 108
20.02.2015, 11:29  [ТС]
ошибка "ADOQuery1: Cannot perform this operation on an open dataset"

Добавлено через 4 минуты
я оставил только это, но ошибка "ADOQuery1: Cannot perform this operation on an open dataset" осталась
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  ADOQuery1->CursorLocation = clUseServer;
   ADOQuery1->First();
   while(!ADOQuery1->Eof)
   {
     DataSource1->DataSet->Edit();
     DataSource1->DataSet->FieldByName("probeg")->AsInteger = DataSource1->DataSet->FieldByName("probeg")->AsInteger + StrToFloat(Edit2->Text);
     DataSource1->DataSet->Post();
     ADOQuery1->Next();
     Application->ProcessMessages();
   }
}
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
20.02.2015, 11:36
В этом оставленном куске кода у тебя нет запроса, а по умолчанию он у тебя закрыт, поэтому допиши запрос сверху
0
2 / 2 / 2
Регистрация: 20.04.2012
Сообщений: 108
20.02.2015, 11:41  [ТС]
Но это ведь получается то же самое
Цитата Сообщение от Sasha Посмотреть сообщение
Тогда эту строку разкоментируй и закоментируй последние 4 строки запроса т.е вот это
Код C++
1
2
3
4
*/*ADOQuery1->Close();
* * * * ADOQuery1->SQL->Clear();
* * * * ADOQuery1->SQL->Add("select id_ts,id_sh, probeg from shini right join svod *on shini.zavod_nomer = svod.id_sh WHERE [id_ts] LIKE '"+Edit1->Text+"%';");
* * * * ADOQuery1->Open(); */
__________________
ошибка "ADOQuery1: Cannot perform this operation on an open dataset"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.02.2015, 11:41
Помогаю со студенческими работами здесь

Сложение элементов таблицы DBGrid
Каким образом можно сложить все элементы одного поля в DBGrid? Данные в таблицу выводятся через AdoConnenection, AdoQuery и DataSource.

Сложение определенных ячеек Dbgrid
Привет всем! Создаю базу данных в Delphi 7 (paradox). В программе есть несколько форм, на которых расположенны базы данных DBGrid. У каждой...

Сложение элементов одной строки DbGrid-а
Каким образом можно сложить все элементы одной строки в DBGrid? Данные в таблицу выводятся через AdoConnenection, AdoQuery и DataSource.

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

Как вывести в DBGrid информацию только по выбранной строке в другой таблице DBGrid?
У меня есть 3 таблицы - Компании, Адреса и Квартиры. Компании содержит поля - Код компании и название Адреса содержит поля - Код...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru