Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069

Изменить свойство DBGrid1 dgEditing

12.05.2014, 17:28. Показов 2478. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добро всем!
как это DBGrid1->Options->dgEditing = true; прописать?

пробую так, компилится но не работает...
C++
1
DBGrid1->Options = DBGrid1->Options >> dgEditing;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.05.2014, 17:28
Ответы с готовыми решениями:

Изменить вид DBGrid1!
Добрый день Форумчани. Меня интересует какой компонент или как изменить внешний вид DBGrid1?, По поводу настроек этого обекта я знаю, но...

Как изменить свойство элемента MainMenu
Привет всем подскажите как изменить свойство например Caption элемента MainMenu1?? Например N1. Так не получается...

Как изменить подсвойство dgEditing у свойства Options у DBGrid?
Подскажите пожалуйста, кто знает! Не могу программно изменить...

16
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,399
Записей в блоге: 3
13.05.2014, 04:39
Лучший ответ Сообщение было отмечено Samrisbe как решение

Решение

А и не будет...
Ты своим кодом убираешь свойство dgEditing из множества Options.
Чтобы добавить - используй <<
И присвоения не надо, пиши просто
C++
1
DBGrid1->Options << dgEditing;
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
13.05.2014, 11:09
Лучший ответ Сообщение было отмечено Samrisbe как решение

Решение

C++
1
DBGrid1->Options = TDBGridOptions(DBGrid1->Options) >> dgEditing
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
04.08.2014, 23:22  [ТС]
А как сохранить сделаные изминения в DBGrid1?

Добавлено через 10 минут
привязан к ADOQuery1
0
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
04.08.2014, 23:25
Если не ошибаюсь, то одно из этих
C++
1
2
DBGrid1->DataSource->DataSet->Post();
ADOQuery1->Post();
Добавлено через 1 минуту
ps. Могут возникать ошибки несоответствия типов и ограничений установленных в базе.
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
04.08.2014, 23:32  [ТС]
Другая проблема( такоеже выдает без вашего кода просто перескочив в другой столбец.
Миниатюры
Изменить свойство DBGrid1 dgEditing  
0
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
04.08.2014, 23:34
Samrisbe, возможно при выборке ты не указал ключевое поле, без этого он работать не будет, так как не знает куда и что ему обновлять

Добавлено через 1 минуту
имею ввиду
вот так
SQL
1
SELECT col1,col2 FROM TABLE;
а не так
SQL
1
SELECT ID,col1,col2 FROM TABLE;
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
04.08.2014, 23:36  [ТС]
Может лучше вот таким методом редактировать?
както так удаляет всю историю выбранного адреса, а мне приемлемо конкретную строку удалить, в идеале редактировать:
C++
1
SQL="DELETE История.* FROM Абоненты INNER JOIN История ON Абоненты.КодАбон = История.КодАбон WHERE АдрКод=(SELECT АдрКод FROM Адреса WHERE Адрес='"+Form1->open+"')";
Миниатюры
Изменить свойство DBGrid1 dgEditing  
0
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
04.08.2014, 23:41
Samrisbe,
SQL
1
WHERE Адрес='"+Form1->open+"')"
с такой штукой всегда будет много инфы удалять а не одну определённую. Стоит использовать уникальные ключи ( вроде так называется, т.е. не имеющие совпадения с другими полями )
Ну либо в where указывай через AND больше уточнений так скажем, имя, итд.
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
04.08.2014, 23:49  [ТС]
Согласен, но пока не заметил потери данных.

Добавлено через 1 минуту
Вот так я считываю:
C++
1
Form12->ADOQuery1->SQL->Text="SELECT Абоненты.ФИО,История.Сумма,История.Дата,История.Время,История.Операция FROM Абоненты INNER JOIN История ON Абоненты.КодАбон = История.КодАбон WHERE Абоненты.КодАбон=(SELECT КодАбон From Абоненты WHERE ФИО='"+Form1->ADOQuery2->Fields->Fields[1]->AsString+"' AND АдрКод=(SELECT АдрКод FROM адреса WHERE адрес='"+Form1->open+"')) AND Операция='"+ComboBox1->Items->Strings[ComboBox1->ItemIndex] +"'";
ума не приложу как таким же путем удалить выбранную запись
0
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
04.08.2014, 23:53

Не по теме:

Samrisbe, ну на базе из 100.000 записей можешь и не заметить, что удалиться 2 строки, а не две :D



Добавлено через 1 минуту
Samrisbe, КодАбон добавить в селект и всё должно быть окей при посте из дб грида.

Добавлено через 2 минуты
хотя,возможно, тебе придётся добавить выбоку всех айди по которым ты связываешь и присоеденённых таблиц.
к сожалению.
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
04.08.2014, 23:58  [ТС]
Вот так получилось удалить историю всех квартир в таблице
C++
1
2
3
AnsiString abon;
abon=ADOQuery2->Fields->Fields[0]->AsString;
ADOQuery2->SQL->Text="DELETE * FROM История WHERE КодАбон="+abon;
Попробую перекроить код чтоб удаляло историю конкретного абонента и конкретный тип истории платежей...
конечно помощь я принимаю)))))
0
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
05.08.2014, 00:51
Samrisbe, хитро ты как то всё делаешь
Если всё таки к нашим баранам с ID, то ещё есть вариант два раза нажать на твой DBGrid и руками указать столбики, изменяя свойство FiledName, а поля с ID скрыть Visible, но по факту они будут.

Цитата Сообщение от Samrisbe Посмотреть сообщение
Вот так получилось удалить историю всех квартир в таблице
очень интересно, что при таком запросе
SQL
1
DELETE * FROM История WHERE КодАбон=
нашёл где то связь с квартирами тут он должен был удалить одну строку максимум, если только ты с ключами не намутил. Но я не видел структуру бд, так что утверждать не буду.

Добавлено через 5 минут
Просто если тебе действительно охото писать запрос на удаление, то для начала тебе лучше вернуть айди записи а потом использовать её для удаления, что то типо того.
C++
1
2
3
4
5
6
7
ADOQuery2->SQL->Text = "select id from table where name = "name" and date = "date" and status_id = (select id from status_table where status_name = "status_name";)";
ADOQuery2->Open();
//с запросом могут быть варианты, но суть ясна, далее...
int id = ADOQuery2->FiledByName("id")->AsInteger;
ADOQuery2->SQL->Clear();
ADOQuery2->SQL->Text = "delete * from table where id = "+IntToStr(id)+";";
ADOQuery2->ExecSQL();
Добавлено через 3 минуты
это относительно конкретного абонента, а относительно типа платежа всё проще
C++
1
2
3
ADOQuery2->SQL->Clear();
ADOQuery2->SQL->Text = "delete * from История where тип_платежа= "+ указанный тип платежа +";";
ADOQuery2->ExecSQL();
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
05.08.2014, 12:16  [ТС]
Спасибо за помощ! Определенный прогресс есть!
Сделал удаление платежей у одного абонента по типу платежей:
C++
1
2
ADOQuery2->SQL->Text = "DELETE * FROM История WHERE КодАбон="+abon+" AND Операция='"+ComboBox1->Items->Strings[ComboBox1->ItemIndex] +"'";
ADOQuery2->ExecSQL();
теперь задача изменилась, и возникла нужда удалить определенный платеж загруженый в таблицу, так чтоб другие платежи такого типа не удалились!
Натолкните на правильную мысль
Миниатюры
Изменить свойство DBGrid1 dgEditing  
0
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
05.08.2014, 12:26
Samrisbe, так добавь больше параметров через AND дату, сумму,время. Но всё же я прошу тебя рассмотреть идею с айди, так как ты совершаешь гигантский труд и заставляешь компьютер лишний раз побольше подумать
1
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
05.08.2014, 14:57
Цитата Сообщение от Samrisbe Посмотреть сообщение
Натолкните на правильную мысль
Почитать что-нибудь по проектированию баз данных.

В частности зачем нужны первичные ключи

http://www.site-do.ru/db/db3.php

И что такое нормализация.

http://club.shelek.ru/viewart.php?id=311
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
05.08.2014, 15:25  [ТС]
Так задал чтоб смотрела на промежуток Даты:
C++
1
ADOQuery2->SQL->Text = "DELETE * FROM История WHERE КодАбон="+abon+" AND Операция='"+ComboBox1->Items->Strings[ComboBox1->ItemIndex] +"' AND Дата=DateSerial(Year('"+Edit3->Text+"'),Month('"+Edit3->Text+"'),Day('"+Edit3->Text+"')) ";
может лучше точную дату искать?
Попробую теперь сумму прикрутить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.08.2014, 15:25
Помогаю со студенческими работами здесь

Картинки в DBGrid. Для чего свойство DBGrid1.TitleImageList?
Для размещения картинок в ячейках DBGrid использую метод DBGrid1DrawColumnCell: procedure TForm3.DBGrid1DrawColumnCell(Sender: TObject;...

Сумма DBGrid1.Columns[1]+DBGrid1.Columns[2]+.+DBGrid1.Columns[n] в DBGrid1.Columns[16]
Как присвоить DBGrid1.Columns сумму DBGrid1.Columns+DBGrid1.Columns+...+DBGrid1.Columns

Изменить свойство SourceTableName - ?
Еще раз добрый день. Есть прилинкованная таблица Excel. У нее соответственно есть свойство SourceTableName, в котором записано имя листа...

Изменить свойство компонента
Создал проект, кинул TextBox на форму, пишу в функции main его имя - подсвечивается красным, вроде его нет. Почему?

Изменить Свойство Ole Object
Добрый день. Ткните носом кто-нибудь плз., как программно поменять свойство Display As вставленного в Rich Text поля OLE Object-а типа...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь 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. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru